CrystAF
Weights for Where Should Physics Enter a Molecular Crystal Generator? (Haocheng Tang, Junmei Wang, Wengong Jin).
CrystAF is an all-atom molecular crystal flow map z_t = z_r + (t - r) U(z_r, r, t), distilled
from Clari-M with AnyFlow. One adapter serves 8-50
NFE. CrystAF-UMA is CrystAF post-trained with negative-aware fine-tuning, using the UMA-OMC
potential as a black-box reward: energy, force, stress, eligibility and cell volume.
Code, configs and evaluation scripts: https://github.com/HaCTang/CrystAF
Results
200 CSD validation families x 20 samples, 32 NFE (Clari-M: 99 NFE), summary.paper_bootstrap.
| Model | PB % ↑ | Clash % ↓ | Vol.Err ↓ | PDD ↓ | ms / sample |
|---|---|---|---|---|---|
| Clari-M | 85.30 | 9.05 | 1.83 | 10.19 | 289 |
| CrystAF-base | 89.32 | 11.33 | 1.95 | 10.44 | 396 |
| CrystAF-UMA | 93.01 | 7.98 | 1.88 | 10.25 | 398 |
| CrystAF-UMA + 10 UMA relaxation steps | 93.65 | 4.41 | 1.95 | 10.39 | 2462 |
| CrystAF-UMA + parity, MMFF, declash | 93.43 | 2.80 | 1.93 | 10.78 | 930 |
The classical chain also raises R/S stereo agreement from about 48% to 95%. The generator cannot learn stereochemistry because its graph features are identical for both enantiomers.
Files
| File | Model |
|---|---|
crystaf-cont3-step2000.pt |
CrystAF-base (distilled, before post-training) |
crystaf-uma-rl-seed929-epoch6.pt |
CrystAF-UMA |
teacher-rank800-pbnft-epoch1.pt |
Clari-M distillation teacher (LoRA merged) |
crystaf-nft-mfpure-epoch12.pt |
PoseBusters-ranked reward comparison |
clari-m-uma-nft-epoch1.pt, clari-l-uma-nft-epoch1.pt |
UMA post-training on Clari-M / Clari-L |
molcrystalflow-uma-nft-phaseB-epoch12.pt |
UMA post-training on MolCrystalFlow |
Each CrystAF file holds net_state_dict, ema_state_dict and meta; evaluate with the EMA
weights. The Clari-M backbone is needed to build the network and is not redistributed here:
from huggingface_hub import hf_hub_download
student = hf_hub_download("Haocheng1/CrystAF", "crystaf-uma-rl-seed929-epoch6.pt")
backbone = hf_hub_download("the-matter-lab/clari", "clari-med.ckpt")
Sample with the interval flow-map sampler (MEANFLOW_SAMPLER_MODE=interval), not Clari's Heun
sampler, on the grid t_i = (i/N)^rho with rho = 0.30 / 0.75 / 1 for N = 8 / 16 / 32-50. The
evaluation data are derived from the CSD and cannot be redistributed; the GitHub repository
documents how to build them.
License
CC-BY-NC-4.0, inherited from the Clari model weights. Please also credit the-matter-lab/clari.
@misc{tang2026physics,
title = {Where Should Physics Enter a Molecular Crystal Generator?},
author = {Tang, Haocheng and Wang, Junmei and Jin, Wengong},
year = {2026}
}
Model tree for Haocheng1/CrystAF
Base model
the-matter-lab/clari