Skip to main content

midas-diffract

End-to-end differentiable forward model for High-Energy Diffraction Microscopy (HEDM), covering far-field (FF), near-field (NF), and point-focused (pf-HEDM) geometries. Pixel-exact agreement with the canonical C reference simulators in MIDAS.

Companion paper: Sharma, Zhang, Andrejevic & Cherukara, An End-to-End Differentiable Forward Model for High-Energy Diffraction Microscopy, IUCrJ (in preparation, 2026).

Installation

pip install midas-diffract           # core forward model + losses + optimizer
pip install midas-diffract[hkls]     # also installs midas-hkls for the
                                     # pure-Python reflection-list helper

Optional PyTorch CUDA or MPS back-ends are used automatically if available.

Quick start

import torch
import midas_diffract as md
from midas_hkls import Lattice, SpaceGroup           # optional, see [hkls]

# Detector + scan geometry
geom = md.HEDMGeometry(
    Lsd=1_000_000.0,              # um
    y_BC=1024.0, z_BC=1024.0,
    px=200.0,
    omega_start=0.0, omega_step=0.25, n_frames=1440,
    n_pixels_y=2048, n_pixels_z=2048,
    min_eta=6.0,
    wavelength=0.172979,           # Angstroms
)

# Reflection list: either compute from a SpaceGroup + Lattice via the
# midas-hkls helper, or supply (hkls_cart, thetas, hkls_int) yourself
# (e.g. parsed from MIDAS GetHKLList output).
sg = SpaceGroup.from_number(225)                        # FCC
lat = Lattice.for_system("cubic", a=4.08)               # Au
hkls_cart, thetas, hkls_int = md.hkls_for_forward_model(
    sg, lat, wavelength_A=geom.wavelength, two_theta_max_deg=15.0,
)

model = md.HEDMForwardModel(
    hkls=hkls_cart, thetas=thetas, geometry=geom, hkls_int=hkls_int,
)

# Forward pass: grain state -> predicted spots. All inputs are leaves
# of the autograd graph.
euler = torch.tensor([[45.0, 30.0, 60.0]], requires_grad=True) * (3.14159 / 180)
pos   = torch.tensor([[0.0, 0.0, 0.0]],  requires_grad=True)
latc  = torch.tensor([4.08, 4.08, 4.08, 90.0, 90.0, 90.0], requires_grad=True)
spots = model(euler, pos, lattice_params=latc)

# Scalar loss -> gradients w.r.t. orientation, position, lattice
loss = ((spots.omega * spots.valid) ** 2).sum()
loss.backward()

Output modes

  • md.HEDMForwardModel.predict_spot_coords(spots, space="angular") — returns (2θ, η, ω) in radians for each valid reflection (FF and pf-HEDM).
  • md.HEDMForwardModel.predict_spot_coords(spots, space="detector") — returns (y_pixel, z_pixel, frame_nr) in fractional units (FF and pf-HEDM).
  • md.HEDMForwardModel.predict_images(spots, ...) — renders a differentiable 3D detector volume via Gaussian splatting (NF-HEDM output mode).

Validation

The forward model has been validated to pixel-exact agreement against the canonical C simulators ForwardSimulationCompressed and simulateNF in the MIDAS distribution. See the companion paper and the MIDAS repository fwd_sim/paper/ directory for reproducibility scripts.

Scope

midas-diffract v0.1.x is deliberately focused on the forward model and its gradient chain. The following capabilities build on this substrate and are released separately as they mature:

  • Sub-voxel grain mixtures
  • Physics-informed regularisation
  • Bayesian uncertainty quantification via HMC / variational inference
  • Temporal 4D-HEDM tracking
  • Coupling to differentiable crystal plasticity (JAX-FEM)
  • EM spot ownership for ambiguous FF patterns

Citation

If you use midas-diffract in published work, please cite the companion paper.

Licence

BSD-3-Clause.

Metadata

Release files for midas-diffract 0.10.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-diffract 0.10.0
File Size Uploaded
midas_diffract-0.10.0.tar.gz 107.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for midas-diffract 0.10.0
File Interpreter ABI Platform
midas_diffract-0.10.0-py3-none-any.whl Python 3 none any Details

Total release size: 168.2 kB

Release files / midas_diffract-0.10.0.tar.gz

Download URL midas_diffract-0.10.0.tar.gz
Size 107.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8f6dc1e633c88f8756c9fd439f95dd2e242f6054d8b51ec735bba36157e66b8a
BLAKE2b-256 checksum
How to use checksums
744e9c68a1fcac0662c029d32a084cbde9fd91993158d1cdcfaaf9aaa35d714a
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 Oct 14, 2026.

Transparency log

Release files / midas_diffract-0.10.0-py3-none-any.whl

Download URL midas_diffract-0.10.0-py3-none-any.whl
Size 60.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4d5f901a7ed5ab4ff3488552698b2e8da9ab1355146fb99f5b7fc1334ee0aefc
BLAKE2b-256 checksum
How to use checksums
7d04a5e9628d88ae09a672e116ac4cc79bf18d05ee25cb47d3867c50a762ee92
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 Oct 14, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.10.0 This release

2 release files

0.9.0

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.4.0

2 release files

0.2.0

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.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