Skip to main content

midas-suite

A meta-package that installs the MIDAS Python pipeline in a single command.

pip install midas-suite

This pulls in the currently published MIDAS sub-packages — the FF/NF HEDM analysis chain, calibration, peak fitting, radial integration, forward model, indexing, transforms, grain processing, and stress/strain analysis.

midas-suite itself contains no scientific code. It's a thin meta-package whose only job is to declare the sub-packages as dependencies so users don't have to install them one at a time.

What you get

pip install midas-suite installs 19 sub-packages (as of v0.3.1):

Top-level orchestrators (the entry points most users want):

Sub-package Role
midas-pipeline Unified FF + PF orchestrator (--scan-mode {ff,pf,auto}). End-to-end from raw data through grain reconstruction; single source for both scan modes.
midas-ff-pipeline RETIRED at 0.7.0 — an argv shim that rewrites its arguments and delegates to midas-pipeline. It no longer orchestrates anything and has no public API. Use midas-pipeline run --scan-mode ff; removed entirely at 1.0.0.
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.
midas-parsl-configs Bundled + user-extensible Parsl configs for running MIDAS pipelines on laptops, workstations, clusters.

FF-HEDM building blocks:

Sub-package Role
midas-peakfit Differentiable PyTorch peak fitting for FF-HEDM Zarr
midas-transforms FF-HEDM peak transforms (merge / radius / fit-setup / save-bin)
midas-index Pure-Python/PyTorch FF-HEDM indexer (drop-in for IndexerOMP)
midas-fit-grain Single/multi-grain refiner
midas-process-grains FF-HEDM grain-determination + strain pipeline

NF-HEDM building blocks:

Sub-package Role
midas-nf-preprocess NF-HEDM preprocessing (hex grid, tomo filter, spot prediction)
midas-nf-fitorientation NF-HEDM orientation/calibration fitter

Shared foundations:

Sub-package Role
midas-stress Crystallographic stress/strain analysis (Voigt-Mandel, Cij inversion, slip/Schmid/Taylor)
midas-params Parameter-file registry, validator, wizard for FF/NF/PF/RI
midas-hkls Pure-Python crystallography & HKL list generator (sginfo-equivalent)
midas-diffract End-to-end differentiable HEDM forward model (FF + NF + pf-HEDM)
midas-integrate Pure-Python radial integration (DetectorMapper + CSR + streaming server)
midas-integrate-v2 Differentiable, autograd-clean integration kernels (torch); companion to v1
midas-calibrate Native Python/Torch detector geometry calibration (LM-based)
midas-calibrate-v2 Torch-native Bayesian/Laplace calibration (LM + L-BFGS); companion to v1

You then import midas_stress, import midas_diffract, etc. directly — each sub-package retains its own API. midas-suite does not re-export them.

To check what was installed:

import midas_suite
print(midas_suite.installed())

Modality bundles

If you don't want everything, the optional extras let you pick a workflow:

pip install "midas-suite[ff]"        # FF-HEDM stack
pip install "midas-suite[pf]"        # PF-HEDM stack (scanning / point-focus)
pip install "midas-suite[nf]"        # NF-HEDM stack
pip install "midas-suite[calib]"     # v1 calibration + integration
pip install "midas-suite[calib-v2]"  # v2 (torch differentiable) calibration + integration
pip install "midas-suite[ff,plots]"
Extra What it pulls
ff midas-ff-pipeline + stress, params, calibrate, integrate. Since ff-pipeline's retirement its only dependency is midas-pipeline, so hkls, peakfit, transforms, index, fit-grain, process-grains, diffract and parsl-configs still arrive — through midas-pipeline rather than through ff-pipeline. The installed set is unchanged.
pf midas-pipeline[fast] (numba) + stress, params, calibrate, integrate (scan-mode pf pulls index + fit-grain + transforms + stress transitively)
nf midas-nf-pipeline (transitively pulls hkls, stress, nf-preprocess, nf-fitorientation) + params
calib hkls, integrate, peakfit, calibrate (v1 C-backed stack)
calib-v2 hkls, calibrate-v2, integrate-v2, peakfit (torch differentiable stack)
plots matplotlib (for sub-package plotting helpers)

What pip install midas-suite does NOT include

