midas-suite 0.2.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,64 @@
1
+ """midas-suite: meta-package that installs the MIDAS Python pipeline.
2
+
3
+ This package contains no scientific code of its own. It declares the
4
+ MIDAS sub-packages as dependencies so that ``pip install midas-suite``
5
+ gives a user the full pipeline in one step.
6
+
7
+ The actual modules live in their own packages and are imported under
8
+ their own names (``midas_stress``, ``midas_diffract``, ``midas_index``,
9
+ etc.) — this package does not re-export them.
10
+
11
+ To inspect what was installed:
12
+
13
+ >>> import midas_suite
14
+ >>> print(midas_suite.installed())
15
+
16
+ """
17
+
18
+ __version__ = "0.2.0"
19
+
20
+ # The sub-packages this meta-package pulls in (in publish-order).
21
+ # Kept in sync with pyproject.toml's ``dependencies`` list.
22
+ SUBPACKAGES = (
23
+ # leaves
24
+ "midas_stress",
25
+ "midas_params",
26
+ "midas_hkls",
27
+ "midas_diffract",
28
+ "midas_peakfit",
29
+ "midas_integrate",
30
+ "midas_calibrate",
31
+ "midas_index",
32
+ "midas_transforms",
33
+ "midas_process_grains",
34
+ "midas_fit_grain",
35
+ "midas_nf_preprocess",
36
+ "midas_nf_fitorientation",
37
+ # parsl + pipeline orchestrators
38
+ "midas_parsl_configs",
39
+ "midas_ff_pipeline",
40
+ "midas_nf_pipeline",
41
+ )
42
+
43
+
44
+ def installed():
45
+ """Return a dict {sub_package_name: version_or_None} for every
46
+ MIDAS sub-package this meta-package declares as a dependency.
47
+
48
+ Useful for ``midas_suite.installed()`` from a notebook or REPL to
49
+ confirm what got pulled in by ``pip install midas-suite``.
50
+ """
51
+ import importlib
52
+
53
+ out = {}
54
+ for name in SUBPACKAGES:
55
+ try:
56
+ mod = importlib.import_module(name)
57
+ except ImportError:
58
+ out[name] = None
59
+ continue
60
+ out[name] = getattr(mod, "__version__", "unknown")
61
+ return out
62
+
63
+
64
+ __all__ = ["__version__", "SUBPACKAGES", "installed"]
@@ -0,0 +1,194 @@
1
+ Metadata-Version: 2.4
2
+ Name: midas-suite
3
+ Version: 0.2.0
4
+ Summary: Meta-package: installs the MIDAS Python pipeline (FF/NF/PF HEDM, calibration, peakfit, integration, transforms, ODF, stress).
5
+ Author-email: Hemant Sharma <hsharma@anl.gov>
6
+ License: BSD-3-Clause
7
+ Project-URL: Homepage, https://github.com/marinerhemant/MIDAS
8
+ Project-URL: Issues, https://github.com/marinerhemant/MIDAS/issues
9
+ Keywords: MIDAS,HEDM,3DXRD,powder diffraction,tomography,DCT,Laue,synchrotron,crystallography,PyTorch
10
+ Classifier: Development Status :: 4 - Beta
11
+ Classifier: Intended Audience :: Science/Research
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Operating System :: OS Independent
14
+ Classifier: Topic :: Scientific/Engineering :: Physics
15
+ Requires-Python: >=3.9
16
+ Description-Content-Type: text/markdown
17
+ Requires-Dist: midas-stress>=0.6.0
18
+ Requires-Dist: midas-params>=0.3.0
19
+ Requires-Dist: midas-hkls>=0.3.0
20
+ Requires-Dist: midas-diffract>=0.1.0
21
+ Requires-Dist: midas-peakfit>=0.3.0
22
+ Requires-Dist: midas-integrate>=0.3.2
23
+ Requires-Dist: midas-calibrate>=0.2.1
24
+ Requires-Dist: midas-index>=0.3.0
25
+ Requires-Dist: midas-transforms>=0.2.0
26
+ Requires-Dist: midas-process-grains>=0.1.0
27
+ Requires-Dist: midas-fit-grain>=0.1.0
28
+ Requires-Dist: midas-nf-preprocess>=0.1.0
29
+ Requires-Dist: midas-nf-fitorientation>=0.3.0
30
+ Requires-Dist: midas-parsl-configs>=0.1.0
31
+ Requires-Dist: midas-ff-pipeline>=0.1.0
32
+ Requires-Dist: midas-nf-pipeline>=0.1.0
33
+ Provides-Extra: ff
34
+ Requires-Dist: midas-stress>=0.6.0; extra == "ff"
35
+ Requires-Dist: midas-params>=0.3.0; extra == "ff"
36
+ Requires-Dist: midas-ff-pipeline>=0.1.0; extra == "ff"
37
+ Requires-Dist: midas-calibrate>=0.2.1; extra == "ff"
38
+ Requires-Dist: midas-integrate>=0.3.2; extra == "ff"
39
+ Provides-Extra: nf
40
+ Requires-Dist: midas-stress>=0.6.0; extra == "nf"
41
+ Requires-Dist: midas-params>=0.3.0; extra == "nf"
42
+ Requires-Dist: midas-nf-pipeline>=0.1.0; extra == "nf"
43
+ Provides-Extra: calib
44
+ Requires-Dist: midas-hkls>=0.3.0; extra == "calib"
45
+ Requires-Dist: midas-integrate>=0.3.2; extra == "calib"
46
+ Requires-Dist: midas-peakfit>=0.3.0; extra == "calib"
47
+ Requires-Dist: midas-calibrate>=0.2.1; extra == "calib"
48
+ Provides-Extra: plots
49
+ Requires-Dist: matplotlib>=3.5; extra == "plots"
50
+ Provides-Extra: dev
51
+ Requires-Dist: pytest>=7; extra == "dev"
52
+
53
+ # midas-suite
54
+
55
+ A meta-package that installs the MIDAS Python pipeline in a single command.
56
+
57
+ ```bash
58
+ pip install midas-suite
59
+ ```
60
+
61
+ This pulls in the currently published MIDAS sub-packages — the FF/NF
62
+ HEDM analysis chain, calibration, peak fitting, radial integration,
63
+ forward model, indexing, transforms, grain processing, and stress/strain
64
+ analysis.
65
+
66
+ `midas-suite` itself contains no scientific code. It's a thin
67
+ [meta-package](https://packaging.python.org/en/latest/glossary/#term-Distribution-Package)
68
+ whose only job is to declare the sub-packages as dependencies so users
69
+ don't have to install them one at a time.
70
+
71
+ ## What you get
72
+
73
+ `pip install midas-suite` installs **16 sub-packages** (as of v0.1.0):
74
+
75
+ **Top-level orchestrators (the entry points most users want):**
76
+
77
+ | Sub-package | Role |
78
+ |---|---|
79
+ | `midas-ff-pipeline` | End-to-end pure-Python FF-HEDM workflow orchestrator (1-N detectors). Drives the full FF pipeline from raw data to grains. |
80
+ | `midas-nf-pipeline` | Pure-Python NF-HEDM pipeline orchestrator (single + multi-resolution, multi-layer). Drop-in for `nf_MIDAS.py` / `nf_MIDAS_Multiple_Resolutions.py`. |
81
+ | `midas-parsl-configs` | Bundled + user-extensible Parsl configs for running MIDAS pipelines on laptops, workstations, clusters. |
82
+
83
+ **FF-HEDM building blocks:**
84
+
85
+ | Sub-package | Role |
86
+ |---|---|
87
+ | `midas-peakfit` | Differentiable PyTorch peak fitting for FF-HEDM Zarr |
88
+ | `midas-transforms` | FF-HEDM peak transforms (merge / radius / fit-setup / save-bin) |
89
+ | `midas-index` | Pure-Python/PyTorch FF-HEDM indexer (drop-in for `IndexerOMP`) |
90
+ | `midas-fit-grain` | Single/multi-grain refiner |
91
+ | `midas-process-grains` | FF-HEDM grain-determination + strain pipeline |
92
+
93
+ **NF-HEDM building blocks:**
94
+
95
+ | Sub-package | Role |
96
+ |---|---|
97
+ | `midas-nf-preprocess` | NF-HEDM preprocessing (hex grid, tomo filter, spot prediction) |
98
+ | `midas-nf-fitorientation` | NF-HEDM orientation/calibration fitter |
99
+
100
+ **Shared foundations:**
101
+
102
+ | Sub-package | Role |
103
+ |---|---|
104
+ | `midas-stress` | Crystallographic stress/strain analysis (Voigt-Mandel, Cij inversion, slip/Schmid/Taylor) |
105
+ | `midas-params` | Parameter-file registry, validator, wizard for FF/NF/PF/RI |
106
+ | `midas-hkls` | Pure-Python crystallography & HKL list generator (sginfo-equivalent) |
107
+ | `midas-diffract` | End-to-end differentiable HEDM forward model (FF + NF + pf-HEDM) |
108
+ | `midas-integrate` | Pure-Python radial integration (`DetectorMapper` + CSR + streaming server) |
109
+ | `midas-calibrate` | Native Python/Torch detector geometry calibration (LM-based) |
110
+
111
+ You then `import midas_stress`, `import midas_diffract`, etc. directly —
112
+ each sub-package retains its own API. `midas-suite` does not re-export
113
+ them.
114
+
115
+ To check what was installed:
116
+
117
+ ```python
118
+ import midas_suite
119
+ print(midas_suite.installed())
120
+ ```
121
+
122
+ ## Modality bundles
123
+
124
+ If you don't want everything, the optional extras let you pick a workflow:
125
+
126
+ ```bash
127
+ pip install "midas-suite[ff]" # FF-HEDM stack
128
+ pip install "midas-suite[nf]" # NF-HEDM stack
129
+ pip install "midas-suite[calib]" # calibration + integration only
130
+ pip install "midas-suite[ff,plots]"
131
+ ```
132
+
133
+ | Extra | What it pulls |
134
+ |---|---|
135
+ | `ff` | `midas-ff-pipeline` (which transitively pulls hkls, peakfit, transforms, index, fit-grain, process-grains, diffract, parsl-configs) + stress, params, calibrate, integrate |
136
+ | `nf` | `midas-nf-pipeline` (which transitively pulls hkls, stress, nf-preprocess, nf-fitorientation) + params |
137
+ | `calib` | hkls, integrate, peakfit, calibrate |
138
+ | `plots` | matplotlib (for sub-package plotting helpers) |
139
+
140
+ ## What `pip install midas-suite` does NOT include
141
+
142
+ Be aware:
143
+
144
+ - **The MIDAS C executables** (`IndexerOMP`, `ProcessGrains`, `MakeDiffrSpots`, …)
145
+ still need to be built from source via `cmake --build .` from the MIDAS
146
+ monorepo. The pure-Python pipeline (calibration → integration → indexing
147
+ → grain processing) is now end-to-end in PyTorch and does not require
148
+ them.
149
+ - **The PyQt FF viewer GUI** needs `PyQt5` or `PySide6` installed
150
+ separately. Not declared here because it's optional and platform-sensitive.
151
+ - **Optional crystallography backends** for `midas-hkls`: install
152
+ `gemmi` or `pycifrw` separately for CIF I/O via `pip install
153
+ midas-hkls[cif]`.
154
+ - **GPU acceleration** is a runtime backend selected by PyTorch device
155
+ string. CUDA/MPS just work if your `torch` install supports them; no
156
+ separate `*-gpu` package needed.
157
+ - **Coming in v0.2.0** — `midas-grain-odf` (per-grain ODF inversion) and
158
+ `midas-pf-odf` (joint pf-HEDM peak-shape inversion) are not yet on
159
+ PyPI. They fold in when `midas-suite` v0.2.0 ships, bringing the
160
+ bundled count to 18 sub-packages.
161
+
162
+ ## Cross-platform
163
+
164
+ All MIDAS Python sub-packages are pure Python or PyTorch and ship as
165
+ `py3-none-any` wheels. Tested install paths: Linux, macOS, Windows.
166
+ See [`packages/RELEASE_READINESS.md`](../RELEASE_READINESS.md) for the
167
+ detailed cross-platform readiness matrix.
168
+
169
+ ## Versioning
170
+
171
+ `midas-suite` versions are independent of the sub-package versions.
172
+ The rule:
173
+
174
+ | Change | Bump |
175
+ |---|---|
176
+ | Floors tightened (no new sub-package added) | patch (`0.1.0` → `0.1.1`) |
177
+ | New sub-package added to the dep list | minor (`0.1.0` → `0.2.0`) |
178
+ | Backwards-incompatible reorganisation of bundles | major (`0.x.y` → `1.0.0`) |
179
+
180
+ Floors are pinned with `>=`, never `==`, so a sub-package patch release
181
+ doesn't break `midas-suite`.
182
+
183
+ ## Releasing a new version
184
+
185
+ See [`RELEASING.md`](RELEASING.md) for the full release flow. TL;DR:
186
+
187
+ ```bash
188
+ cd packages/midas_suite
189
+ ./release.sh 0.2.0 --publish
190
+ ```
191
+
192
+ ## License
193
+
194
+ BSD-3-Clause, same as the sub-packages.
@@ -0,0 +1,5 @@
1
+ midas_suite/__init__.py,sha256=hX_FTtt7ML6juWRpYcD0W9ONcZ-XAB1sKsqJEE9tELg,1770
2
+ midas_suite-0.2.0.dist-info/METADATA,sha256=NJZan2NSr-6vIf4SwlE3RxUrXU6voMgjrMpxSZ0eNiU,7824
3
+ midas_suite-0.2.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
4
+ midas_suite-0.2.0.dist-info/top_level.txt,sha256=-9dATWsWH0hCi8EYz8-9wn6nr3tkw10pOXkIjdDyYZQ,12
5
+ midas_suite-0.2.0.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (82.0.1)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ midas_suite