S. R. Xie, M. Rupp, and R. G. Hennig, "Ultra-fast interpretable machine-learning potentials", preprint arXiv:2110.00624 (2021).
All-atom dynamics simulations have become an indispensable quantitative tool in physics, chemistry, and materials science, but large systems and long simulation times remain challenging due to the trade-off between computational efficiency and predictive accuracy. The UF3 framework is built to address this challenge by combinining effective two- and three-body potentials in a cubic B-spline basis with regularized linear regression to obtain machine-learning potentials that are physically interpretable, sufficiently accurate for applications, and as fast as the fastest traditional empirical potentials.
Documentation: https://uf3.readthedocs.io/
This repository is still under construction. Please feel free to open new issues for feature requests and bug reports.
UF3 can be installed in two different ways:
- Download and install automatically from PyPI (recommended):
pip install uf3
- Download and install manually from GitHub:
git clone https://github.com/uf3/uf3.git
cd uf3
pip install .
Please see the examples in uf3/examples/tungsten_extxyz for basic usage.
Overviews for individual modules can be found in uf3/examples/modules (WIP).
Standalone scripts and configuration generators/parsers are in development.
Elastic constants:
pip install setuptools_scm pip install uf3[elastic_constants]
Phonon spectra:
pip install uf3[phonon_spectra]
LAMMPS interface:
conda install numpy==1.20.3 --force-reinstall conda install -c conda-forge lammps --no-update-deps
The environment variable $ASE_LAMMPSRUN_COMMAND
must also be set to use the LAMMPS interface within python. See the ASE documentation for details.
- We rely on ase to handle parsing outputs from atomistic codes like LAMMPS, VASP, and CP2K.
- We use Pandas to keep track of atomic configurations and their energies/forces as well as organizing data for featurization and training.
- B-spline evaluations use scipy, numba, and ndsplines.
- PyTables is used for reading/writing HDF5 files.
- Matplotlib is used for plotting.
- We use sklearn for regression.
- We use tqdm for progress bars.
- We use plotly for interactive plots.
- We use PyYaml for configuration files.
- We use numpy for array operations.