← Open Source
txie-93

cgcnn

Crystal graph convolutional neural networks for predicting material properties.

Model DevelopmentArchitectureDomain-specific trainingPython
Open on GitHub
Momentum
+0stars in 24 hours0.0%
896
Stars
356
Forks
+2
This week
2
Contributors
Created 2018-03-14 · Updated 2026-10-13 · #12828 today
Top developers
txie-93TanyaAdams1

txie-93/cgcnn is ranked 12,828 with 896 stars.

Same-category comparison

txie-93/cgcnn is ranked 12,828 among these 8 peers; Visual-Attention-Network/SegNeXt is ranked 12,830.

Same-category comparison
NameRankMetrics
bytedance/fedlearner12,796
Language:
Python
Stars:
899
Forks:
174
Description:
A multi-party collaborative machine learning framework.
megvii-research/mdistiller12,798
Language:
Python
Stars:
899
Forks:
130
Description:
The official implementation of [CVPR2022] Decoupled Knowledge Distillation https://arxiv.org/abs/2203.08679 and [ICCV2023] DOT: A Distillation-Oriented Trainer https://openaccess.thecvf.com/content/ICCV2023/papers/Zhao_DOT_A_Distillation-Oriented_Trainer_ICCV_2023_paper.pdf.
davheld/GOTURN12,803
Language:
C++
Stars:
898
Forks:
312
Description:
Source code for paper: Learning to Track at 100 FPS with Deep Regression Networks, Held, et al. ECCV 2016.
HuguesTHOMAS/KPConv-PyTorch12,809
Language:
Python
Stars:
897
Forks:
176
Description:
Kernel Point Convolution implemented in PyTorch.
Visual-Attention-Network/SegNeXt12,830
Language:
Python
Stars:
895
Forks:
91
Description:
Official Pytorch implementations for "SegNeXt: Rethinking Convolutional Attention Design for Semantic Segmentation" (NeurIPS 2022).
facebookresearch/ShapeR12,840
Language:
Python
Stars:
894
Forks:
66
Description:
Code for the ShapeR research paper.
nickgillian/grt12,843
Language:
C++
Stars:
894
Forks:
285
Description:
gesture recognition toolkit.
probtorch/probtorch12,852
Language:
Python
Stars:
893
Forks:
67
Description:
Probabilistic Torch is library for deep generative models that extends PyTorch.
Key parameters and specifications
Key parameters and specifications
ParameterValue
LanguagePython
CategoryModel Development
SubcategoryArchitecture, Domain-specific training
Stars896
Forks356
Contributors2
Created date2018-03-14
Updated date2026-10-13
Stars in 1 day0
Stars in 7 days2
Rank12,828
Previous rank12,727
Rank change-101
7-day stars rank8,392
Previous 7-day stars rank8,468
7-day stars rank change76
Total stars rank12,141
Previous total stars rank12,119
Total stars rank change-22
CountryUK
README summary

Crystal Graph Convolutional Neural Networks This software package implements the Crystal Graph Convolutional Neural Networks (CGCNN) that takes an arbitary crystal structure to predict material properties. The package provides two major functions: Train a CGCNN model with a customized dataset. Predict material properties of new crystals with a pre-trained CGCNN model. The following paper describes the details of the CGCNN framework: Crystal Graph Convolutional Neural Networks for an Accurate and Interpretable Prediction of Material Properties Table of Contents How

to cite Prerequisites Usage Define a customized dataset Train a CGCNN model Predict material properties with a pre-trained CGCNN model Data Authors License How to cite Please cite the following work if you want to use CGCNN. Prerequisites This package requires: PyTorch scikit-learn pymatgen If you are new to Python, the easiest way of installing the prerequisites is via conda. After installing conda, run the following command to create a new environment named and install all prerequisites: *Note

: this code is tested for PyTorch v1. 0+ and is not compatible with versions below v0. This creates a conda environment for running CGCNN. Before using CGCNN, activate the environment by: Then, in directory , you can test if all the prerequisites are installed properly by running: This should display the help messages for and . If you find no error messages, it means that the prerequisites are installed properly. After you finished using CGCNN, exit the environment by: Usage Define a

customized dataset To input crystal structures to CGCNN, you will need to define a customized dataset. Note that this is required for both training and predicting. Before defining a customized dataset, you will need: CIF files recording the structure of the crystals that you are interested in The target properties for each crystal (not needed for predicting, but you need to put some random numbers in ) You can create a customized dataset by creating a directory with the following files

: 1. The first column recodes a unique for each crystal, and the second column recodes the value of target property. If you want to predict material properties with , you can put any number in the second column. : a JSON file that stores the initialization vector for each element. An example of is , which should be good for most applications. : a CIF file that recodes the crystal structure, where is the unique for the crystal. The structure of the should be

: There are two examples of customized datasets in the repository: for regression and for classification. **For advanced PyTorch users** The above method of creating a customized dataset uses the class in . If you want a more flexible way to input crystal structures, PyTorch has a great Tutorial for writing your own dataset class. Train a CGCNN model Before training a new CGCNN model, you will need to: Define a customized dataset at to store the structure-property relations of interest

. Then, in directory , you can train a CGCNN model for your customized dataset by: You can set the number of

Frequently asked questions

How many stars and forks are recorded?

txie-93/cgcnn has 896 stars and 356 forks.

What is the repository rank?

txie-93/cgcnn is ranked 12,828.

What language and category are recorded?

txie-93/cgcnn has 896 stars, uses Python and belongs to Model Development.

Which repository is closest in rank?

txie-93/cgcnn is compared with Visual-Attention-Network/SegNeXt, ranked 12,830 with 895 stars.

