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.

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.1.0.tar.gz (65.5 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.1.0-py3-none-any.whl (69.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: midas_peakfit-0.1.0.tar.gz
  • Upload date:
  • Size: 65.5 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.1.0.tar.gz
Algorithm Hash digest
SHA256 0aa6b70b5e139d24efacc646b566a0f6f3e7c45e6c50861d58e6c00c39c17000
MD5 dfc23613d06569243ea545ce2cd6eab2
BLAKE2b-256 37b47b5cc5fc05e91886dea5b6e08bed8e22349d3536571b8959b0cdf149620b

See more details on using hashes here.

Provenance

The following attestation bundles were made for midas_peakfit-0.1.0.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.1.0-py3-none-any.whl.

File metadata

  • Download URL: midas_peakfit-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 69.5 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.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a179b1d166502eb0ab8d11920fa070dacb7c5cab32c829d5f17771790e98ee2d
MD5 62577986c5c13ad22a298167bc8dc495
BLAKE2b-256 51bd0c39230c7ca666098241aeba8be99a459eb0da8c8ecb134cda619e5a6ec5

See more details on using hashes here.

Provenance

The following attestation bundles were made for midas_peakfit-0.1.0-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