Skip to main content

Differentiable PyTorch peak-fitting for FF-HEDM Zarr archives (drop-in replacement for PeaksFittingOMPZarrRefactor)

Project description

midas-peakfit

Differentiable PyTorch peak-fitting for FF-HEDM Zarr archives. A drop-in replacement for PeaksFittingOMPZarrRefactor (C/OpenMP/NLopt) with the following changes:

  • Optimizer: Nelder-Mead → batched Levenberg-Marquardt on CPU/CUDA
  • Backend: OpenMP → PyTorch (autograd, batched linear algebra)
  • Precision: fp64 default; --dtype float32 available for speed
  • Output: identical binary format (AllPeaks_PS.bin, AllPeaks_PX.bin)
  • CLI: drop-in compatible

The C tool is kept as the validation oracle. Output is scientifically equivalent to the C tool, not bit-exact (LM and Nelder-Mead converge to slightly different minima within the same basin).

Installation

pip install -e packages/midas_peakfit[dev]

or once published:

pip install midas-peakfit

PyTorch with CUDA support must be installed separately if GPU acceleration is desired. Follow the PyTorch install guide for the right wheel for your CUDA version.

Notebooks

Worked-example Jupyter notebooks live in notebooks/. They are not shipped with pip install — get them by cloning the MIDAS repository.

Usage

peakfit_torch DataFile.MIDAS.zip 0 1 8                    # CPU/CUDA auto
peakfit_torch DataFile.MIDAS.zip 0 1 8 --device cuda --dtype float32
peakfit_torch DataFile.MIDAS.zip 0 1 8 OutputFolder 1     # explicit ResultFolder + fitPeaks
peakfit_torch DataFile.MIDAS.zip 0 1 8 \
    --validate-against /path/to/c_AllPeaks_PS.bin         # parity check

Positional args mirror the C tool exactly: DataFile blockNr nBlocks numProcs [ResultFolder] [fitPeaks].

New flags:

Flag Default Meaning
--device {cpu,cuda} cuda if available else cpu Compute device
--dtype {float32,float64} float64 Numeric precision
--batch-size N 4096 Cross-frame region batch threshold
--validate-against PATH Compare to C-produced AllPeaks_PS.bin and emit parity report
--deterministic off Force deterministic algorithms (fp64 only)

Parity tolerances

Field Tolerance
nPeaks per frame, pixel sets, maxY/maxZ, returnCode, maskTouched exact
YCen, ZCen, Radius, diffY, diffZ ≤ 0.05 px
Eta ≤ 0.02°
IMax, IntegratedIntensity, RawSumIntensity ≤ 1% relative
BG, SigmaR, SigmaEta, σGR, σLR, σGEta, σLEta, MU, FitRMSE ≤ 5% relative

Downstream gate: indexer (IndexerOMP) on both outputs must produce identical grain orientations within 0.05° misorientation.

Output

Two binary files in {ResultFolder}/Temp/:

  • AllPeaks_PS.bin — peak summary (29 columns × nPeaks per frame; see FF_HEDM/src/PeaksFittingConsolidatedIO.h for layout).
  • AllPeaks_PX.bin — pixel coordinates for each peak.

These files are byte-compatible with the C tool's output and readable by ConsolidatedPeakReader/ConsolidatedPixelReader in that header.

Tests

cd packages/midas_peakfit
pytest tests/ -v                      # unit tests (fast)
pytest tests/ -v -m slow              # full pipeline parity (~3 min)
pytest tests/ -v -m gpu               # CUDA-only tests (skip on CPU)

License

BSD-3-Clause.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

midas_peakfit-0.4.2.tar.gz (101.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

midas_peakfit-0.4.2-py3-none-any.whl (100.6 kB view details)

Uploaded Python 3

File details

Details for the file midas_peakfit-0.4.2.tar.gz.

File metadata

  • Download URL: midas_peakfit-0.4.2.tar.gz
  • Upload date:
  • Size: 101.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for midas_peakfit-0.4.2.tar.gz
Algorithm Hash digest
SHA256 a1409d8e937c670868b79fcaaec51ee796e99b4103c9c36f555223bd72247160
MD5 a45a73ad3663c70083899f1668588a8e
BLAKE2b-256 54a41b60672a5ae8cc90994cb07ed3d2a200339d5bacb7a9dc9dbbfcd1651f8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for midas_peakfit-0.4.2.tar.gz:

Publisher: python-packages.yml on marinerhemant/MIDAS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file midas_peakfit-0.4.2-py3-none-any.whl.

File metadata

  • Download URL: midas_peakfit-0.4.2-py3-none-any.whl
  • Upload date:
  • Size: 100.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for midas_peakfit-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 57eef0268624b631be9de3a34e9b8f5bb5969e2e0dd40ae0273c2fa1fb78997c
MD5 33477f8962d1950d96f077bfffc0bcca
BLAKE2b-256 741a0f2d686b92a6cf555b6f39a28a8c3d7973e2f22a1ae4bdb11091402cdbb5

See more details on using hashes here.

Provenance

The following attestation bundles were made for midas_peakfit-0.4.2-py3-none-any.whl:

Publisher: python-packages.yml on marinerhemant/MIDAS

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page