Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
195 changes: 72 additions & 123 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,176 +6,125 @@

## 🚀 Introduction

**PaddleMaterials** is an end-to-end AI4Materials toolkit built on the **PaddlePaddle** deep learning framework. Designed as a data-mechanism dual-driven platform for developing and deploying foundation models in materials science, **PPMat** enables researchers to efficiently build AI models and accelerate material discovery using pretrained models.
**PaddleMaterials** is a data-mechanism dual-driven, development and deployment of AI4Materials foundation models, end to end toolkit based on PaddlePaddle deep learning framework for materials science and engineering. **PPMat** (represents PaddleMaterials in the following text) is designed to help researchers more efficiently build AI4Materials foundation models and explore, discover, and develop new materials based on deployed pretrained models. **PPMat** has supported inorganic materials and part of organic molecules, and will support more types of materials including polymers, organic molecules, catalysts, and so on. It has supported some representative models including the equivalent graph networks-based model, diffusion model, multi-modal model, and will support more kinds of deep learing models and agents works related to AI4Material fields in the feature.

<p align="left">
<img src="docs/overview_en.png" align="middle" width = "1000"/>
<p align="left">

### Core Capabilities
**Inorganic materials**, characterized by their symmetrical and periodic structures, exhibit a wide range of properties and are widely applied in various fields, from electronic devices to energy applications. Traditional experimental and computational methods for discovering crystalline materials are often time-consuming and expensive. Data-driven approaches to material discovery have the power to model the highly complex atomic systems within crystalline materials, paving the way for rapid and accurate material discovery.

| Task | Description | Typical Applications |
|------|-------------|---------------------|
| **Property Prediction (PP)** | Predict material properties from structure | Formation energy, band gap, elastic moduli |
| **Structure Generation (SG)** | Generate novel crystal structures | High-throughput screening, inverse design |
| **Interatomic Potential (IP)** | Replace DFT with ML potentials | Molecular dynamics, large-scale simulations |
| **Electronic Structure (ES)** | Predict electronic properties | Band structure, density of states |
| **Spectrum Elucidation (SE)** | Reconstruct structures from spectra | NMR structure elucidation |
**Organic materials**, distinguished by covalently linked, directionally bonded networks, mainly defined as a carbon–hydrogen or carbon–carbon bond chemical compound. These traits support core applications including flexible displays, organic photovoltaics, high-energy-density battery electrodes, advanced separation membranes, catalyts. The vast compositional and conformational space of organic molecules makes trial-and-error synthesis and ab-initio simulations slow and costly. Data-driven methods that fuse high-throughput datasets, graph-based representations, and deep generative models rapidly learn structure–property links, enabling fast virtual screening and rational design for more agile, sustainable advances in organic materials.

### Supported Materials
**Polymer materials**, characterized by their large molecular weight and complex molecular structures and built from long-chain macromolecules with tunable architectures (homopolymer, block, graft) and morphologies (amorphous, semicrystalline, cross-linked), offer lightweight, processable, and programmable mechanical, thermal, optical, and transport properties for coatings, membranes, composites, and flexible electronics. The combinatorial design space—monomer choice, sequence, tacticity, molecular-weight distribution, additives, and processing history—plus multi-scale physics makes Edisonian discovery and brute-force simulation slow and costly. Data-driven polymer informatics that fuses high-throughput measurements with graph/sequence representations and physics-guided neural surrogates learns structure-processing-property links, while generative and active-learning workflows target Tg, modulus, permeability, dielectric constant, and recyclability for rapid, sustainable polymer discovery.

- **Inorganic Crystals** - Well-supported with multiple datasets (MP2018, MP2024, JARVIS) and pretrained models
- **Organic Molecules** - Support for small molecule datasets (QM9) and property prediction
- *Polymers, catalysts, and amorphous materials are under development*
**Catalysts materials**, as key components in chemical reactions, play a crucial role in the development of new materials and technologies and spanning heterogeneous surfaces (metals, alloys, oxides, zeolites), homogeneous/organometallic complexes, and electrocatalysts, control reaction rates and selectivity across chemicals, energy, and environmental remediation. Discovery is hampered by vast compositional/structural spaces, site heterogeneity, competing pathways, and operando effects (adsorption, kinetics, deactivation) that challenge trial-and-error and exhaustive DFT. Data-driven methods—surrogate models for adsorption energies and barriers (e.g., graph neural networks), learned electronic/structural descriptors, and generative design coupled with Bayesian/active learning and automated experimentation—enable fast screening and rational optimization, accelerating catalysts for CO₂ reduction, ammonia synthesis, fuel-cell reactions, and selective oxidations.

