MD-EXAFS Documentation#

md-exafs is the foundational Python engine and command-line interface for ensemble-averaged Extended X-ray Absorption Fine Structure (EXAFS) spectroscopy from molecular dynamics trajectories.

Part of the MD-EXAFS Ecosystem:

  • MD-EXAFS Core & CLI (md-exafs): Trajectory processing, Debye–Waller extraction, FEFF card/input generation, and streaming batch execution.

  • AiiDA-FEFF: HPC scheduling, batch orchestration, and graph provenance tracking.

  • AiiDAlab-EXAFS: Interactive Jupyter web dashboard.


Interactive browser applications#

The ecosystem includes zero-install WebAssembly applications running entirely within your browser via Pyodide. No server or local installation is required.

Debye–Waller disorder screening

WASM App

Extract path variances (\(\sigma^2\)), third/fourth cumulants, and atomic displacement parameters directly from trajectory files in your browser.

Debye–Waller disorder screening
Nanoparticle cluster builder

WASM App

Generate mono- and bimetallic core-shell nanoparticles (e.g. Au@Ag) with custom shapes, radii, and lattice parameters.

Nanoparticle cluster builder

Quickstart#

Run the full simulation pipeline from the command line:

# Process all Cu sites across all trajectory frames into HDF5
md-exafs pipeline trajectory.xyz Cu --all-sites --all-frames --hdf5 --reuse-potentials --parallel

# Plot the ensemble average and per-path contributions
md-exafs analyze pipeline_output/results.h5 --plot-include average,paths --show

See the CLI Reference for complete options.

Import core domain logic directly without CLI or database overhead:

from ase.build import bulk
from md_exafs.feff_input import FeffConfig, build_feff_inp
from md_exafs.paths import path_chi

# Generate inputs
atoms = bulk("Cu", "fcc", a=3.61)
feff_inp = build_feff_inp(atoms, config=FeffConfig.from_preset("quick"))

# Evaluate fine-structure oscillations
chi = path_chi(k_native, feff_data, r_eff=2.55, degeneracy=12.0, k_out=k_grid)

See the Python API Reference.

For large multi-node campaigns with full data provenance, submit through AiiDA-FEFF:

from aiida.plugins import WorkflowFactory
EnsembleWorkChain = WorkflowFactory("feff.ensemble")
# Dispatches parallel batch shards across HPC cluster nodes

See Ecosystem Integration.


Table of contents#