blowing-bubbles 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- blowing_bubbles-0.2.0/LICENSE +21 -0
- blowing_bubbles-0.2.0/PKG-INFO +108 -0
- blowing_bubbles-0.2.0/README.md +79 -0
- blowing_bubbles-0.2.0/pyproject.toml +103 -0
- blowing_bubbles-0.2.0/pyproject.toml.orig +93 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/__init__.py +19 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/circuit_impedance/__init__.py +15 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/circuit_impedance/impedance.py +288 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/classes/__init__.py +25 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/classes/circuit_classes.py +999 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/classes/data_classes.py +1036 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/py.typed +0 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/scripts/__init__.py +18 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/scripts/fit_circuit.py +601 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/scripts/global_minimize.py +1393 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/scripts/quality.py +224 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/__init__.py +26 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/__main__.py +13 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/analysis.py +250 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/analysis_plots.py +127 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/app.py +613 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/assets/icon-128.png +0 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/assets/icon-16.png +0 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/assets/icon-256.png +0 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/assets/icon-32.png +0 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/assets/icon-48.png +0 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/assets/icon-512.png +0 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/assets/icon-64.png +0 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/assets/icon.png +0 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/assets/icon.svg +6 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/batch.py +250 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/desktop.py +219 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/folder_picker.py +73 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/live.py +129 -0
- blowing_bubbles-0.2.0/src/blowing_bubbles/ui/plots.py +159 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Oliver Mohr
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: blowing-bubbles
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Equivalent-circuit fitting of electrochemical impedance spectra (EIS).
|
|
5
|
+
Keywords: electrochemistry,impedance spectroscopy,EIS,equivalent circuit,CPE,fitting
|
|
6
|
+
Author: Oliver Mohr
|
|
7
|
+
Author-email: Oliver Mohr <oliver@mohr.dk>
|
|
8
|
+
License-Expression: MIT
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Topic :: Scientific/Engineering :: Chemistry
|
|
17
|
+
Requires-Dist: matplotlib>=3.4
|
|
18
|
+
Requires-Dist: numpy>=1.20
|
|
19
|
+
Requires-Dist: pandas>=1.3
|
|
20
|
+
Requires-Dist: scipy>=1.7
|
|
21
|
+
Requires-Dist: streamlit>=1.66.1
|
|
22
|
+
Requires-Dist: tool>=0.8.0
|
|
23
|
+
Requires-Python: >=3.13
|
|
24
|
+
Project-URL: Repository, https://github.com/LePies/BlowingBubbles
|
|
25
|
+
Project-URL: Issues, https://github.com/LePies/BlowingBubbles/issues
|
|
26
|
+
Project-URL: Changelog, https://github.com/LePies/BlowingBubbles/blob/main/CHANGELOG.md
|
|
27
|
+
Project-URL: Documentation, https://github.com/LePies/BlowingBubbles/tree/main/docs
|
|
28
|
+
Description-Content-Type: text/markdown
|
|
29
|
+
|
|
30
|
+
<p align="center">
|
|
31
|
+
<img src="src/blowing_bubbles/ui/assets/icon.svg" width="140" alt="BlowingBubbles icon">
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
# BlowingBubbles
|
|
35
|
+
|
|
36
|
+
<p align="center">
|
|
37
|
+
<img src="https://img.shields.io/badge/python-3.14%2B-blue" alt="Python 3.14+">
|
|
38
|
+
<img src="https://img.shields.io/badge/license-MIT-green" alt="License: MIT">
|
|
39
|
+
<img src="https://img.shields.io/badge/docs-no_finished_builds-red" alt="Docs: no finished builds">
|
|
40
|
+
</p>
|
|
41
|
+
|
|
42
|
+
Python tools for electrochemical impedance spectroscopy (EIS): load spectra, evaluate
|
|
43
|
+
the R–CPE equivalent circuit, and fit branch parameters.
|
|
44
|
+
|
|
45
|
+
## Installation
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
pip install blowing-bubbles
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## License
|
|
52
|
+
|
|
53
|
+
Released under the [MIT License](LICENSE): free use, modification, and redistribution.
|
|
54
|
+
|
|
55
|
+
## Contributing
|
|
56
|
+
|
|
57
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the development setup (uv, ruff, ty,
|
|
58
|
+
deptry, pytest). To report a security issue, see [SECURITY.md](SECURITY.md).
|
|
59
|
+
|
|
60
|
+
## Citation (published scientific work)
|
|
61
|
+
|
|
62
|
+
If you use BlowingBubbles in **published** scientific work (papers, theses, preprints,
|
|
63
|
+
citable reports), please cite the entry in [`CITATION.bib`](CITATION.bib) or
|
|
64
|
+
[`CITATION.cff`](CITATION.cff). Private or internal use does not require a citation.
|
|
65
|
+
See [`ACADEMIC_CITATION.md`](ACADEMIC_CITATION.md).
|
|
66
|
+
|
|
67
|
+
## Interactive UI
|
|
68
|
+
|
|
69
|
+
An optional Streamlit UI (single-spectrum fitting, batch folder fitting, and a
|
|
70
|
+
live-tune mode) is included. Install the extra group and launch it:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
uv sync --group ui
|
|
74
|
+
streamlit run src/blowing_bubbles/ui/app.py # or: python -m blowing_bubbles.ui
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Windows desktop app
|
|
78
|
+
|
|
79
|
+
The same UI can be packaged as a standalone desktop app (native window via
|
|
80
|
+
Edge WebView2, no browser chrome):
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
uv sync --group desktop
|
|
84
|
+
uv run pyinstaller desktop.spec --clean
|
|
85
|
+
# produces dist/BlowingBubbles/ with the launcher BlowingBubbles.exe inside
|
|
86
|
+
# (onedir build: starts much faster than onefile; ship the whole folder)
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
The exe needs the WebView2 runtime on the target machine (preinstalled on
|
|
90
|
+
Windows 11; a bootstrapper is available for Windows 10).
|
|
91
|
+
|
|
92
|
+
## Documentation
|
|
93
|
+
|
|
94
|
+
The documentation is built with [Sphinx](https://www.sphinx-doc.org/). The
|
|
95
|
+
Sphinx dependencies are in the `docs` dependency group, which `uv sync`
|
|
96
|
+
installs by default. From the project root:
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
uv sync
|
|
100
|
+
uv run sphinx-build -W -b html docs/source docs/build/html
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Then open `docs/build/html/index.html` in a browser.
|
|
104
|
+
|
|
105
|
+
The build also runs the scripts in `examples/` to generate the example gallery.
|
|
106
|
+
That takes a few minutes the first time; after that, only changed examples are
|
|
107
|
+
re-run. To re-read all source files, add `-E`; to start completely fresh, delete
|
|
108
|
+
`docs/build/`. See `docs/source/getting_started.rst` for more details.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="src/blowing_bubbles/ui/assets/icon.svg" width="140" alt="BlowingBubbles icon">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
# BlowingBubbles
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<img src="https://img.shields.io/badge/python-3.14%2B-blue" alt="Python 3.14+">
|
|
9
|
+
<img src="https://img.shields.io/badge/license-MIT-green" alt="License: MIT">
|
|
10
|
+
<img src="https://img.shields.io/badge/docs-no_finished_builds-red" alt="Docs: no finished builds">
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
Python tools for electrochemical impedance spectroscopy (EIS): load spectra, evaluate
|
|
14
|
+
the R–CPE equivalent circuit, and fit branch parameters.
|
|
15
|
+
|
|
16
|
+
## Installation
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
pip install blowing-bubbles
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## License
|
|
23
|
+
|
|
24
|
+
Released under the [MIT License](LICENSE): free use, modification, and redistribution.
|
|
25
|
+
|
|
26
|
+
## Contributing
|
|
27
|
+
|
|
28
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for the development setup (uv, ruff, ty,
|
|
29
|
+
deptry, pytest). To report a security issue, see [SECURITY.md](SECURITY.md).
|
|
30
|
+
|
|
31
|
+
## Citation (published scientific work)
|
|
32
|
+
|
|
33
|
+
If you use BlowingBubbles in **published** scientific work (papers, theses, preprints,
|
|
34
|
+
citable reports), please cite the entry in [`CITATION.bib`](CITATION.bib) or
|
|
35
|
+
[`CITATION.cff`](CITATION.cff). Private or internal use does not require a citation.
|
|
36
|
+
See [`ACADEMIC_CITATION.md`](ACADEMIC_CITATION.md).
|
|
37
|
+
|
|
38
|
+
## Interactive UI
|
|
39
|
+
|
|
40
|
+
An optional Streamlit UI (single-spectrum fitting, batch folder fitting, and a
|
|
41
|
+
live-tune mode) is included. Install the extra group and launch it:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
uv sync --group ui
|
|
45
|
+
streamlit run src/blowing_bubbles/ui/app.py # or: python -m blowing_bubbles.ui
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### Windows desktop app
|
|
49
|
+
|
|
50
|
+
The same UI can be packaged as a standalone desktop app (native window via
|
|
51
|
+
Edge WebView2, no browser chrome):
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
uv sync --group desktop
|
|
55
|
+
uv run pyinstaller desktop.spec --clean
|
|
56
|
+
# produces dist/BlowingBubbles/ with the launcher BlowingBubbles.exe inside
|
|
57
|
+
# (onedir build: starts much faster than onefile; ship the whole folder)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
The exe needs the WebView2 runtime on the target machine (preinstalled on
|
|
61
|
+
Windows 11; a bootstrapper is available for Windows 10).
|
|
62
|
+
|
|
63
|
+
## Documentation
|
|
64
|
+
|
|
65
|
+
The documentation is built with [Sphinx](https://www.sphinx-doc.org/). The
|
|
66
|
+
Sphinx dependencies are in the `docs` dependency group, which `uv sync`
|
|
67
|
+
installs by default. From the project root:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
uv sync
|
|
71
|
+
uv run sphinx-build -W -b html docs/source docs/build/html
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Then open `docs/build/html/index.html` in a browser.
|
|
75
|
+
|
|
76
|
+
The build also runs the scripts in `examples/` to generate the example gallery.
|
|
77
|
+
That takes a few minutes the first time; after that, only changed examples are
|
|
78
|
+
re-run. To re-read all source files, add `-E`; to start completely fresh, delete
|
|
79
|
+
`docs/build/`. See `docs/source/getting_started.rst` for more details.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "blowing-bubbles"
|
|
3
|
+
version = "0.2.0"
|
|
4
|
+
description = "Equivalent-circuit fitting of electrochemical impedance spectra (EIS)."
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
license = "MIT"
|
|
7
|
+
license-files = ["LICENSE"]
|
|
8
|
+
requires-python = ">=3.13"
|
|
9
|
+
keywords = [
|
|
10
|
+
"electrochemistry",
|
|
11
|
+
"impedance spectroscopy",
|
|
12
|
+
"EIS",
|
|
13
|
+
"equivalent circuit",
|
|
14
|
+
"CPE",
|
|
15
|
+
"fitting",
|
|
16
|
+
]
|
|
17
|
+
classifiers = [
|
|
18
|
+
"Development Status :: 4 - Beta",
|
|
19
|
+
"Intended Audience :: Science/Research",
|
|
20
|
+
"License :: OSI Approved :: MIT License",
|
|
21
|
+
"Operating System :: OS Independent",
|
|
22
|
+
"Programming Language :: Python :: 3",
|
|
23
|
+
"Programming Language :: Python :: 3.13",
|
|
24
|
+
"Topic :: Scientific/Engineering :: Chemistry",
|
|
25
|
+
]
|
|
26
|
+
dependencies = [
|
|
27
|
+
"matplotlib>=3.4",
|
|
28
|
+
"numpy>=1.20",
|
|
29
|
+
"pandas>=1.3",
|
|
30
|
+
"scipy>=1.7",
|
|
31
|
+
"streamlit>=1.66.1",
|
|
32
|
+
"tool>=0.8.0",
|
|
33
|
+
]
|
|
34
|
+
|
|
35
|
+
[[project.authors]]
|
|
36
|
+
name = "Oliver Mohr"
|
|
37
|
+
email = "oliver@mohr.dk"
|
|
38
|
+
|
|
39
|
+
[project.urls]
|
|
40
|
+
Repository = "https://github.com/LePies/BlowingBubbles"
|
|
41
|
+
Issues = "https://github.com/LePies/BlowingBubbles/issues"
|
|
42
|
+
Changelog = "https://github.com/LePies/BlowingBubbles/blob/main/CHANGELOG.md"
|
|
43
|
+
Documentation = "https://github.com/LePies/BlowingBubbles/tree/main/docs"
|
|
44
|
+
|
|
45
|
+
[build-system]
|
|
46
|
+
requires = ["uv_build>=0.11.16,<0.14.0"]
|
|
47
|
+
build-backend = "uv_build"
|
|
48
|
+
|
|
49
|
+
[dependency-groups]
|
|
50
|
+
dev = [
|
|
51
|
+
"deptry>=0.20",
|
|
52
|
+
"pytest>=9.2.0",
|
|
53
|
+
"pytest-cov>=7.0.0",
|
|
54
|
+
"ruff>=0.15.14",
|
|
55
|
+
"ty>=0.0.38",
|
|
56
|
+
]
|
|
57
|
+
ui = ["streamlit>=1.40"]
|
|
58
|
+
desktop = [
|
|
59
|
+
"streamlit>=1.40",
|
|
60
|
+
"pywebview>=5.0",
|
|
61
|
+
"pyinstaller>=6.0",
|
|
62
|
+
]
|
|
63
|
+
docs = [
|
|
64
|
+
"furo>=2025.12.19",
|
|
65
|
+
"myst-nb>=1.4.0",
|
|
66
|
+
"myst-parser>=5.1.0",
|
|
67
|
+
"sphinx>=9.0.4",
|
|
68
|
+
"sphinx-autoapi>=3.8.1",
|
|
69
|
+
"sphinx-gallery>=0.16",
|
|
70
|
+
"sphinxcontrib-bibtex>=2.7.0",
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
[tool.uv]
|
|
74
|
+
default-groups = [
|
|
75
|
+
"dev",
|
|
76
|
+
"docs",
|
|
77
|
+
]
|
|
78
|
+
|
|
79
|
+
[tool.pytest.ini_options]
|
|
80
|
+
pythonpath = ["src"]
|
|
81
|
+
testpaths = ["src/tests"]
|
|
82
|
+
|
|
83
|
+
[tool.coverage.run]
|
|
84
|
+
source = ["blowing_bubbles"]
|
|
85
|
+
omit = [
|
|
86
|
+
"src/blowing_bubbles/ui/*",
|
|
87
|
+
"src/tests/*",
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
[tool.coverage.report]
|
|
91
|
+
show_missing = true
|
|
92
|
+
skip_covered = true
|
|
93
|
+
|
|
94
|
+
[tool.deptry]
|
|
95
|
+
known_first_party = ["blowing_bubbles"]
|
|
96
|
+
extend_exclude = ["docs/"]
|
|
97
|
+
|
|
98
|
+
[tool.deptry.package_module_name_map]
|
|
99
|
+
pywebview = "webview"
|
|
100
|
+
|
|
101
|
+
[tool.deptry.ignore]
|
|
102
|
+
DEP002 = ["tool"]
|
|
103
|
+
DEP004 = ["pytest"]
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "blowing-bubbles"
|
|
3
|
+
version = "0.2.0"
|
|
4
|
+
description = "Equivalent-circuit fitting of electrochemical impedance spectra (EIS)."
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
authors = [
|
|
7
|
+
{ name = "Oliver Mohr", email = "oliver@mohr.dk" }
|
|
8
|
+
]
|
|
9
|
+
license = "MIT"
|
|
10
|
+
license-files = ["LICENSE"]
|
|
11
|
+
requires-python = ">=3.13"
|
|
12
|
+
keywords = [
|
|
13
|
+
"electrochemistry",
|
|
14
|
+
"impedance spectroscopy",
|
|
15
|
+
"EIS",
|
|
16
|
+
"equivalent circuit",
|
|
17
|
+
"CPE",
|
|
18
|
+
"fitting",
|
|
19
|
+
]
|
|
20
|
+
classifiers = [
|
|
21
|
+
"Development Status :: 4 - Beta",
|
|
22
|
+
"Intended Audience :: Science/Research",
|
|
23
|
+
"License :: OSI Approved :: MIT License",
|
|
24
|
+
"Operating System :: OS Independent",
|
|
25
|
+
"Programming Language :: Python :: 3",
|
|
26
|
+
"Programming Language :: Python :: 3.13",
|
|
27
|
+
"Topic :: Scientific/Engineering :: Chemistry",
|
|
28
|
+
]
|
|
29
|
+
dependencies = [
|
|
30
|
+
"matplotlib>=3.4",
|
|
31
|
+
"numpy>=1.20",
|
|
32
|
+
"pandas>=1.3",
|
|
33
|
+
"scipy>=1.7",
|
|
34
|
+
"streamlit>=1.66.1",
|
|
35
|
+
"tool>=0.8.0",
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
[project.urls]
|
|
39
|
+
Repository = "https://github.com/LePies/BlowingBubbles"
|
|
40
|
+
Issues = "https://github.com/LePies/BlowingBubbles/issues"
|
|
41
|
+
Changelog = "https://github.com/LePies/BlowingBubbles/blob/main/CHANGELOG.md"
|
|
42
|
+
Documentation = "https://github.com/LePies/BlowingBubbles/tree/main/docs"
|
|
43
|
+
|
|
44
|
+
[build-system]
|
|
45
|
+
requires = ["uv_build>=0.11.16,<0.14.0"]
|
|
46
|
+
build-backend = "uv_build"
|
|
47
|
+
|
|
48
|
+
[dependency-groups]
|
|
49
|
+
dev = [
|
|
50
|
+
"deptry>=0.20",
|
|
51
|
+
"pytest>=9.2.0",
|
|
52
|
+
"pytest-cov>=7.0.0",
|
|
53
|
+
"ruff>=0.15.14",
|
|
54
|
+
"ty>=0.0.38",
|
|
55
|
+
]
|
|
56
|
+
ui = [
|
|
57
|
+
"streamlit>=1.40",
|
|
58
|
+
]
|
|
59
|
+
desktop = [
|
|
60
|
+
"streamlit>=1.40",
|
|
61
|
+
"pywebview>=5.0",
|
|
62
|
+
"pyinstaller>=6.0",
|
|
63
|
+
]
|
|
64
|
+
docs = [
|
|
65
|
+
"furo>=2025.12.19",
|
|
66
|
+
"myst-nb>=1.4.0",
|
|
67
|
+
"myst-parser>=5.1.0",
|
|
68
|
+
"sphinx>=9.0.4",
|
|
69
|
+
"sphinx-autoapi>=3.8.1",
|
|
70
|
+
"sphinx-gallery>=0.16",
|
|
71
|
+
"sphinxcontrib-bibtex>=2.7.0",
|
|
72
|
+
]
|
|
73
|
+
|
|
74
|
+
[tool.uv]
|
|
75
|
+
default-groups = ["dev", "docs"]
|
|
76
|
+
|
|
77
|
+
[tool.pytest.ini_options]
|
|
78
|
+
pythonpath = ["src"]
|
|
79
|
+
testpaths = ["src/tests"]
|
|
80
|
+
|
|
81
|
+
[tool.coverage.run]
|
|
82
|
+
source = ["blowing_bubbles"]
|
|
83
|
+
omit = ["src/blowing_bubbles/ui/*", "src/tests/*"]
|
|
84
|
+
|
|
85
|
+
[tool.coverage.report]
|
|
86
|
+
show_missing = true
|
|
87
|
+
skip_covered = true
|
|
88
|
+
|
|
89
|
+
[tool.deptry]
|
|
90
|
+
known_first_party = ["blowing_bubbles"]
|
|
91
|
+
extend_exclude = ["docs/"]
|
|
92
|
+
package_module_name_map = { "pywebview" = "webview" }
|
|
93
|
+
ignore = { "DEP002" = ["tool"], "DEP004" = ["pytest"] }
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
r"""BlowingBubbles — equivalent-circuit fitting of electrochemical impedance spectra.
|
|
2
|
+
|
|
3
|
+
The main entry point is :class:`~blowing_bubbles.classes.EISData` (load, process
|
|
4
|
+
and fit a spectrum); fitted parameters are held in
|
|
5
|
+
:class:`~blowing_bubbles.classes.CircuitParameters` and
|
|
6
|
+
:class:`~blowing_bubbles.classes.FitResults`. Subpackages:
|
|
7
|
+
|
|
8
|
+
- :mod:`blowing_bubbles.classes` — data, parameter and fit-result containers;
|
|
9
|
+
- :mod:`blowing_bubbles.circuit_impedance` — impedance forward model and
|
|
10
|
+
analytic gradients;
|
|
11
|
+
- :mod:`blowing_bubbles.scripts` — fitting routines and fit-quality metrics.
|
|
12
|
+
|
|
13
|
+
Licensed under MIT (see ``LICENSE``). Cite ``CITATION.bib`` in published
|
|
14
|
+
scientific work; see ``ACADEMIC_CITATION.md``.
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
__version__ = "0.2.0"
|
|
18
|
+
|
|
19
|
+
__all__ = ["__version__", "circuit_impedance", "classes", "scripts"]
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
r"""Forward model and gradients for the BlowingBubbles R–CPE equivalent circuit.
|
|
2
|
+
|
|
3
|
+
Re-exports :func:`~blowing_bubbles.circuit_impedance.impedance.circuit_impedance`
|
|
4
|
+
(complex impedance of the circuit) and
|
|
5
|
+
:func:`~blowing_bubbles.circuit_impedance.impedance.circuit_impedance_parameter_gradient`
|
|
6
|
+
(analytic partial derivatives) from
|
|
7
|
+
:mod:`blowing_bubbles.circuit_impedance.impedance`.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from .impedance import circuit_impedance, circuit_impedance_parameter_gradient
|
|
11
|
+
|
|
12
|
+
__all__ = [
|
|
13
|
+
"circuit_impedance",
|
|
14
|
+
"circuit_impedance_parameter_gradient",
|
|
15
|
+
]
|