Skip to main content

midas-fit-grain

PyTorch single- and multi-grain refiner. Drop-in replacement for the C executables FitPosOrStrainsOMP / FitPosOrStrainsGPU in MIDAS FF-HEDM.

Status: 0.2.x — sparse-output pre-allocation fix (trailing-skipped seeds no longer truncate OrientPosFit / FitBest / ProcessKey) and vectorized pixel-residual fast path (~N_g× fewer kernel launches per LM iteration vs the per-grain Python loop). Park22 + Wenxi CP-Ti real-data validated. The C path remains the ff_MIDAS default; this package is opt-in via --refine-backend python.

Notebooks

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

What it does

For each grain in SpotsToIndex.csv:

  • Reads matched spots from ExtraInfo.bin and the seed orientation from BestPos_*.csv (the indexer's per-spot output).
  • Refines 12 parameters: position (3) + Bunge Euler (3) + lattice (6).
  • Writes byte-identical OrientPosFit.bin / FitBest.bin / Key.bin consumed by the existing ff_MIDAS.py merge stage.

Solvers

--solver {lbfgs,adam,lm,nelder_mead} — default lbfgs.

Loss functions

--loss {pixel,angular,internal_angle} — default pixel.

Loss Residual Equivalent C function
pixel (y, z) pixel positions on detector FitErrorsPosT (FitPosOrStrainsOMP)
angular (2θ, η, ω) in radians optimize_single_grain (midas-diffract)
internal_angle angle between ĝ_pred and ĝ_obs (rad) CalcInternalAngle (FitOrientationOMP)

Fit modes

--mode {iterative,all_at_once} — default iterative.

  • iterative: position → re-match → orientation → re-match → strain → re-match → joint polish (matches FitPosOrStrainsOMP default behavior).
  • all_at_once: 12 params jointly, association computed once at entry, no mid-fit re-match.

Backends

MIDAS_FIT_GRAIN_DEVICE and MIDAS_FIT_GRAIN_DTYPE follow the same precedence contract as midas-index (cuda > mps > cpu auto-detect; f64 on CPU, f32 on accelerators). Per-grain refinement is batched into a single forward call across the block, so scaling depends on B × S (grains × spots/grain), not per-grain Python overhead.

CLI

midas-fit-grain paramstest.txt <blockNr> <numBlocks> <numLines> <numProcs> \
                [--solver lbfgs] [--loss pixel] [--mode iterative]

Argv shape mirrors the C binary so the ff_MIDAS subprocess line is one-for-one.

Download files

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

Source Distribution

midas_fit_grain-0.5.4.tar.gz (148.2 kB view details)

Uploaded Source

File details

Details for the file midas_fit_grain-0.5.4.tar.gz.

File metadata

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

File hashes

Hashes for midas_fit_grain-0.5.4.tar.gz
Algorithm Hash digest
SHA256 b1b59946589f3bd421a0beb6d946ae3f88a847169afc33dde5b2f0ed31aa70e3
MD5 e54a79c4ea5283bb6c4a0b2c748c6540
BLAKE2b-256 db40a315ce7fabb356e2428fc96cded4db35d2a97a7db5ae52184d0ec28a1024

See more details on using hashes here.

Provenance

The following attestation bundles were made for midas_fit_grain-0.5.4.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.

Release history Release notifications | RSS feed

0.9.0

1 file

0.8.1

1 file

0.8.0

1 file

0.7.0

1 file

0.6.0

1 file

0.5.6

1 file

0.5.5

1 file

This release

0.5.4 This release

1 file

0.5.3

1 file

0.5.2

1 file

0.5.1

1 file

0.4.1

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.0

2 files

Supported by

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