Metadata-Version: 2.4
Name: midas-grain-odf
Version: 0.1.3
Summary: Differentiable per-grain orientation distribution functions from FF-HEDM data
Author-email: Hemant Sharma <hsharma@anl.gov>
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Topic :: Scientific/Engineering :: Physics
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: midas-params>=0.9.0
Requires-Dist: numpy>=1.20
Requires-Dist: torch>=2.0
Requires-Dist: pandas>=1.5
Requires-Dist: h5py>=3.0
Requires-Dist: hdf5plugin>=4.0
Requires-Dist: midas-diffract>=0.1
Requires-Dist: midas-stress>=0.1
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: matplotlib>=3.5; extra == "dev"
Dynamic: license-file

# midas-grain-odf

Differentiable per-grain orientation distribution function (ODF) inversion
from far-field HEDM data. Closes the gap left open by Nygren et al. 2019
(*IOP Conf. Ser. MSE* **580** 012018) — recovers the intensity-weighted
ODF, not just the GOE envelope.

See [dev/implementation_plan.md](dev/implementation_plan.md) for the
design rationale and roadmap.

## Status

Alpha. Synthetic plant-and-recover validation only. Real-data path under
construction.

## Install

```bash
cd packages/midas_grain_odf
pip install -e .[dev]
```

The package depends on the differentiable HEDM forward model in
`fwd_sim/hedm_forward.py`. That module is loaded by relative import; ensure
`MIDAS/fwd_sim` is on `PYTHONPATH` when using the package outside the
MIDAS repo.

## Notebooks

Worked-example Jupyter notebooks live in `notebooks/`. They are **not shipped with `pip install`** — get them by cloning the [MIDAS repository](https://github.com/marinerhemant/MIDAS/tree/master/packages/midas_grain_odf/notebooks).

## Quickstart (synthetic)

```bash
cd packages/midas_grain_odf
python -m pytest tests/test_synth_particle.py -xvs
```

## Public API

```python
from midas_grain_odf import (
    ParticleODF, BinghamMixtureODF, VoxelGridODF,
    fit_grain_odf,
)
```
