Open AlphaDiffract

arXiv | GitHub

Automated crystallographic analysis of powder X-ray diffraction data.

AlphaDiffract is a multi-task 1D ConvNeXt model that takes a powder X-ray diffraction (PXRD) pattern and simultaneously predicts:

Output Description
Crystal system 7-class classification (Triclinic β†’ Cubic)
Space group 230-class classification
Lattice parameters 6 values: a, b, c (Γ…), Ξ±, Ξ², Ξ³ (Β°)

This release contains a single model trained exclusively on Materials Project structures (publicly available data). It is not the 10-model ensemble reported in the paper β€” see Performance for details.

Quick Start

pip install torch safetensors
huggingface-cli download linked-liszt/OpenAlphaDiffract --local-dir OpenAlphaDiffract
import torch
import numpy as np
from OpenAlphaDiffract.model import AlphaDiffract

model = AlphaDiffract.from_pretrained("OpenAlphaDiffract", device="cpu")

# 8192-point intensity pattern, normalized to [0, 100]
pattern = np.load("my_pattern.npy").astype(np.float32)
pattern = (pattern - pattern.min()) / (pattern.max() - pattern.min() + 1e-10) * 100.0
x = torch.from_numpy(pattern).unsqueeze(0)

with torch.no_grad():
    out = model(x)

cs_probs = torch.softmax(out["cs_logits"], dim=-1)
sg_probs = torch.softmax(out["sg_logits"], dim=-1)
lp = out["lp"]  # [a, b, c, alpha, beta, gamma]

print("Crystal system:", AlphaDiffract.CRYSTAL_SYSTEMS[cs_probs.argmax().item()])
print("Space group:   #", sg_probs.argmax().item() + 1)
print("Lattice params:", lp[0].tolist())

See example_inference.py for a complete runnable example.

Files

File Description
model.safetensors Model weights (safetensors format, ~35 MB)
model.py Standalone model definition (pure PyTorch, no Lightning)
config.json Architecture and training hyperparameters
maxsub.json Space-group subgroup graph (230Γ—230, used as a registered buffer)
example_inference.py End-to-end inference example
LICENSE BSD 3-Clause

Input Format

  • Length: 8192 equally-spaced intensity values
  • 2ΞΈ range: 5–20Β° (monochromatic, 20 keV)
  • Preprocessing: floor negatives at zero, then rescale to [0, 100]
  • Shape: (batch, 8192) or (batch, 1, 8192)

Architecture

1D ConvNeXt backbone adapted from Liu et al. (2022):

Input (8192) β†’ [ConvNeXt Block Γ— 3 with AvgPool] β†’ Flatten (560-d)
  β”œβ”€ CS head:  MLP 560β†’2300β†’1150β†’7    (crystal system)
  β”œβ”€ SG head:  MLP 560β†’2300β†’1150β†’230  (space group)
  └─ LP head:  MLP 560β†’512β†’256β†’6      (lattice parameters, sigmoid-bounded)
  • Parameters: 8,734,989
  • Activation: GELU
  • Stochastic depth: 0.3
  • Head dropout: 0.5

Performance

This is a single model trained on Materials Project data only (no ICSD). Metrics on the best validation checkpoint (epoch 11):

Metric Simulated Val RRUFF (experimental)
Crystal system accuracy 74.88% 60.35%
Space group accuracy 57.31% 38.28%
Lattice parameter MAE 2.71 β€”

The paper reports higher numbers from a 10-model ensemble trained on Materials Project + ICSD combined data. This open-weights release covers only publicly available training data.

Training Details

Data ~146k Materials Project structures, 100 GSAS-II simulations each
Augmentation Poisson + Gaussian noise, rescaled to [0, 100]
Optimizer AdamW (lr=2e-4, weight_decay=0.01)
Scheduler CyclicLR (triangular2, 6-epoch half-cycles)
Loss CE (crystal system) + CE + GEMD (space group) + MSE (lattice params)
Hardware 1Γ— NVIDIA H100, float32
Batch size 64

Citation

@article{andrejevic2026alphadiffract,
  title   = {AlphaDiffract: Automated Crystallographic Analysis of Powder X-ray Diffraction Data},
  author  = {Andrejevic, Nina and Du, Ming and Sharma, Hemant and Horwath, James P. and Luo, Aileen and Yin, Xiangyu and Prince, Michael and Toby, Brian H. and Cherukara, Mathew J.},
  year    = {2026},
  eprint  = {2603.23367},
  archivePrefix = {arXiv},
  primaryClass  = {cond-mat.mtrl-sci},
  doi     = {10.48550/arXiv.2603.23367},
  url     = {https://arxiv.org/abs/2603.23367}
}

License

BSD 3-Clause β€” Copyright 2026 UChicago Argonne, LLC.

Links

Downloads last month
25
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ Ask for provider support

Space using linked-liszt/OpenAlphaDiffract 1

Papers for linked-liszt/OpenAlphaDiffract