### Why PaddleMaterials?

- ✅ **Rich Pretrained Models** - 50+ pretrained models ready for inference
- ✅ **Multi-Task Integration** - Unified framework across PP, SG, MLIP, MLES, SE
- ✅ **Domestic Hardware Support** - Full support for MetaX GPUs and NVIDIA GPUs
- ✅ **PaddlePaddle Ecosystem** - Seamless integration with PaddlePaddle tools
- ✅ **Production-Ready** - Distributed training, mixed precision, checkpoint recovery

---
**Amorphous materials**, have no detectable crystal structure.its characteristic of atomic arrangement is more like liguid and has no long-range periodicity. It has attracted increasing attention duo to its broad applciations in optoelectronics, catalysis, and batteries. Its structure-property relationship is highly complex and sensitive to disorder, making it challenging to predict and design.

## 📣 News

🔥 **2025.09.25**: The **MetaX** has supported all models of multiple tasks including MLIP, MLES, PP, SG, SE. Welcome to run PaddleMaterials on MetaX chips. To experience the MetaX chip in a public cloud environment, please refer to this [PaddleMaterials_MetaX_README](./docs/MetaX/PaddleMaterials_MetaX_README.md). Pleare reference to [SupportedHardwareList](./docs/multi_device.md) for more multi-hardware adaption information.

---
🔥 **2025.09.12**: The **Suzhou Laboratory** has established a novel model DiffNMR based on PaddleMaterials, a novel end-to-end framework that leverages a conditional discrete diffusion model for de novo molecular structure elucidation from NMR spectra. For more information, please refer to [DiffNMR](./research/DiffNMR/README.md).

## 📑 Tasks
🔥 **2025.07.01**: The **Suzhou Laboratory** has established a novel framework based on PaddleMaterials, combining an active learning workflow with conditional-diffusion-based structure generation, thereby achieving unprecedented expansion of two-dimensional material databases. For more information, please refer to [ML2DDB](./research/ML2DDB/README.md).

| Task | Description | Link |
|------|-------------|------|
| **Property Prediction (PP)** | Predict formation energy, band gap, elastic properties | [README](property_prediction/README.md) |
| **Structure Generation (SG)** | Generate new crystal structures with diffusion models | [README](structure_generation/README.md) |
| **Interatomic Potential (IP)** | DFT-accurate potentials for molecular dynamics | [README](interatomic_potentials/README.md) |
| **Electronic Structure (ES)** | Predict electronic structure properties | [README](electronic_structure/README.md) |
| **Spectrum Elucidation (SE)** | Reconstruct molecular structures from NMR spectra | [README](spectrum_elucidation/README.md) |

---
## 📑 Task
- [MLIP-Machine Learning Interatomic Potential](interatomic_potentials/README.md)
- [MLES-Machine Learning Electronic Structure](electronic_structure/README.md)
- [PP-Property Prediction](property_prediction/README.md)
- [SG-Structure Generation](structure_generation/README.md)
- [SE-Spectrum Elucidation](spectrum_elucidation/README.md)

## 🔧 Installation

Please refer to the installation [document](Install.md) for your hardware environment. See [SupportedHardwareList](./docs/multi_device.md) for more multi-hardware adaptation information.
Please refer to the installation [document](Install.md) on your harware environment reference to [SupportedHardwareList](./docs/multi_device.md).

---

## ⚡ Get Started

### Property Prediction

Predict material formation energy using a pretrained MEGNet model:

```bash
python property_prediction/predict.py \
--model_name='megnet_mp2018_train_60k_e_form' \
--weights_name='best.pdparams' \
--cif_file_path='./property_prediction/example_data/cifs/' \
--save_path='result.csv'
```

### Structure Generation

Generate novel crystal structures:

```bash
python structure_generation/predict.py \
--model_name='mattergen_mp20' \
--num_structures=100 \
--save_path='generated_structures/'
```

### Interatomic Potentials

Run molecular dynamics with ML potentials:

PaddleMaterials offers multiple built-in models that can be directly used for inference. Taking the `megnet_mp2018_train_60k_e_form` model as an example (a MEGNet model trained on the MP2018 dataset for material formation energy prediction), use the following command for inference:
```bash
python interatomic_potentials/run_md.py
--model_name='mattersim_1M'
--structure_path='input.cif'
--temperature=300
python property_prediction/predict.py --model_name='megnet_mp2018_train_60k_e_form' --weights_name='best.pdparams' --cif_file_path='./property_prediction/example_data/cifs/' --save_path='result.csv'
```

