integrate-module 0.99.9__tar.gz → 1.0.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.
Files changed (151) hide show
  1. {integrate_module-0.99.9/integrate_module.egg-info → integrate_module-1.0.0}/PKG-INFO +17 -16
  2. {integrate_module-0.99.9 → integrate_module-1.0.0}/README.md +13 -10
  3. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/__init__.py +3 -0
  4. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/anemone_forward.py +508 -35
  5. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/em_system.py +50 -12
  6. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/gaaem_forward.py +26 -9
  7. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/integrate.py +209 -125
  8. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/integrate_borehole.py +15 -8
  9. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/integrate_io.py +223 -24
  10. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/integrate_plot.py +116 -66
  11. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/integrate_query.py +2 -5
  12. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/integrate_rejection.py +59 -40
  13. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/integrate_rejection_jax.py +13 -13
  14. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/integrate_timing_cli.py +17 -0
  15. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/simpeg_forward.py +78 -39
  16. integrate_module-1.0.0/integrate/sr2_gex.py +255 -0
  17. {integrate_module-0.99.9 → integrate_module-1.0.0/integrate_module.egg-info}/PKG-INFO +17 -16
  18. integrate_module-1.0.0/integrate_module.egg-info/SOURCES.txt +64 -0
  19. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate_module.egg-info/requires.txt +2 -6
  20. {integrate_module-0.99.9 → integrate_module-1.0.0}/pyproject.toml +13 -6
  21. integrate_module-0.99.9/frontend/static/figures/006b874a67148744.json +0 -1
  22. integrate_module-0.99.9/frontend/static/figures/01c54329eb934b92.png +0 -0
  23. integrate_module-0.99.9/frontend/static/figures/0454af65d7dea5f1.png +0 -0
  24. integrate_module-0.99.9/frontend/static/figures/061d5cecc1a2f677.png +0 -0
  25. integrate_module-0.99.9/frontend/static/figures/066bb5c9da4d0c0b.png +0 -0
  26. integrate_module-0.99.9/frontend/static/figures/0baffb84416e0aa5.png +0 -0
  27. integrate_module-0.99.9/frontend/static/figures/0bddf00c6308d581.png +0 -0
  28. integrate_module-0.99.9/frontend/static/figures/0d0c87a2b0317423.png +0 -0
  29. integrate_module-0.99.9/frontend/static/figures/0e020d8b85920d7e.png +0 -0
  30. integrate_module-0.99.9/frontend/static/figures/105023459d1a8567.png +0 -0
  31. integrate_module-0.99.9/frontend/static/figures/12846323d657202c.json +0 -1
  32. integrate_module-0.99.9/frontend/static/figures/12846323d657202c.png +0 -0
  33. integrate_module-0.99.9/frontend/static/figures/1a9964bb2736785c.png +0 -0
  34. integrate_module-0.99.9/frontend/static/figures/1acd3021d782ccc2.json +0 -1
  35. integrate_module-0.99.9/frontend/static/figures/1acd3021d782ccc2.png +0 -0
  36. integrate_module-0.99.9/frontend/static/figures/1c84cb9595fbcb9b.png +0 -0
  37. integrate_module-0.99.9/frontend/static/figures/1ec73b329d1e30c1-0.png +0 -0
  38. integrate_module-0.99.9/frontend/static/figures/29dc879298fdfa8a.png +0 -0
  39. integrate_module-0.99.9/frontend/static/figures/2b167d8b53dd646f.png +0 -0
  40. integrate_module-0.99.9/frontend/static/figures/2b764aca24a6fd44.json +0 -1
  41. integrate_module-0.99.9/frontend/static/figures/2d78ec085ac2bbef.png +0 -0
  42. integrate_module-0.99.9/frontend/static/figures/3bf8957c95d8dc58.png +0 -0
  43. integrate_module-0.99.9/frontend/static/figures/3f50930542de8196.png +0 -0
  44. integrate_module-0.99.9/frontend/static/figures/41ef6a32da0ec924.png +0 -0
  45. integrate_module-0.99.9/frontend/static/figures/426adc78c42b1a27.png +0 -0
  46. integrate_module-0.99.9/frontend/static/figures/427dd675638f594d.json +0 -1
  47. integrate_module-0.99.9/frontend/static/figures/427dd675638f594d.png +0 -0
  48. integrate_module-0.99.9/frontend/static/figures/487ff0ef8da5a2ec.png +0 -0
  49. integrate_module-0.99.9/frontend/static/figures/4dc6542b7b0f149f.png +0 -0
  50. integrate_module-0.99.9/frontend/static/figures/4ec72f25a8ec038c.png +0 -0
  51. integrate_module-0.99.9/frontend/static/figures/4feb7f1a8281a0bd.png +0 -0
  52. integrate_module-0.99.9/frontend/static/figures/525d39d8ea618a41.png +0 -0
  53. integrate_module-0.99.9/frontend/static/figures/53da1cb8aa8a6cb1.png +0 -0
  54. integrate_module-0.99.9/frontend/static/figures/55d5162d81b64a36.png +0 -0
  55. integrate_module-0.99.9/frontend/static/figures/588f962e19adecff.png +0 -0
  56. integrate_module-0.99.9/frontend/static/figures/5a5b4b0457603714.png +0 -0
  57. integrate_module-0.99.9/frontend/static/figures/5d84b1ae75e96c16.png +0 -0
  58. integrate_module-0.99.9/frontend/static/figures/5fdc8164998fe564.png +0 -0
  59. integrate_module-0.99.9/frontend/static/figures/64cdac3bedd0cecd.png +0 -0
  60. integrate_module-0.99.9/frontend/static/figures/65cf5a549f2f1b33.png +0 -0
  61. integrate_module-0.99.9/frontend/static/figures/689bb914194a8d64.png +0 -0
  62. integrate_module-0.99.9/frontend/static/figures/68bdea6008a16e42.png +0 -0
  63. integrate_module-0.99.9/frontend/static/figures/6a7883226a8a477d.png +0 -0
  64. integrate_module-0.99.9/frontend/static/figures/6c85602ebffb533e.json +0 -1
  65. integrate_module-0.99.9/frontend/static/figures/6c85602ebffb533e.png +0 -0
  66. integrate_module-0.99.9/frontend/static/figures/75c488b1f85e3369.png +0 -0
  67. integrate_module-0.99.9/frontend/static/figures/78a160053c2cac33.png +0 -0
  68. integrate_module-0.99.9/frontend/static/figures/79d91b91323697cd.png +0 -0
  69. integrate_module-0.99.9/frontend/static/figures/7a64c69b35eaf912.png +0 -0
  70. integrate_module-0.99.9/frontend/static/figures/7bb22ced65184b59.png +0 -0
  71. integrate_module-0.99.9/frontend/static/figures/7e7213e8f8247031.png +0 -0
  72. integrate_module-0.99.9/frontend/static/figures/7fd95f0d2c9595c9.png +0 -0
  73. integrate_module-0.99.9/frontend/static/figures/994f10f602985978.png +0 -0
  74. integrate_module-0.99.9/frontend/static/figures/9a6b1d1f0a7ffd11.png +0 -0
  75. integrate_module-0.99.9/frontend/static/figures/9a8729c07d09bd5a.png +0 -0
  76. integrate_module-0.99.9/frontend/static/figures/9ddc30d24404a155-0.png +0 -0
  77. integrate_module-0.99.9/frontend/static/figures/a6f07ace7e42da09.png +0 -0
  78. integrate_module-0.99.9/frontend/static/figures/ab655c40d7fffc4f.png +0 -0
  79. integrate_module-0.99.9/frontend/static/figures/b12e125404b2aea1.png +0 -0
  80. integrate_module-0.99.9/frontend/static/figures/b2f3a4ce9f535f45.png +0 -0
  81. integrate_module-0.99.9/frontend/static/figures/b605415c314c6cef.png +0 -0
  82. integrate_module-0.99.9/frontend/static/figures/b7d8d18a140c0073.png +0 -0
  83. integrate_module-0.99.9/frontend/static/figures/b829df1a78718dd6.png +0 -0
  84. integrate_module-0.99.9/frontend/static/figures/b8dbb12675172fda.png +0 -0
  85. integrate_module-0.99.9/frontend/static/figures/b99e09ec69df4967.png +0 -0
  86. integrate_module-0.99.9/frontend/static/figures/be438f0ac7f59a5c.png +0 -0
  87. integrate_module-0.99.9/frontend/static/figures/c9030d3cf5e7b94c.png +0 -0
  88. integrate_module-0.99.9/frontend/static/figures/d20e6de716ab4454.png +0 -0
  89. integrate_module-0.99.9/frontend/static/figures/d2295c0eaa723af8.png +0 -0
  90. integrate_module-0.99.9/frontend/static/figures/d5925defec62f763.png +0 -0
  91. integrate_module-0.99.9/frontend/static/figures/d7daade6e2618161.png +0 -0
  92. integrate_module-0.99.9/frontend/static/figures/e029eb6cb62868dd.png +0 -0
  93. integrate_module-0.99.9/frontend/static/figures/e4000e24e61bcefc.png +0 -0
  94. integrate_module-0.99.9/frontend/static/figures/e58009ee8354d189.png +0 -0
  95. integrate_module-0.99.9/frontend/static/figures/e5b501e77c7db114.png +0 -0
  96. integrate_module-0.99.9/frontend/static/figures/e8b65132706e5437.png +0 -0
  97. integrate_module-0.99.9/frontend/static/figures/f015d3f025e93a71.png +0 -0
  98. integrate_module-0.99.9/frontend/static/figures/f3cf99660141b008.png +0 -0
  99. integrate_module-0.99.9/frontend/static/figures/f4a3311840de58e2-0.png +0 -0
  100. integrate_module-0.99.9/frontend/static/figures/f5a08d8db05edb9c.png +0 -0
  101. integrate_module-0.99.9/frontend/static/figures/f8907379e981be33-0.png +0 -0
  102. integrate_module-0.99.9/frontend/static/figures/fb3b9efeef379e15.png +0 -0
  103. integrate_module-0.99.9/integrate_module.egg-info/SOURCES.txt +0 -147
  104. integrate_module-0.99.9/tests/test_likelihood_nan.py +0 -46
  105. integrate_module-0.99.9/tests/test_simpeg_forward.py +0 -362
  106. {integrate_module-0.99.9 → integrate_module-1.0.0}/LICENSE +0 -0
  107. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/__init__.py +0 -0
  108. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/__main__.py +0 -0
  109. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/app.py +0 -0
  110. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/components.py +0 -0
  111. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/config.py +0 -0
  112. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/__init__.py +0 -0
  113. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/_forms.py +0 -0
  114. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/_jobs_ui.py +0 -0
  115. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/borehole.py +0 -0
  116. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/files.py +0 -0
  117. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/forward.py +0 -0
  118. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/geoprior.py +0 -0
  119. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/inversion.py +0 -0
  120. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/plotting.py +0 -0
  121. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/prior.py +0 -0
  122. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/profile.py +0 -0
  123. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/query.py +0 -0
  124. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/results.py +0 -0
  125. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/stubs.py +0 -0
  126. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/workflow.py +0 -0
  127. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/pages/workspace_ui.py +0 -0
  128. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/services/__init__.py +0 -0
  129. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/services/figures.py +0 -0
  130. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/services/files.py +0 -0
  131. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/services/integrate_api.py +0 -0
  132. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/services/jobs.py +0 -0
  133. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/services/session.py +0 -0
  134. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/services/worker.py +0 -0
  135. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/services/workspace.py +0 -0
  136. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/services/xlsx.py +0 -0
  137. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/static/app.css +0 -0
  138. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/static/fonts/archivo-latin-ext.woff2 +0 -0
  139. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/static/fonts/archivo-latin.woff2 +0 -0
  140. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/static/fonts/archivo-vietnamese.woff2 +0 -0
  141. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/static/htmx.min.js +0 -0
  142. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/static/modernist.css +0 -0
  143. {integrate_module-0.99.9 → integrate_module-1.0.0}/frontend/static/picker.js +0 -0
  144. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/gex.py +0 -0
  145. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/integrate_hdf5_info_cli.py +0 -0
  146. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/integrate_rejection_cli.py +0 -0
  147. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate/mlmapping.py +0 -0
  148. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate_module.egg-info/dependency_links.txt +0 -0
  149. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate_module.egg-info/entry_points.txt +0 -0
  150. {integrate_module-0.99.9 → integrate_module-1.0.0}/integrate_module.egg-info/top_level.txt +0 -0
  151. {integrate_module-0.99.9 → integrate_module-1.0.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: integrate_module
3
- Version: 0.99.9
3
+ Version: 1.0.0
4
4
  Summary: Localized probabilistic data integration
5
5
  Author-email: Thomas Mejer Hansen <tmeha@geo.au.dk>
6
6
  License: MIT
@@ -10,7 +10,7 @@ Project-URL: Repository, https://github.com/AUProbGeo/integrate_module
10
10
  Project-URL: Issues, https://github.com/AUProbGeo/integrate_module/issues
11
11
  Keywords: inversion,electromagnetic,geophysics,geology,prior,tarantola
12
12
  Classifier: Programming Language :: Python :: 3
13
- Requires-Python: >=3.10
13
+ Requires-Python: >=3.11
14
14
  Description-Content-Type: text/markdown
15
15
  License-File: LICENSE
16
16
  Requires-Dist: numpy
@@ -23,6 +23,7 @@ Requires-Dist: requests
23
23
  Requires-Dist: geoprior1d>=0.9
24
24
  Requires-Dist: shapely
25
25
  Requires-Dist: ga-aem-forward-win; platform_system == "Windows"
26
+ Requires-Dist: simpeg>=0.25
26
27
  Requires-Dist: jupyter>=1.0.0
27
28
  Requires-Dist: jupytext
28
29
  Requires-Dist: ipykernel
@@ -35,6 +36,7 @@ Requires-Dist: uvicorn[standard]
35
36
  Requires-Dist: python-fasthtml
36
37
  Requires-Dist: openpyxl
37
38
  Requires-Dist: httpx
39
+ Requires-Dist: threadpoolctl
38
40
  Provides-Extra: dev
39
41
  Requires-Dist: pytest; extra == "dev"
40
42
  Requires-Dist: black; extra == "dev"
@@ -48,12 +50,8 @@ Requires-Dist: shapely; extra == "examples"
48
50
  Provides-Extra: docs
49
51
  Requires-Dist: sphinx; extra == "docs"
50
52
  Requires-Dist: sphinx-gallery; extra == "docs"
51
- Requires-Dist: pandoc; extra == "docs"
52
- Requires-Dist: myst-parser; extra == "docs"
53
- Requires-Dist: sphinx-rtd-theme; extra == "docs"
54
53
  Requires-Dist: furo; extra == "docs"
55
54
  Requires-Dist: ghp-import; extra == "docs"
56
- Requires-Dist: tomli; python_version < "3.11" and extra == "docs"
57
55
  Provides-Extra: jax-cuda
58
56
  Requires-Dist: jax[cuda13]; extra == "jax-cuda"
59
57
  Dynamic: license-file
@@ -64,14 +62,15 @@ Dynamic: license-file
64
62
  [![PyPI](https://badge.fury.io/py/integrate-module.svg)](https://badge.fury.io/py/integrate-module)
65
63
  [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://auprobgeo.github.io/integrate_module/)
66
64
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
67
- [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
65
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
66
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/AUProbGeo/integrate_module/blob/main/examples/gallery/10_getting_started/integrate_getting_started.ipynb)
68
67
 
69
68
  This repository contains the INTEGRATE Python module for localized probabilistic data integration in geophysics.
70
69
 
71
70
 
72
71
  ## Installation
73
72
 
74
- Assuming you already have Python 3.10+ installed:
73
+ Assuming you already have Python 3.11+ installed:
75
74
 
76
75
  pip install integrate_module
77
76
 
@@ -89,7 +88,7 @@ On Linux/macOS, you will need to install GA-AEM manually.
89
88
 
90
89
  # Create virtual environment in .venv/ inside the module root
91
90
  cd path/to/integrate_module
92
- uv venv .venv --python 3.11
91
+ uv venv .venv --python 3.13
93
92
 
94
93
  # Activate
95
94
  source .venv/bin/activate # Linux/macOS
@@ -157,7 +156,7 @@ To also install the packages needed to build the Sphinx documentation, use the `
157
156
 
158
157
  Create a Conda environment (called integrate) and install the required modules:
159
158
 
160
- conda create --name integrate python=3.10 numpy pandas matplotlib scipy tqdm requests h5py psutil
159
+ conda create --name integrate python=3.13 numpy pandas matplotlib scipy tqdm requests h5py psutil
161
160
  conda activate integrate
162
161
  pip install integrate_module
163
162
 
@@ -166,7 +165,7 @@ Create a Conda environment (called integrate) and install the required modules:
166
165
 
167
166
  Create a Conda environment (called integrate) and install the required modules:
168
167
 
169
- conda create --name integrate python=3.10 numpy pandas matplotlib scipy tqdm requests h5py psutil
168
+ conda create --name integrate python=3.12 numpy pandas matplotlib scipy tqdm requests h5py psutil
170
169
  conda activate integrate
171
170
  pip install -e .
172
171
 
@@ -227,7 +226,7 @@ First install Homebrew, then run:
227
226
 
228
227
  ## Alternative EM forward backends (anemone, SimPEG)
229
228
 
230
- GA-AEM is the default TDEM forward modeller. Two pure-Python alternatives can be
229
+ GA-AEM is the default TDEM forward modeller. Two alternatives can be
231
230
  selected with `method=` in `ig.forward_em()` / `ig.prior_data_em()` (or via the
232
231
  `EM_FORWARD_METHOD` environment variable):
233
232
 
@@ -235,9 +234,11 @@ selected with `method=` in `ig.forward_em()` / `ig.prior_data_em()` (or via the
235
234
  ig.prior_data_em(f_prior_h5, file_gex=gex, method='anemone') # PyTorch, GPU-capable
236
235
  ig.prior_data_em(f_prior_h5, file_gex=gex, method='simpeg') # SimPEG 1D layered TDEM
237
236
 
238
- * **anemone** (`pip install "integrate[anemone]"`): see `ANEMONE_VS_GAAEM_VS_AI.md`.
239
- * **SimPEG** (`pip install "integrate[simpeg]"`, or `uv pip install -e ../simpeg` from a
240
- checkout): `ig.forward_simpeg()` / `ig.prior_data_simpeg()`. The `.gex` low-pass filters
237
+ * **anemone** (PyTorch, GPU-capable): not on PyPI yet. Install it from a local checkout
238
+ with `pip install -e path/to/anemone`, plus a `torch` build for your hardware. See the
239
+ install guide in `doc/install.rst`.
240
+ * **SimPEG**: installed with `integrate_module` (core dependency, `simpeg>=0.25`).
241
+ Use `ig.forward_simpeg()` / `ig.prior_data_simpeg()`. The `.gex` low-pass filters
241
242
  and gate integration are applied by INTEGRATE on top of SimPEG's
242
243
  `Simulation1DLayered`; agreement with GA-AEM is ~1 % (LM) / ~0.2 % (HM) on Daugaard tTEM,
243
244
  see `SIMPEG_VS_GAAEM.md`.
@@ -248,7 +249,7 @@ The `main` branch is the most stable, with less frequent updates but larger chan
248
249
 
249
250
  The `develop` branch contains the current development code and may be updated frequently. Some functions and examples may be broken.
250
251
 
251
- An extra set of tests and examples are located in the ``experimental`` sub-branch `https://github.com/cultpenguin/integrate_module_experimental/ <https://github.com/cultpenguin/integrate_module_experimental/>`_.
252
+ An extra set of tests and examples are located in the `experimental` submodule repository: https://github.com/cultpenguin/integrate_module_experimental/.
252
253
  Please ask the developers for access to this branch if needed. To clone the main repository with the experimental branch, use:
253
254
 
254
255
  git clone --recurse-submodules git@github.com:AUProbGeo/integrate_module.git
@@ -4,14 +4,15 @@
4
4
  [![PyPI](https://badge.fury.io/py/integrate-module.svg)](https://badge.fury.io/py/integrate-module)
5
5
  [![Documentation](https://img.shields.io/badge/docs-latest-blue.svg)](https://auprobgeo.github.io/integrate_module/)
6
6
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7
- [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
7
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
8
+ [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/AUProbGeo/integrate_module/blob/main/examples/gallery/10_getting_started/integrate_getting_started.ipynb)
8
9
 
9
10
  This repository contains the INTEGRATE Python module for localized probabilistic data integration in geophysics.
10
11
 
11
12
 
12
13
  ## Installation
13
14
 
14
- Assuming you already have Python 3.10+ installed:
15
+ Assuming you already have Python 3.11+ installed:
15
16
 
16
17
  pip install integrate_module
17
18
 
@@ -29,7 +30,7 @@ On Linux/macOS, you will need to install GA-AEM manually.
29
30
 
30
31
  # Create virtual environment in .venv/ inside the module root
31
32
  cd path/to/integrate_module
32
- uv venv .venv --python 3.11
33
+ uv venv .venv --python 3.13
33
34
 
34
35
  # Activate
35
36
  source .venv/bin/activate # Linux/macOS
@@ -97,7 +98,7 @@ To also install the packages needed to build the Sphinx documentation, use the `
97
98
 
98
99
  Create a Conda environment (called integrate) and install the required modules:
99
100
 
100
- conda create --name integrate python=3.10 numpy pandas matplotlib scipy tqdm requests h5py psutil
101
+ conda create --name integrate python=3.13 numpy pandas matplotlib scipy tqdm requests h5py psutil
101
102
  conda activate integrate
102
103
  pip install integrate_module
103
104
 
@@ -106,7 +107,7 @@ Create a Conda environment (called integrate) and install the required modules:
106
107
 
107
108
  Create a Conda environment (called integrate) and install the required modules:
108
109
 
109
- conda create --name integrate python=3.10 numpy pandas matplotlib scipy tqdm requests h5py psutil
110
+ conda create --name integrate python=3.12 numpy pandas matplotlib scipy tqdm requests h5py psutil
110
111
  conda activate integrate
111
112
  pip install -e .
112
113
 
@@ -167,7 +168,7 @@ First install Homebrew, then run:
167
168
 
168
169
  ## Alternative EM forward backends (anemone, SimPEG)
169
170
 
170
- GA-AEM is the default TDEM forward modeller. Two pure-Python alternatives can be
171
+ GA-AEM is the default TDEM forward modeller. Two alternatives can be
171
172
  selected with `method=` in `ig.forward_em()` / `ig.prior_data_em()` (or via the
172
173
  `EM_FORWARD_METHOD` environment variable):
173
174
 
@@ -175,9 +176,11 @@ selected with `method=` in `ig.forward_em()` / `ig.prior_data_em()` (or via the
175
176
  ig.prior_data_em(f_prior_h5, file_gex=gex, method='anemone') # PyTorch, GPU-capable
176
177
  ig.prior_data_em(f_prior_h5, file_gex=gex, method='simpeg') # SimPEG 1D layered TDEM
177
178
 
178
- * **anemone** (`pip install "integrate[anemone]"`): see `ANEMONE_VS_GAAEM_VS_AI.md`.
179
- * **SimPEG** (`pip install "integrate[simpeg]"`, or `uv pip install -e ../simpeg` from a
180
- checkout): `ig.forward_simpeg()` / `ig.prior_data_simpeg()`. The `.gex` low-pass filters
179
+ * **anemone** (PyTorch, GPU-capable): not on PyPI yet. Install it from a local checkout
180
+ with `pip install -e path/to/anemone`, plus a `torch` build for your hardware. See the
181
+ install guide in `doc/install.rst`.
182
+ * **SimPEG**: installed with `integrate_module` (core dependency, `simpeg>=0.25`).
183
+ Use `ig.forward_simpeg()` / `ig.prior_data_simpeg()`. The `.gex` low-pass filters
181
184
  and gate integration are applied by INTEGRATE on top of SimPEG's
182
185
  `Simulation1DLayered`; agreement with GA-AEM is ~1 % (LM) / ~0.2 % (HM) on Daugaard tTEM,
183
186
  see `SIMPEG_VS_GAAEM.md`.
@@ -188,7 +191,7 @@ The `main` branch is the most stable, with less frequent updates but larger chan
188
191
 
189
192
  The `develop` branch contains the current development code and may be updated frequently. Some functions and examples may be broken.
190
193
 
191
- An extra set of tests and examples are located in the ``experimental`` sub-branch `https://github.com/cultpenguin/integrate_module_experimental/ <https://github.com/cultpenguin/integrate_module_experimental/>`_.
194
+ An extra set of tests and examples are located in the `experimental` submodule repository: https://github.com/cultpenguin/integrate_module_experimental/.
192
195
  Please ask the developers for access to this branch if needed. To clone the main repository with the experimental branch, use:
193
196
 
194
197
  git clone --recurse-submodules git@github.com:AUProbGeo/integrate_module.git
@@ -21,6 +21,7 @@ from integrate.integrate_rejection import compute_hypothesis_probability
21
21
  from integrate.integrate import integrate_update_prior_attributes
22
22
  from integrate.integrate import integrate_posterior_stats
23
23
  from integrate.integrate import prior_set
24
+ from integrate.integrate import data_set
24
25
  from integrate.integrate import logl_T_est
25
26
  from integrate.integrate import lu_post_sample_logl
26
27
  from integrate.integrate import prior_data
@@ -35,6 +36,8 @@ from integrate.anemone_forward import gex_to_anemone_system
35
36
  from integrate.simpeg_forward import forward_simpeg
36
37
  from integrate.simpeg_forward import prior_data_simpeg
37
38
  from integrate.em_system import gex_to_em_system
39
+ from integrate.sr2_gex import gex_apply_sr2
40
+ from integrate.sr2_gex import sr2_effective_current
38
41
  from integrate.integrate import synthetic_case
39
42
  from integrate.integrate import prior_model_layered
40
43
  from integrate.integrate import prior_model_workbench