A minimal implementation of force fields
Project description
[![Build status](https://gitlab.kwant-project.org/pulkin/miniff/badges/master/pipeline.svg)](https://gitlab.kwant-project.org/pulkin/miniff/pipelines)
miniff: a minimal implementation of neural-network force fields
Compute energies and forces of atomic systems with neural networks.
![image](images/atomic-structure.svg)
About
This package implements [Behler and Parrinello](https://doi.org/10.1103/PhysRevLett.98.146401) approach to simulating structures and dynamics of atomic systems. You may want to use it if:
you are interested in structural properties of a system with many atoms such as a molecule or an amorphous material;
your system is too large for electronic structure treatment (e.g. density functional theory molecular dynamics);
no empiric potentials for your system exist …
… or the existing empiric potentials are not sufficient to reach the desired tolerances in energies and forces;
you are interested in machine learning techniques for materials science problems and are looking for a good starting point for your research.
The package is written in Python3.
Built with
[pytorch](https://pytorch.org/) is the machine learning and autodiff driver for this package;
[cython](https://cython.org/) is used for performance-critical tasks such as computing descriptors and their gradients;
[numpy](https://numpy.org) is the tensor and data engine in addition to torch;
[scipy](https://www.scipy.org/) is used for sparse data, neighbor search and optimization.
In addition,
[matplotlib](https://matplotlib.org) is used for plotting, and
[numericalunits](https://github.com/sbyrnes321/numericalunits) is used for handling units.
Documentation
Hosted on [Read the Docs](https://miniff.readthedocs.io/en/latest/).
Installation
### Setup prerequisites
Python3
C compiler: Required for compiling Cython extensions
Examples
Debian Linux `bash apt-get install -y build-essential python3-dev python3-pip `
Fedora `bash dnf groupinstall "Development tools" "Development libraries" `
MacOS:
Install gcc and make sure it is used by default. `bash brew install gcc ` Add to .bash_profile path and alias: `bash export CC=/usr/local/bin/gcc-10 alias gcc='gcc-10' `
Windows:
On Windows, the support for installing a C compiler and compiling cython extensions is cumbersome and outdated as can be inferred from the [Cython Wiki](https://github.com/cython/cython/wiki/CythonExtensionsOnWindows). We suggest to use the Windows subsystem for Linux (WSL) in this case. More information on WSL and its installation instructions are [here](https://docs.microsoft.com/en-us/windows/wsl/install-win10).
### Installation steps
Clone the repository on your system ` git clone https://gitlab.kwant-project.org/qt/miniff.git ` Move to the root of the project by executing cd miniff/ and continue with the following steps from inside this directory.
Install the dependencies
New Conda environment: use the provided [environment.yml](environment.yml). ` conda env create -n <my-env> -f environment.yml ` Activate the above created virtual environment ` conda activate <my-env> `
pip: use [requirements.txt](requirements.txt). ` pip install -r requirements.txt `
Build and install miniff
Use the provided [setup.py](setup.py).
`bash python3 setup.py build python3 setup.py install `
Verify your installation
`python python >>> import miniff >>> `
(optional) Run tests
`bash python3 setup.py nosetests `
Contributing
See CONTRIBUTING.md for contirbution guidelines
License
This work is licensed under BSD 2-Clause License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.