fennol
FeNNol: Force-field-enhanced Neural Networks optimized library
FeNNol is a library for building, training and running neural network potentials for molecular simulations. It is based on the JAX library and is designed to be fast and flexible.
FeNNol's documentation is available here and the article describing the library at https://doi.org/10.1063/5.0217688
Active Learning tutorial in this Colab notebook
Installation
You can start with a fresh environment, for example using venv:
python -m venv fennol
source fennol/bin/activate
The first step is to install jax (see details at: https://jax.readthedocs.io/en/latest/installation.html). For example, to install the CPU version of jax:
pip install -U jax
If you have a GPU, you can install the CUDA version of jax with:
pip install -U "jax[cuda12]"
Then, you can clone and install FeNNol using pip:
git clone https://github.com/thomasple/FeNNol.git
cd FeNNol
pip install .
Optional dependencies:
- Some modules require e3nn-jax (https://github.com/e3nn/e3nn-jax) which can be installed with:
pip install --upgrade e3nn-jax
- The provided training script requires pytorch (at least the cpu version) for dataloaders:
pip install torch --index-url https://download.pytorch.org/whl/cpu
- For the Deep-HP interface, cffi, pydlpack and pycuda are required:
pip install cffi pycuda
Examples
To learn how to train a FeNNol model, you can check the examples in the examples/training
directory. The README.md
file in that directory contains instructions on how to train a model on the aspirin revMD17 dataset.
To learn how to run molecular dynamics simulations with FeNNol models, you can check the examples in the examples/md
directory. The README.md
file in that directory contains instructions on how to run simulations with the provided ANI-2x model.
Citation
Please cite this paper if you use the library.
T. Plé, O. Adjoua, L. Lagardère and J-P. Piquemal. FeNNol: an Efficient and Flexible Library for Building Force-field-enhanced Neural Network Potentials. J. Chem. Phys. 161, 042502 (2024)
@article{ple2024fennol,
author = {Plé, Thomas and Adjoua, Olivier and Lagardère, Louis and Piquemal, Jean-Philip},
title = {FeNNol: An efficient and flexible library for building force-field-enhanced neural network potentials},
journal = {The Journal of Chemical Physics},
volume = {161},
number = {4},
pages = {042502},
year = {2024},
month = {07},
doi = {10.1063/5.0217688},
url = {https://doi.org/10.1063/5.0217688},
}
License
This project is licensed under the terms of the GNU LGPLv3 license. See LICENSE for additional details.
633 @classmethod 634 def load( 635 cls, 636 filename, 637 use_atom_padding=False, 638 graph_config={}, 639 ): 640 """load a model from a file""" 641 with open(filename, "rb") as f: 642 state_dict = serialization.msgpack_restore(f.read()) 643 state_dict["preprocessing"] = {k: v for k, v in state_dict["preprocessing"]} 644 state_dict["modules"] = {k: v for k, v in state_dict["modules"]} 645 return cls( 646 **state_dict, 647 graph_config=graph_config, 648 use_atom_padding=use_atom_padding, 649 )
load a model from a file