ertkit 0.1.0__py3-none-any.whl

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.
@@ -0,0 +1,156 @@
1
+ Metadata-Version: 2.5
2
+ Name: ertkit
3
+ Version: 0.1.0
4
+ Summary: Resistivity inversion for groundwater exploration (VES now, 2.5-D ERT planned), with uncertainty and depth of investigation.
5
+ Project-URL: Documentation, https://abdgafartunde.github.io/ertkit/
6
+ Project-URL: Source, https://github.com/abdgafartunde/ertkit
7
+ Project-URL: Issues, https://github.com/abdgafartunde/ertkit/issues
8
+ Project-URL: Changelog, https://github.com/abdgafartunde/ertkit/blob/main/CHANGELOG.md
9
+ Author: Abd'gafar Tunde Tiamiyu
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Keywords: electrical resistivity tomography,geophysics,groundwater,inverse problems,uncertainty quantification,vertical electrical sounding
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Education
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: Operating System :: OS Independent
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3 :: Only
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Programming Language :: Python :: 3.15
23
+ Classifier: Topic :: Scientific/Engineering :: Hydrology
24
+ Classifier: Topic :: Scientific/Engineering :: Physics
25
+ Classifier: Typing :: Typed
26
+ Requires-Python: >=3.12
27
+ Requires-Dist: libdlf>=0.3
28
+ Requires-Dist: numpy>=2.0
29
+ Requires-Dist: scipy>=1.16
30
+ Provides-Extra: plot
31
+ Requires-Dist: matplotlib>=3.10; extra == 'plot'
32
+ Description-Content-Type: text/markdown
33
+
34
+ # ertkit
35
+
36
+ [![PyPI](https://img.shields.io/pypi/v/ertkit.svg)](https://pypi.org/project/ertkit/)
37
+ [![CI](https://github.com/abdgafartunde/ertkit/actions/workflows/ci.yml/badge.svg)](https://github.com/abdgafartunde/ertkit/actions/workflows/ci.yml)
38
+ [![Docs](https://github.com/abdgafartunde/ertkit/actions/workflows/docs.yml/badge.svg)](https://abdgafartunde.github.io/ertkit/)
39
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://github.com/abdgafartunde/ertkit/blob/main/LICENSE)
40
+
41
+ **Resistivity imaging for groundwater exploration, with an honest account of
42
+ what the data can resolve.**
43
+
44
+ ertkit is a Python package for inverting vertical electrical sounding (VES)
45
+ data, with 2.5-D electrical resistivity tomography (ERT) to follow. Each
46
+ result comes with what is needed to judge it:
47
+
48
+ - a data error model, and a fit to the noise level rather than to every digit
49
+ of the data;
50
+ - sensitivity and depth of investigation, so that unresolved parts of a model
51
+ are marked as such;
52
+ - parameter uncertainty, with the range of equivalent models that fit the data
53
+ equally well planned for release 0.2.
54
+
55
+ ## Why another resistivity code?
56
+
57
+ Boreholes are often sited from resistivity models whose reliability was never
58
+ quantified. Open tools such as [pyGIMLi](https://www.pygimli.org),
59
+ [SimPEG](https://simpeg.xyz) and [ResIPy](https://gitlab.com/hkex/resipy)
60
+ already provide excellent modeling and inversion. ertkit focuses on three
61
+ things: making reliability the default output, publishing a verification
62
+ report with every release, and keeping the code small enough to teach from.
63
+ The [design document](https://abdgafartunde.github.io/ertkit/dev/design.html)
64
+ gives the full statement of need, the mathematics and the verification plan.
65
+
66
+ ## Installation
67
+
68
+ ```bash
69
+ pip install ertkit # Python 3.12 or later
70
+ pip install "ertkit[plot]" # with plotting (matplotlib)
71
+ ```
72
+
73
+ ## Quick start
74
+
75
+ ```python
76
+ import numpy as np
77
+ import ertkit
78
+ from ertkit import ves
79
+
80
+ truth = ves.LayeredModel(resistivity=[150.0, 30.0, 800.0], thickness=[2.0, 15.0])
81
+ survey = ves.Survey.schlumberger(ab2=np.geomspace(2.5, 200.0, 22), mn2=0.5)
82
+ data = ves.Sounding.synthetic(truth, survey, ertkit.ErrorModel(relative=0.03), rng=5)
83
+ # Field data: data = ves.read_csv("sounding.csv")
84
+
85
+ fit = ves.invert_few_layer(data, n_layers=3, rng=0)
86
+ print(fit.summary()) # layers with uncertainty factors (x/), depths +- sd, fit
87
+
88
+ smooth = ves.invert_smooth(data)
89
+ print(f"depth of investigation: {smooth.doi:.0f} m")
90
+ ```
91
+
92
+ The first `print` shows:
93
+
94
+ ```text
95
+ LayerFit: chi2 = 16.1 for 22 data (target 17, ratio 0.947)
96
+ converged: True (`ftol` termination condition is satisfied.)
97
+
98
+ layer resistivity (ohm m) thickness (m) depth (m)
99
+ 1 144.6 x/ 1.04 2.04 x/ 1.04 2.04 +- 0.075
100
+ 2 30.18 x/ 1.03 15.2 x/ 1.05 17.3 +- 0.69
101
+ 3 787.9 x/ 1.12 half-space
102
+ p-value: 0.517
103
+ ```
104
+
105
+ Here `x/ 1.04` means "multiplied or divided by 1.04" (one standard
106
+ deviation).
107
+
108
+ ## Status
109
+
110
+ Release 0.1 covers vertical electrical sounding: a layered-earth forward
111
+ model, few-layer inversion with linearized uncertainty, smooth inversion with
112
+ sensitivity and a depth of investigation, CSV input and plotting. Planned
113
+ releases:
114
+
115
+ | Release | Content |
116
+ |---|---|
117
+ | 0.1 | VES: layered-earth forward model, few-layer and smooth inversion, linearized uncertainty, sensitivity and depth of investigation |
118
+ | 0.2 | VES equivalence analysis |
119
+ | 0.3 | 2.5-D ERT forward modeling |
120
+ | 0.4 | ERT inversion with an error model and cumulative sensitivity |
121
+ | 0.5 | ERT depth of investigation and uncertainty maps |
122
+ | 0.6 | Field data formats and an end-to-end field example |
123
+ | 1.0 | Stable public API |
124
+
125
+ ## Documentation
126
+
127
+ The documentation at <https://abdgafartunde.github.io/ertkit/> has the user
128
+ guide, worked examples, the API reference and the
129
+ [verification report](https://abdgafartunde.github.io/ertkit/verification.html),
130
+ generated by the test suite for each release.
131
+
132
+ ## Contributing
133
+
134
+ Bug reports, questions and suggestions are welcome on the
135
+ [issue tracker](https://github.com/abdgafartunde/ertkit/issues). To work on
136
+ the code, install [uv](https://docs.astral.sh/uv/) and run:
137
+
138
+ ```bash
139
+ git clone https://github.com/abdgafartunde/ertkit.git
140
+ cd ertkit
141
+ uv sync
142
+ uv run pytest
143
+ ```
144
+
145
+ See the [contributing guide](https://github.com/abdgafartunde/ertkit/blob/main/CONTRIBUTING.md)
146
+ and the [Code of Conduct](https://github.com/abdgafartunde/ertkit/blob/main/CODE_OF_CONDUCT.md).
147
+
148
+ ## Citing
149
+
150
+ Each release is archived on Zenodo with a DOI. Citation metadata are in
151
+ [CITATION.cff](https://github.com/abdgafartunde/ertkit/blob/main/CITATION.cff);
152
+ please also cite the methods ertkit implements.
153
+
154
+ ## License
155
+
156
+ MIT; see [LICENSE](https://github.com/abdgafartunde/ertkit/blob/main/LICENSE).
@@ -0,0 +1,23 @@
1
+ ertkit/__init__.py,sha256=24BcAFlSBQe5PReYXRTCjxvKzk7JkfwevWuEJ_9pGDo,605
2
+ ertkit/_linalg.py,sha256=imXe78-oY0zTIVb60WvK_tvWOCaeVhoXhcUkgciakWo,1061
3
+ ertkit/_show_versions.py,sha256=k-JASR6uL4bMqCUkacKLzS1WtMwiDsbZuc5qiSmImqM,1318
4
+ ertkit/_version.py,sha256=n_5vdJsPNu7wZ57LGuRL585uvll-hiuvZUBWzdG0RQU,520
5
+ ertkit/_warnings.py,sha256=0M-SA1CIzqoUl0DV4VeXpw6x41fd71pZVV_f2RPGZPA,545
6
+ ertkit/arrays.py,sha256=oEA1I3TKItrMTkjS6p8krJCIFlMUMq-vUzj6Cazyhi0,2357
7
+ ertkit/noise.py,sha256=on8ucclEUmlxo59wCl3OjnhzLENu9zQjzC-jcqgrhQY,4441
8
+ ertkit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ ertkit/results.py,sha256=3tIhCTmZX4gup8Z7c2_zRBXWY4bUG1L40bBuGOoQYx4,2711
10
+ ertkit/plot/__init__.py,sha256=_w6Qwc1DrxCi2k3RF-hFe0CIVcx-1ntM9VtbLM3VYi4,508
11
+ ertkit/plot/_ves.py,sha256=aTGys998ayRQrCHBGxam1n8sek-4fsjEMFi7P3pDlcs,8527
12
+ ertkit/ves/__init__.py,sha256=Ax9v7iYmvZ0VEQUCXq1zofK0C6L2ov3pfyUiTlZ59wY,765
13
+ ertkit/ves/data.py,sha256=TjJPslyg1twukNNSkai650khSZt7GAux-GCIhfnnXdQ,5876
14
+ ertkit/ves/forward.py,sha256=OiNhEoQJ171Gkn6PWMxsFQFoRNEuIKkycLQ-JpzwB0w,7850
15
+ ertkit/ves/invert.py,sha256=kzTOWH3CLdkmPqkuAB_pmQIKoAV0KtXKHWcrwvZJS_A,25227
16
+ ertkit/ves/io.py,sha256=koQbW8AXGp77exm6P8JHm8jPm-6bAc5vj1-V5rsUq78,6363
17
+ ertkit/ves/model.py,sha256=R0x16Jes7K_qTpGtxxNKkOH6AM_N0XXC39pHO-Mye80,2849
18
+ ertkit/ves/smooth.py,sha256=uDXiEffajpRrn_YTMrsN_mI8k4NYa26rjhhUlgaU46I,20956
19
+ ertkit/ves/survey.py,sha256=nirRh4ZSjDfCl7zR1n5DhCJON7T-ZoZxyI1_VNDqpPw,3665
20
+ ertkit-0.1.0.dist-info/METADATA,sha256=9RgibzfCLBW6PpM9dTHtSLubGV4-XdK5cn6uzT9OSvw,6319
21
+ ertkit-0.1.0.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
22
+ ertkit-0.1.0.dist-info/licenses/LICENSE,sha256=ZFbYpQSovfdOWPflAmSg5UBBcTsBd-egkyYf0lUr7-Q,1080
23
+ ertkit-0.1.0.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.32.4
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Abd'gafar Tunde Tiamiyu
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.