Official PyTorch implementation of ReciNet: Reciprocal Space-Aware Long-Range Modeling for Crystalline Property Prediction (TMLR 2026).
@article{nie2025recinet,
title={ReciNet: Reciprocal Space-Aware Long-Range Modeling for Crystalline Property Prediction},
author={Nie, Jianan and Xiao, Peiyao and Ji, Kaiyi and Gao, Peng},
journal={arXiv preprint arXiv:2502.02748},
year={2025}
}ReciNet is the reciprocal space-based geometry network, a hybrid neural architecture for crystal property prediction that jointly models short-range chemical bonding and long-range periodic interactions. Crystals exhibit infinite periodic arrangements of atoms, requiring methods that capture both local and global information. ReciNet addresses this by leveraging reciprocal space, the natural domain for crystals. The ReciprocalBlock is plug-and-play, and the module is architecture-agnostic.
We recommend Python 3.10 and CUDA 11.6.
# Create the environment.
conda create --name recinet python=3.10
conda activate recinet
conda install pytorch torchvision torchaudio pytorch-cuda=11.6 -c pytorch -c nvidia # or higher version if you want
conda install pyg -c pyg
python -m pip install -e .All datasets are downloaded automatically through the JARVIS toolkit on the first run, there is no need to manually download the JARVIS or Materials Project datasets.
We use following train/val/test splits and evaluate on five crystal properties:
| Property | Train | Val | Test | Metric |
|---|---|---|---|---|
| Formation energy | 44,578 | 5,572 | 5,572 | MAE (meV/atom) |
| Bandgap (OPT) | 44,578 | 5,572 | 5,572 | MAE (eV) |
| Total energy | 44,578 | 5,572 | 5,572 | MAE (meV/atom) |
| Ehull | 44,296 | 5,537 | 5,537 | MAE (meV) |
| Bandgap (MBJ) | 14,537 | 1,817 | 1,817 | MAE (eV) |
We use following train/val/test splits for formation energy, band gap, bulk modulus, and shear modulus. The bulk/shear modulus splits are available at figshare.
| Property | Train | Val | Test | Metric |
|---|---|---|---|---|
| Formation energy | 60,000 | 5,000 | 4,239 | MAE (meV/atom) |
| Band gap | 60,000 | 5,000 | 4,239 | MAE (eV) |
| Bulk modulus | 4,664 | 393 | 393 | MAE (log(GPa)) |
| Shear modulus | 4,664 | 393 | 393 | MAE (log(GPa)) |
We evaluate on two MatBench tasks :
e_form(132,752 crystals)jdft2d(636 2D crystals)
Edit configs/recinet.yaml to select the dataset and target property:
dataset: dft_3d
target: formation_energy_peratom | Dataset | Available targets |
|---|---|
dft_3d (JARVIS) |
formation_energy_peratom, mbj_bandgap, optb88vdw_bandgap, optb88vdw_total_energy, ehull |
megnet (MP) |
e_form, gap pbe, bulk modulus, shear modulus |
python main.py \
--config configs/recinet.yaml \
--output_dir runs/jarvis_formation_energyReciNet supports custom datasets in the JARVIS Leaderboard format. Prepare a directory containing:
dataset_info.json— metadata describing the datasetid_prop.csv— crystal IDs and target values, listed in train → val → test order- Crystal structure files readable by JARVIS tools
Then run:
python main.py \
--config configs/recinet.yaml \
--output_dir runs/custom_run \
--data_root /path/to/custom_datasetand set the corresponding target in recinet.yaml:
dataset: dft_3d
target: <your_target_name>Use jarvis_populate_data.py as a reference for generating compatible datasets. Predefining the train/val/test split (in id_prop.csv) is required.
For benchmark results, see the paper for full tables results.
This codebase builds upon ComFormer and PotNet. We thank the authors for releasing their code. We also thank the maintainers of JARVIS-tools, Materials Project, and MatBench for providing the datasets and benchmarks.
This project is released under the MIT License — see LICENSE for details.