Be aware:

  • The MIDAS C executables (IndexerOMP, ProcessGrains, MakeDiffrSpots, …) still need to be built from source via cmake --build . from the MIDAS monorepo. The pure-Python pipeline (calibration → integration → indexing → grain processing) is now end-to-end in PyTorch and does not require them.
  • The PyQt FF viewer GUI needs PyQt5 or PySide6 installed separately. Not declared here because it's optional and platform-sensitive.
  • Optional crystallography backends for midas-hkls: install gemmi or pycifrw separately for CIF I/O via pip install midas-hkls[cif].
  • GPU acceleration is a runtime backend selected by PyTorch device string. CUDA/MPS just work if your torch install supports them; no separate *-gpu package needed.
  • Unpublished packages: midas-ckernel (its C is vendored into midas-index / midas-fit-grain, so nothing needs it from PyPI) and midas-dct-tt (in development). Everything else the suite names is on PyPI, including the research packages midas-grain-odf, midas-pf-odf, midas-pink, midas-propagate, midas-uq and midas-joint-ff-calibrate.

The c-omp binaries — check you actually got them

midas-index and midas-fit-grain each bundle a C/OpenMP executable (midas_indexer, midas_fitgrain). These are the fast path: the pure-Python backends do the same job far more slowly.

Both publish as sdist only, so pip compiles them on your machine during install. CMake and ninja arrive automatically as build requirements — you do not need them preinstalled. What you do need is a C compiler and OpenMP:

platform what to install
macOS brew install libomp gcc
Linux your distro's gcc (usually pulls in libgomp)
Windows Visual Studio Build Tools, "Desktop development with C++"

If either is missing the install still succeeds — CMakeLists.txt probes with check_language(C) and returns cleanly rather than failing the wheel build, leaving you on the Python-only path. That is deliberate, but it means the degradation is easy to miss: pip's build isolation buries the CMake warning, and pip install -q hides it entirely. A slow pipeline with no error message is the usual symptom.

So check explicitly after installing:

import midas_index.backend_c as b
print(b.available())    # True  -> c-omp indexer present
print(b.binary_path())  # where it looked

import midas_fit_grain.backend_c as f
print(f.available())    # same for the refiner

available() == False means you are on the Python path. Install the compiler and OpenMP for your platform, then pip install --force-reinstall --no-deps midas-index midas-fit-grain to rebuild.

Cross-platform

Most MIDAS sub-packages are pure Python or PyTorch and ship as py3-none-any wheels. The exceptions are midas-index and midas-fit-grain, which are sdist-only and compile a C/OpenMP binary at install time (see above) — that is why there are no per-platform binary wheels to maintain. Tested install paths: Linux, macOS, Windows. See packages/RELEASE_READINESS.md for the detailed cross-platform readiness matrix.

Versioning

midas-suite versions are independent of the sub-package versions. The rule:

Change Bump
Floors tightened (no new sub-package added) patch (0.1.0 → 0.1.1)
New sub-package added to the dep list minor (0.1.0 → 0.2.0)
Backwards-incompatible reorganisation of bundles major (0.x.y → 1.0.0)

Floors are pinned with >=, never ==, so a sub-package patch release doesn't break midas-suite.

Releasing a new version

See RELEASING.md for the full release flow. TL;DR:

cd packages/midas_suite
./release.sh 0.3.2 --publish

License

BSD-3-Clause, same as the sub-packages.

Metadata

Release files for midas-suite 0.12.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for midas-suite 0.12.0
File Size Uploaded
midas_suite-0.12.0.tar.gz 11.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for midas-suite 0.12.0
File Interpreter ABI Platform
midas_suite-0.12.0-py3-none-any.whl Python 3 none any Details

Total release size: 19.5 kB

Release files / midas_suite-0.12.0.tar.gz

Download URL midas_suite-0.12.0.tar.gz
Size 11.6 kB
Tags Source
SHA-256 checksum
How to use checksums
522181aa23e841f66283653084b815ecbb42050e43b1f55186cff2e284319043
BLAKE2b-256 checksum
How to use checksums
948aaa361eaf04dca17921413d86cb6758063b5ec61d7fd6dc84bc1831ff841f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Release files / midas_suite-0.12.0-py3-none-any.whl

Download URL midas_suite-0.12.0-py3-none-any.whl
Size 7.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
fe99e987d06228b6ec7e0576baa60437bdb40ccde0a379ca9a1a35af0d18faba
BLAKE2b-256 checksum
How to use checksums
9e0088edfc3bc87fe7c22920a007ce76b8cebcaa49e9452b20945009eddc6fd5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.12.0 This release

2 release files

0.11.0

2 release files

0.10.3

2 release files

0.10.2

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.2

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.0

2 release files

0.7.3

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.2

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.16

2 release files

0.3.15

2 release files

0.3.14

2 release files

0.3.13

2 release files

0.3.12

2 release files

0.3.11

2 release files

0.3.10

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page