---

### Train Your Own Model

For training and fine-tuning, refer to the [documentation](get_started.md).

### Contribute to PaddleMaterials

For developer, please refer to [architecture](docs/ARCHITECTURE_ch.md).

---

## 🎯 Available Pretrained Models

| Task | Models | Dataset |
|------|--------|---------|
| **Property Prediction** | MEGNet, iComformer, DimeNet++ | MP2018, MP2024, JARVIS |
| **Structure Generation** | MatterGen, DiffCSP | MP20, ALEX |
| **Interatomic Potentials** | CHGNet, MatterSim | MPTRJ |
| **Electronic Structure** | InfGCN | Custom datasets |

Full model list: See [MODEL_REGISTRY](ppmat/models/__init__.py)

---

## ⭐️ Star History

[![Star History Chart](https://api.star-history.com/svg?repos=PaddlePaddle/PaddleMaterials&type=date&legend=top-left)](https://www.star-history.com/#PaddlePaddle/PaddleMaterilas&type=date&legend=top-left)

---
<table>
<thead>
<tr>
<th>Parameter</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>--model_name</td>
<td>Name of the built-in model</td>
</tr>
<tr>
<td>--weights_name</td>
<td>Weights file name</td>
</tr>
<tr>
<td>--cif_file_path</td>
<td>Path to CIF files for prediction</td>
</tr>
<tr>
<td>--save_path</td>
<td>Path to save prediction results</td>
</tr>
</tbody>
</table>

For more information on how to use PaddleMaterials to train and fine tune a model, please refer to the [documentation](get_started.md).

## 👩‍👩‍👧‍👦 Cooperation

<p align="left">
<img src="docs/logo_SZNL_2.jpeg" align="middle" width = "240"/>
<img src="docs/logo_SinochemDI_2.jpeg" align="middle" width = "240"/>
<img src="docs/logo_MetaX.png" align="middle" width = "240"/>
<img src="docs/suzhoulab.png" align="middle" width = "200"/>
<img src="docs/zhonghua.jpeg" align="middle" width = "240"/>
<img src="docs/MetaX.png" align="middle" width = "240"/>
<p align="left">

---

## 👩‍👩‍👧‍👦 Community

Join the PaddleMaterials WeChat group to discuss with us!
Join PaddleMaterials WeChat group to disscuss with us!

<p align="left">
<img src="docs/wechat_group.png" align="middle" width = "200"/>
<p align="left">

---
## 🔄 Feedback

We sincerely invite you to spare a moment from your busy schedule to share your [feedback](https://paddle.wjx.cn/vm/rXyQwB2.aspx#).

## 📜 License

PaddleMaterials is licensed under the [Apache License 2.0](LICENSE).

---

## 🎓 Citation

```bibtex
@misc{paddlematerials2025,
title={PaddleMaterials, a deep learning toolkit based on PaddlePaddle for material science.},
author={PaddleMaterials Contributors},
howpublished = {\url{https://github.com/PaddlePaddle/PaddleMaterials}},
year={2025}
}
```

---
@misc{paddlematerials2025,
title={PaddleMaterials, a deep learning toolkit based on PaddlePaddle for material science.},
author={PaddleMaterials Contributors},
howpublished = {\url{https://github.com/PaddlePaddle/PaddleMaterials}},
year={2025}
}

## Acknowledgements

This repository references code from the following projects:
## Acknowledgements

[PaddleScience](https://github.com/PaddlePaddle/PaddleScience) |
[Matgl](https://github.com/materialsvirtuallab/matgl) |
[CDVAE](https://github.com/txie-93/cdvae) |
[DiffCSP](https://github.com/jiaor17/DiffCSP) |
[MatterGen](https://github.com/microsoft/mattergen) |
[MatterSim](https://github.com/microsoft/mattersim) |
[CHGNet](https://github.com/CederGroupHub/chgnet) |
[AIRS](https://github.com/divelab/AIRS)
This repository references the code from the following repositories:
[PaddleScience](https://github.com/PaddlePaddle/PaddleScience),
[Matgl](https://github.com/materialsvirtuallab/matgl),
[CDVAE](https://github.com/txie-93/cdvae),
[DiffCSP](https://github.com/jiaor17/DiffCSP),
[MatterGen](https://github.com/microsoft/mattergen),
[MatterSim](https://github.com/microsoft/mattersim),
[CHGNet](https://github.com/CederGroupHub/chgnet),
[AIRS](https://github.com/divelab/AIRS),
etc.

<!-- reauthored 2026-05-03T13:59:14Z -->
Binary file added docs/MetaX.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/suzhoulab.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/zhonghua.jpeg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
48 changes: 48 additions & 0 deletions interatomic_potentials/configs/newtonnet/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# NewtonNet

[NewtonNet: a Newtonian message passing network for deep learning of interatomic potentials and forces](https://doi.org/10.1039/D2DD00008C)

## Abstract

NewtonNet is a Newtonian message-passing neural network for learning interatomic potentials and forces. It operates on atomic graphs with radial Bessel basis functions and polynomial cutoff envelopes. The architecture uses a sequence of interaction layers that update both atom-level and force-level representations, enabling accurate prediction of energies and atomic forces while maintaining energy conservation.

## Model

NewtonNet constructs a radius graph from atomic positions and computes pairwise radial basis features. Interaction layers iteratively refine atom representations using Newtonian message passing that preserves physical symmetries. Per-atom energies are summed for the total molecular energy, and forces are obtained as negative energy gradients with respect to positions.

## Training

```bash
# single-gpu training
python interatomic_potentials/train.py -c interatomic_potentials/configs/newtonnet/newtonnet_qm9_energy.yaml

# multi-gpu training
python -m paddle.distributed.launch --gpus="0,1,2,3" interatomic_potentials/train.py -c interatomic_potentials/configs/newtonnet/newtonnet_qm9_energy.yaml
```

## Validation

```bash
python interatomic_potentials/train.py -c interatomic_potentials/configs/newtonnet/newtonnet_qm9_energy.yaml Global.do_eval=True Global.do_train=False Global.do_test=False Trainer.pretrained_model_path='your model path(*.pdparams)'
```

## Testing

```bash
python interatomic_potentials/train.py -c interatomic_potentials/configs/newtonnet/newtonnet_qm9_energy.yaml Global.do_test=True Global.do_train=False Global.do_eval=False Trainer.pretrained_model_path='your model path(*.pdparams)'
```

## Citation

```
@article{haghighatlari2022newtonnet,
title={NewtonNet: a Newtonian message passing network for deep learning of interatomic potentials and forces},
author={Haghighatlari, Mojtaba and Li, Jie and Guan, Xingyi and Zhang, Oufan and Das, Akshaya and Stein, Christopher J and Heiber, Farnaz and Liu, Tiantian and Head-Gordon, Martin and Bertels, Luke and others},
journal={Digital Discovery},
volume={1},
number={3},
pages={333--343},
year={2022},
publisher={Royal Society of Chemistry}
}
```
89 changes: 89 additions & 0 deletions interatomic_potentials/configs/newtonnet/newtonnet_qm9_energy.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
Global:
do_train: True
do_eval: False
do_test: False

label_names: ['energy']

Trainer:
max_epochs: 300
seed: 42
output_dir: ./output/newtonnet_qm9_energy
save_freq: 50
log_freq: 20
start_eval_epoch: 1
eval_freq: 1
pretrained_model_path: null
pretrained_weight_name: null
resume_from_checkpoint: null
use_amp: False
amp_level: 'O1'
eval_with_no_grad: False
gradient_accumulation_steps: 1
best_metric_indicator: 'eval_metric'
name_for_best_metric: "energy"
greater_is_better: False
compute_metric_during_train: True
metric_strategy_during_eval: 'epoch'
use_visualdl: False
use_wandb: False
use_tensorboard: False

Model:
__class_name__: NewtonNet
__init_params__:
cutoff: 5.0
n_features: 128
n_basis: 20
n_interactions: 3
activation: swish
layer_norm: False
loss_type: mse_loss
force_loss_weight: 100.0
property_names: ${Global.label_names}

Optimizer:
__class_name__: Adam
__init_params__:
lr:
__class_name__: Cosine
__init_params__:
learning_rate: 5e-4
eta_min: 1e-6
by_epoch: False

Metric:
energy:
__class_name__: paddle.nn.L1Loss
__init_params__: {}

Dataset:
dataset:
__class_name__: QM9Dataset
__init_params__:
path: "./data/qm9"
property_names: ${Global.label_names}
num_workers: 4
use_shared_memory: False
split_dataset_ratio:
train: 0.8
val: 0.1
test: 0.1
train_sampler:
__class_name__: BatchSampler
__init_params__:
shuffle: True
drop_last: False
batch_size: 32
val_sampler:
__class_name__: BatchSampler
__init_params__:
shuffle: False
drop_last: False
batch_size: 32
test_sampler:
__class_name__: BatchSampler
__init_params__:
shuffle: False
drop_last: False
batch_size: 32
Loading