README

Crystal Graph Convolutional Neural Networks

This software package implements the Crystal Graph Convolutional Neural Networks (CGCNN) that takes an arbitary crystal structure to predict material properties.

The package provides two major functions:

  • Train a CGCNN model with a customized dataset.
  • Predict material properties of new crystals with a pre-trained CGCNN model.

The following paper describes the details of the CGCNN framework:

Crystal Graph Convolutional Neural Networks for an Accurate and Interpretable Prediction of Material Properties

Table of Contents

How to cite

Please cite the following work if you want to use CGCNN.

@article{PhysRevLett.120.145301,
  title = {Crystal Graph Convolutional Neural Networks for an Accurate and Interpretable Prediction of Material Properties},
  author = {Xie, Tian and Grossman, Jeffrey C.},
  journal = {Phys. Rev. Lett.},
  volume = {120},
  issue = {14},
  pages = {145301},
  numpages = {6},
  year = {2018},
  month = {Apr},
  publisher = {American Physical Society},
  doi = {10.1103/PhysRevLett.120.145301},
  url = {https://link.aps.org/doi/10.1103/PhysRevLett.120.145301}
}

Prerequisites

This package requires:

If you are new to Python, the easiest way of installing the prerequisites is via conda. After installing conda, run the following command to create a new environment named cgcnn and install all prerequisites:

conda upgrade conda
conda create -n cgcnn python=3 scikit-learn pytorch torchvision pymatgen -c pytorch -c conda-forge

*Note: this code is tested for PyTorch v1.0.0+ and is not compatible with versions below v0.4.0 due to some breaking changes.

This creates a conda environment for running CGCNN. Before using CGCNN, activate the environment by:

source activate cgcnn

Then, in directory cgcnn, you can test if all the prerequisites are installed properly by running:

python main.py -h
python predict.py -h

This should display the help messages for main.py and predict.py. If you find no error messages, it means that the prerequisites are installed properly.

After you finished using CGCNN, exit the environment by:

source deactivate

Usage

Define a customized dataset

To input crystal structures to CGCNN, you will need to define a customized dataset. Note that this is required for both training and predicting.

Before defining a customized dataset, you will need:

  • CIF files recording the structure of the crystals that you are interested in
  • The target properties for each crystal (not needed for predicting, but you need to put some random numbers in id_prop.csv)

You can create a customized dataset by creating a directory root_dir with the following files:

  1. id_prop.csv: a CSV file with two columns. The first column recodes a unique ID for each crystal, and the second column recodes the value of target property. If you want to predict material properties with predict.py, you can put any number in the second column. (The second column is still needed.)

  2. atom_init.json: a JSON file that stores the initialization vector for each element. An example of atom_init.json is data/sample-regression/atom_init.json, which should be good for most applications.

  3. ID.cif: a CIF file that recodes the crystal structure, where ID is the unique ID for the crystal.

The structure of the root_dir should be:

root_dir
├── id_prop.csv
├── atom_init.json
├── id0.cif
├── id1.cif
├── ...

There are two examples of customized datasets in the repository: data/sample-regression for regression and data/sample-classification for classification.

For advanced PyTorch users

The above method of creating a customized dataset uses the CIFData class in cgcnn.data. If you want a more flexible way to input crystal structures, PyTorch has a great Tutorial for writing your own dataset class.

Train a CGCNN model

Before training a new CGCNN model, you will need to:

Then, in directory cgcnn, you can train a CGCNN model for your customized dataset by:

python main.py root_dir

You can set the number of training, validation, and test data with labels --train-size, --val-size, and --test-size. Alternatively, you may use the flags --train-ratio, --val-ratio, --test-ratio instead. Note that the ratio flags cannot be used with the size flags simultaneously. For instance, data/sample-regression has 10 data points in total. You can train a model by:

python main.py --train-size 6 --val-size 2 --test-size 2 data/sample-regression

or alternatively

python main.py --train-ratio 0.6 --val-ratio 0.2 --test-ratio 0.2 data/sample-regression

You can also train a classification model with label --task classification. For instance, you can use data/sample-classification by:

python main.py --task classification --train-size 5 --val-size 2 --test-size 3 data/sample-classification

After training, you will get three files in cgcnn directory.

  • model_best.pth.tar: stores the CGCNN model with the best validation accuracy.
  • checkpoint.pth.tar: stores the CGCNN model at the last epoch.
  • test_results.csv: stores the ID, target value, and predicted value for each crystal in test set.

Predict material properties with a pre-trained CGCNN model

Before predicting the material properties, you will need to:

Then, in directory cgcnn, you can predict the properties of the crystals in root_dir:

python predict.py pre-trained.pth.tar root_dir

For instace, you can predict the formation energies of the crystals in data/sample-regression:

python predict.py pre-trained/formation-energy-per-atom.pth.tar data/sample-regression

And you can also predict if the crystals in data/sample-classification are metal (1) or semiconductors (0):

python predict.py pre-trained/semi-metal-classification.pth.tar data/sample-classification

Note that for classification, the predicted values in test_results.csv is a probability between 0 and 1 that the crystal can be classified as 1 (metal in the above example).

After predicting, you will get one file in cgcnn directory:

  • test_results.csv: stores the ID, target value, and predicted value for each crystal in test set. Here the target value is just any number that you set while defining the dataset in id_prop.csv, which is not important.

Data

To reproduce our paper, you can download the corresponding datasets following the instruction.

Authors

This software was primarily written by Tian Xie who was advised by Prof. Jeffrey Grossman.

License

CGCNN is released under the MIT License.

Nearby in the ranking
Similar items