MaterialsFramework
MaterialsFramework provides a single, uniform API for 20+ machine learning interatomic potentials (MLIPs), covering single-point calculations, structure relaxation, and molecular dynamics, plus the property analyzers and structure-generation tools that build on them. Swapping one MLIP for another, or for the licensed VASPCalculator, means changing one line of code.
Key Features
- Run single-point calculations and structure relaxations across 20+ ML interatomic potentials through one shared
BaseCalculatorinterface, or swap in the licensedVASPCalculatorwithout changing calling code - Accept
ase.Atoms,pymatgen.Structure, andpymatgen.Moleculeinterchangeably as calculator input - Run molecular dynamics with NVE and a broad set of NVT/NPT thermostats and barostats on calculators that support it
- Compute formation energy, elastic constants, phonons, stacking faults, surface/binding energies, and reaction barriers with 14 property analyzers, each paired with a transformation that generates the structures it needs
- Generate special quasirandom structures, cluster expansion models, phase-field simulations, and stability maps with the built-in tools
- Look up calculators, analyzers, transformations, and tools by name, without importing every MLIP backend at once
Supported MLIPs
| MLIP | Extra | Package | API | Repository | Paper |
|---|---|---|---|---|---|
| ALIGNN | alignn |
alignn |
API | Repo | Paper |
| Allegro | allegro |
nequip-allegro |
API | Repo | Paper |
| AlphaNet | alphanet |
msc-alphanet |
API | Repo | Paper |
| CHGNet | chgnet |
chgnet |
API | Repo | Paper |
| DeePMD | deepmd |
deepmd-kit |
API | Repo | Paper |
| EqNorm | eqnorm |
eqnorm |
API | Repo | N/A |
| EquFlash | N/A | GGNN (git-only) |
API | Repo | Paper |
| EqV2 | eqv2 |
fairchem-core |
API | Repo | Paper |
| eSEN | esen |
fairchem-core |
API | Repo | Paper |
| GPTFF | N/A | gptff (git-only) |
API | Repo | Paper |
| GRACE | grace |
tensorpotential |
API | Repo | Paper |
| HIENet | hienet |
hienet |
API | Repo | Paper |
| M3GNet | matgl |
matgl |
API | Repo | Paper |
| MACE | mace |
mace-torch |
API | Repo | Paper |
| MatRIS | matris |
matris |
API | Repo | Paper |
| MatterSim | mattersim |
mattersim |
API | Repo | Paper |
| MEGNet | matgl |
matgl |
API | Repo | Paper |
| NequIP | nequip |
nequip |
API | Repo | Paper |
| Nequix | nequix |
nequix |
API | Repo | Paper |
| NewtonNet | newtonnet |
newtonnet |
API | Repo | Paper |
| ORB | orb |
orb-models |
API | Repo | Paper |
| PetMad | petmad |
upet |
API | Repo | Paper |
| PosEGNN | N/A | N/A | API | Repo | N/A |
| SevenNet | sevennet |
sevenn |
API | Repo | Paper |
| TACE | tace |
TACE |
API | Repo | Paper |
| UMA | uma |
fairchem-core |
API | Repo | Paper |
Non-MLIP calculators: RandomCalculator (dependency-free testing stub) and VASPCalculator (external licensed VASP backend).
Property Analyzers
| Analyzer | Description |
|---|---|
ANNNIStackingFaultAnalyzer |
ANNNI-based intrinsic and extrinsic stacking fault energies |
BainPathAnalyzer |
Energy along the FCC-to-BCC Bain transformation path |
CTEAnalyzer |
Coefficient of thermal expansion from NPT-MD volume trends |
CubicElasticConstantsAnalyzer |
Cubic elastic constants and derived moduli (B, G, E, ν) |
ElasticConstantsAnalyzer |
Full elastic tensor and Voigt-Reuss-Hill averages |
EOSAnalyzer |
Equation-of-state curve fitting from E-V data |
FormationEnergyAnalyzer |
Formation energy per atom |
HSolubilityAnalyzer |
Hydrogen insertion and solution energies |
NEBAnalyzer |
Nudged elastic band minimum energy path and reaction barrier |
PhonopyAnalyzer |
Total/projected phonon DOS and thermal properties |
Phono3pyAnalyzer |
Anharmonic force constants and lattice thermal conductivity |
SBEAnalyzer |
Surface binding energies, a first-principles proxy for sputtering resistance |
SurfaceAnalyzer |
Slab surface energies for a given Miller index |
USFEAnalyzer |
Generalized stacking fault energy curves and unstable SFE |
Tools
| Tool | Description |
|---|---|
BondLatticeParameter |
Lattice parameter estimation from bond lengths for FCC/BCC/HCP alloys |
ClusterExpansion |
Cluster expansion model construction and fitting |
CoherentStabilityMap |
Stability map generation with a coherent-elastic correction to the Gibbs energy Hessian |
PhaseFieldModel |
Cahn-Hilliard phase-field simulations |
Sqs2tdb |
Converts SQS output files to TDB format for CALPHAD workflows (PhaseForge) |
SqsGenerator |
Special quasirandom structure generation |
StabilityMap |
Composition-temperature stability map generation |
TrajectoryObserver |
Records energies, forces, stresses, and trajectory frames during relaxation or MD |
Installation
We recommend uv for dependency management, though a plain pip install also works. Use the Extra column in the Supported MLIPs table above to pick which MLIP extras to add. Some backends require additional installation steps documented in the full installation guide.
uv
uv add materialsframework
Add one or more compatible MLIP extras:
# Single MLIP
uv add "materialsframework[chgnet]"
# Compatible multi-MLIP stack
uv add "materialsframework[chgnet,matgl,sevennet]"
pip
pip install materialsframework
Add an MLIP extra the same way:
pip install "materialsframework[chgnet]"
See the installation guide for full setup instructions and MLIP Conflicts for conflict and optional-dependency details.
Quickstart
Calculators
Every calculator except MEGNetCalculator accepts ase.Atoms or pymatgen.Structure and exposes the same relax()/calculate() interface, regardless of which MLIP backs it.
from ase.build import bulk
from materialsframework.calculators import MACECalculator
structure = bulk("Cu", crystalstructure="fcc", a=3.6, cubic=True)
calc = MACECalculator()
result = calc.relax(structure)
print(result["final_structure"])
print(result["energy"])
calculate() evaluates the same properties on the structure exactly as given, with no relaxation step:
result = calc.calculate(structure)
print(result["energy"])
print(result["forces"])
Molecular Dynamics
Calculators that subclass BaseMDCalculator add a run() method for NVE and multiple NVT/NPT thermostats and barostats.
from ase.build import bulk
from materialsframework.calculators import CHGNetCalculator
structure = bulk("Fe", crystalstructure="bcc", a=2.87, cubic=True)
calc = CHGNetCalculator(ensemble="nvt_nose_hoover", temperature=300)
result = calc.run(structure, steps=1000)
print(result["final_structure"])
Property Analyzers
Analyzers pair with a transformation of the same name: the transformation generates the structures a calculation needs, and the analyzer orchestrates the calculator calls and combines the results.
from ase.build import bulk
from materialsframework.analysis import FormationEnergyAnalyzer
from materialsframework.calculators import CHGNetCalculator
structure = bulk("NaCl", crystalstructure="rocksalt", a=5.64)
analyzer = FormationEnergyAnalyzer(calculator=CHGNetCalculator())
result = analyzer.calculate(structure, is_relaxed=True)
print(result["formation_energy"])
Tools
Standalone utilities such as special quasirandom structure generation, cluster expansion, and phase-field modeling live in materialsframework.tools.
from materialsframework.tools import SqsGenerator
generator = SqsGenerator(iterations=1000)
result = generator.generate("Fe0.5Co0.5", crystal_structure="bcc", supercell_size=(2, 2, 2))
print(result["structure"])
print(result["objective"])
Registries
Look up calculators, analyzers, transformations, and tools by name to swap in a new backend without importing every MLIP dependency up front.
from materialsframework.calculators import get_calculator
calc = get_calculator("chgnet")
License
Distributed under the GPL-3.0-or-later License. See GPL-3.0 for details.
Citation
If you use MaterialsFramework in your research, please cite:
Sarıtürk, D., & Arroyave, R. (2025). MaterialsFramework. Zenodo. https://doi.org/10.5281/zenodo.15731044
@software{sariturk_2025_15731044,
author = {Sarıtürk, Doğuhan and Arroyave, Raymundo},
title = {MaterialsFramework},
month = jun,
year = 2025,
publisher = {Zenodo},
doi = {10.5281/zenodo.15731044},
url = {https://doi.org/10.5281/zenodo.15731044},
}
Metadata
Release files for materialsframework 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| materialsframework-1.0.0.tar.gz | 115.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| materialsframework-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 286.5 kB
Release files / materialsframework-1.0.0.tar.gz
| Download URL | materialsframework-1.0.0.tar.gz |
|---|---|
| Size | 115.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
fe5bb77950ba4421158ce73c9f9a694359a4654560e48111e0cec1532a8c2285
|
|
BLAKE2b-256 checksum How to use checksums |
746c0766ff020a01ba9ead636f789a5a236d6ad10a47de6dbd39a59fc5326770
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Aug 4, 2026.
Transparency logRelease files / materialsframework-1.0.0-py3-none-any.whl
| Download URL | materialsframework-1.0.0-py3-none-any.whl |
|---|---|
| Size | 170.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0a2c776c4f5c58577d4f953aad48379888ccb9e949367acc10cb3f661800fcf6
|
|
BLAKE2b-256 checksum How to use checksums |
022773b86354c31709c3c1253073991acaa0566add953f10a95cfa64d70549b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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 Aug 4, 2026.
Transparency log