midas-suite 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.
@@ -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,142 @@
1
+ # midas-suite
2
+
3
+ A meta-package that installs the MIDAS Python pipeline in a single command.
4
+
5
+ ```bash
6
+ pip install midas-suite
7
+ ```
8
+
9
+ This pulls in the currently published MIDAS sub-packages — the FF/NF
10
+ HEDM analysis chain, calibration, peak fitting, radial integration,
11
+ forward model, indexing, transforms, grain processing, and stress/strain
12
+ analysis.
13
+
14
+ `midas-suite` itself contains no scientific code. It's a thin
15
+ [meta-package](https://packaging.python.org/en/latest/glossary/#term-Distribution-Package)
16
+ whose only job is to declare the sub-packages as dependencies so users
17
+ don't have to install them one at a time.
18
+
19
+ ## What you get
20
+
21
+ `pip install midas-suite` installs **16 sub-packages** (as of v0.1.0):
22
+
23
+ **Top-level orchestrators (the entry points most users want):**
24
+
25
+ | Sub-package | Role |
26
+ |---|---|
27
+ | `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. |
28
+ | `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`. |
29
+ | `midas-parsl-configs` | Bundled + user-extensible Parsl configs for running MIDAS pipelines on laptops, workstations, clusters. |
30
+
31
+ **FF-HEDM building blocks:**
32
+
33
+ | Sub-package | Role |
34
+ |---|---|
35
+ | `midas-peakfit` | Differentiable PyTorch peak fitting for FF-HEDM Zarr |
36
+ | `midas-transforms` | FF-HEDM peak transforms (merge / radius / fit-setup / save-bin) |
37
+ | `midas-index` | Pure-Python/PyTorch FF-HEDM indexer (drop-in for `IndexerOMP`) |
38
+ | `midas-fit-grain` | Single/multi-grain refiner |
39
+ | `midas-process-grains` | FF-HEDM grain-determination + strain pipeline |
40
+
41
+ **NF-HEDM building blocks:**
42
+
43
+ | Sub-package | Role |
44
+ |---|---|
45
+ | `midas-nf-preprocess` | NF-HEDM preprocessing (hex grid, tomo filter, spot prediction) |
46
+ | `midas-nf-fitorientation` | NF-HEDM orientation/calibration fitter |
47
+
48
+ **Shared foundations:**
49
+
50
+ | Sub-package | Role |
51
+ |---|---|
52
+ | `midas-stress` | Crystallographic stress/strain analysis (Voigt-Mandel, Cij inversion, slip/Schmid/Taylor) |
53
+ | `midas-params` | Parameter-file registry, validator, wizard for FF/NF/PF/RI |
54
+ | `midas-hkls` | Pure-Python crystallography & HKL list generator (sginfo-equivalent) |
55
+ | `midas-diffract` | End-to-end differentiable HEDM forward model (FF + NF + pf-HEDM) |
56
+ | `midas-integrate` | Pure-Python radial integration (`DetectorMapper` + CSR + streaming server) |
57
+ | `midas-calibrate` | Native Python/Torch detector geometry calibration (LM-based) |
58
+
59
+ You then `import midas_stress`, `import midas_diffract`, etc. directly —
60
+ each sub-package retains its own API. `midas-suite` does not re-export
61
+ them.
62
+
63
+ To check what was installed:
64
+
65
+ ```python
66
+ import midas_suite
67
+ print(midas_suite.installed())
68
+ ```
69
+
70
+ ## Modality bundles
71
+
72
+ If you don't want everything, the optional extras let you pick a workflow:
73
+
74
+ ```bash
75
+ pip install "midas-suite[ff]" # FF-HEDM stack
76
+ pip install "midas-suite[nf]" # NF-HEDM stack
77
+ pip install "midas-suite[calib]" # calibration + integration only
78
+ pip install "midas-suite[ff,plots]"
79
+ ```
80
+
81
+ | Extra | What it pulls |
82
+ |---|---|
83
+ | `ff` | `midas-ff-pipeline` (which transitively pulls hkls, peakfit, transforms, index, fit-grain, process-grains, diffract, parsl-configs) + stress, params, calibrate, integrate |
84
+ | `nf` | `midas-nf-pipeline` (which transitively pulls hkls, stress, nf-preprocess, nf-fitorientation) + params |
85
+ | `calib` | hkls, integrate, peakfit, calibrate |
86
+ | `plots` | matplotlib (for sub-package plotting helpers) |
87
+
88
+ ## What `pip install midas-suite` does NOT include
89
+
90
+ Be aware:
91
+
92
+ - **The MIDAS C executables** (`IndexerOMP`, `ProcessGrains`, `MakeDiffrSpots`, …)
93
+ still need to be built from source via `cmake --build .` from the MIDAS
94
+ monorepo. The pure-Python pipeline (calibration → integration → indexing
95
+ → grain processing) is now end-to-end in PyTorch and does not require
96
+ them.
97
+ - **The PyQt FF viewer GUI** needs `PyQt5` or `PySide6` installed
98
+ separately. Not declared here because it's optional and platform-sensitive.
99
+ - **Optional crystallography backends** for `midas-hkls`: install
100
+ `gemmi` or `pycifrw` separately for CIF I/O via `pip install
101
+ midas-hkls[cif]`.
102
+ - **GPU acceleration** is a runtime backend selected by PyTorch device
103
+ string. CUDA/MPS just work if your `torch` install supports them; no
104
+ separate `*-gpu` package needed.
105
+ - **Coming in v0.2.0** — `midas-grain-odf` (per-grain ODF inversion) and
106
+ `midas-pf-odf` (joint pf-HEDM peak-shape inversion) are not yet on
107
+ PyPI. They fold in when `midas-suite` v0.2.0 ships, bringing the
108
+ bundled count to 18 sub-packages.
109
+
110
+ ## Cross-platform
111
+
112
+ All MIDAS Python sub-packages are pure Python or PyTorch and ship as
113
+ `py3-none-any` wheels. Tested install paths: Linux, macOS, Windows.
114
+ See [`packages/RELEASE_READINESS.md`](../RELEASE_READINESS.md) for the
115
+ detailed cross-platform readiness matrix.
116
+
117
+ ## Versioning
118
+
119
+ `midas-suite` versions are independent of the sub-package versions.
120
+ The rule:
121
+
122
+ | Change | Bump |
123
+ |---|---|
124
+ | Floors tightened (no new sub-package added) | patch (`0.1.0` → `0.1.1`) |
125
+ | New sub-package added to the dep list | minor (`0.1.0` → `0.2.0`) |
126
+ | Backwards-incompatible reorganisation of bundles | major (`0.x.y` → `1.0.0`) |
127
+
128
+ Floors are pinned with `>=`, never `==`, so a sub-package patch release
129
+ doesn't break `midas-suite`.
130
+
131
+ ## Releasing a new version
132
+
133
+ See [`RELEASING.md`](RELEASING.md) for the full release flow. TL;DR:
134
+
135
+ ```bash
136
+ cd packages/midas_suite
137
+ ./release.sh 0.2.0 --publish
138
+ ```
139
+
140
+ ## License
141
+
142
+ BSD-3-Clause, same as the sub-packages.
@@ -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,8 @@
1
+ README.md
2
+ pyproject.toml
3
+ midas_suite/__init__.py
4
+ midas_suite.egg-info/PKG-INFO
5
+ midas_suite.egg-info/SOURCES.txt
6
+ midas_suite.egg-info/dependency_links.txt
7
+ midas_suite.egg-info/requires.txt
8
+ midas_suite.egg-info/top_level.txt
@@ -0,0 +1,40 @@
1
+ midas-stress>=0.6.0
2
+ midas-params>=0.3.0
3
+ midas-hkls>=0.3.0
4
+ midas-diffract>=0.1.0
5
+ midas-peakfit>=0.3.0
6
+ midas-integrate>=0.3.2
7
+ midas-calibrate>=0.2.1
8
+ midas-index>=0.3.0
9
+ midas-transforms>=0.2.0
10
+ midas-process-grains>=0.1.0
11
+ midas-fit-grain>=0.1.0
12
+ midas-nf-preprocess>=0.1.0
13
+ midas-nf-fitorientation>=0.3.0
14
+ midas-parsl-configs>=0.1.0
15
+ midas-ff-pipeline>=0.1.0
16
+ midas-nf-pipeline>=0.1.0
17
+
18
+ [calib]
19
+ midas-hkls>=0.3.0
20
+ midas-integrate>=0.3.2
21
+ midas-peakfit>=0.3.0
22
+ midas-calibrate>=0.2.1
23
+
24
+ [dev]
25
+ pytest>=7
26
+
27
+ [ff]
28
+ midas-stress>=0.6.0
29
+ midas-params>=0.3.0
30
+ midas-ff-pipeline>=0.1.0
31
+ midas-calibrate>=0.2.1
32
+ midas-integrate>=0.3.2
33
+
34
+ [nf]
35
+ midas-stress>=0.6.0
36
+ midas-params>=0.3.0
37
+ midas-nf-pipeline>=0.1.0
38
+
39
+ [plots]
40
+ matplotlib>=3.5
@@ -0,0 +1 @@
1
+ midas_suite
@@ -0,0 +1,83 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "midas-suite"
7
+ version = "0.2.0"
8
+ description = "Meta-package: installs the MIDAS Python pipeline (FF/NF/PF HEDM, calibration, peakfit, integration, transforms, ODF, stress)."
9
+ readme = "README.md"
10
+ license = { text = "BSD-3-Clause" }
11
+ authors = [{ name = "Hemant Sharma", email = "hsharma@anl.gov" }]
12
+ requires-python = ">=3.9"
13
+ keywords = [
14
+ "MIDAS", "HEDM", "3DXRD", "powder diffraction", "tomography",
15
+ "DCT", "Laue", "synchrotron", "crystallography", "PyTorch",
16
+ ]
17
+ classifiers = [
18
+ "Development Status :: 4 - Beta",
19
+ "Intended Audience :: Science/Research",
20
+ "Programming Language :: Python :: 3",
21
+ "Operating System :: OS Independent",
22
+ "Topic :: Scientific/Engineering :: Physics",
23
+ ]
24
+
25
+ # Floors pinned to the current PyPI version of each sub-package as of
26
+ # 2026-05-06. Bump only when a meta-package change actually requires it.
27
+ # midas-grain-odf and midas-pf-odf are intentionally absent until they
28
+ # land on PyPI; they will be added in midas-suite v0.2.0.
29
+ dependencies = [
30
+ # leaves
31
+ "midas-stress>=0.6.0",
32
+ "midas-params>=0.3.0",
33
+ "midas-hkls>=0.3.0",
34
+ "midas-diffract>=0.1.0",
35
+ "midas-peakfit>=0.3.0",
36
+ "midas-integrate>=0.3.2",
37
+ "midas-calibrate>=0.2.1",
38
+ "midas-index>=0.3.0",
39
+ "midas-transforms>=0.2.0",
40
+ "midas-process-grains>=0.1.0",
41
+ "midas-fit-grain>=0.1.0",
42
+ "midas-nf-preprocess>=0.1.0",
43
+ "midas-nf-fitorientation>=0.3.0",
44
+ # parsl + pipeline orchestrators
45
+ "midas-parsl-configs>=0.1.0",
46
+ "midas-ff-pipeline>=0.1.0",
47
+ "midas-nf-pipeline>=0.1.0",
48
+ ]
49
+
50
+ [project.optional-dependencies]
51
+ # Modality bundles for users who don't want the full pipeline.
52
+ # Each bundle pulls only what its target workflow needs; sub-package
53
+ # transitive deps fill in the rest. The ff/nf extras intentionally pull
54
+ # the corresponding pipeline orchestrator at the top — that package's
55
+ # own dep list pulls everything it needs underneath.
56
+ ff = [
57
+ "midas-stress>=0.6.0",
58
+ "midas-params>=0.3.0",
59
+ "midas-ff-pipeline>=0.1.0",
60
+ "midas-calibrate>=0.2.1",
61
+ "midas-integrate>=0.3.2",
62
+ ]
63
+ nf = [
64
+ "midas-stress>=0.6.0",
65
+ "midas-params>=0.3.0",
66
+ "midas-nf-pipeline>=0.1.0",
67
+ ]
68
+ calib = [
69
+ "midas-hkls>=0.3.0",
70
+ "midas-integrate>=0.3.2",
71
+ "midas-peakfit>=0.3.0",
72
+ "midas-calibrate>=0.2.1",
73
+ ]
74
+ plots = ["matplotlib>=3.5"]
75
+ dev = ["pytest>=7"]
76
+
77
+ [project.urls]
78
+ Homepage = "https://github.com/marinerhemant/MIDAS"
79
+ Issues = "https://github.com/marinerhemant/MIDAS/issues"
80
+
81
+ [tool.setuptools.packages.find]
82
+ where = ["."]
83
+ include = ["midas_suite*"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+