/SOAPLite

Fast lightweight SOAP implementation for machine learning in quantum chemistry and materials physics.

Primary LanguageCGNU Lesser General Public License v3.0LGPL-3.0

SOAPLite

Smooth Overlap of Atomic Positions (SOAP) is an algorithm used for accurately classifying and machine learning chemical environments [1,2]. For a detailed documentation, please read soapDoc.pdf in this repository and visit DScribe.

Getting Started

This is a low level, lightweight and fast implementation of SOAP for machine learning in quantum chemistry and materials physics. When given a structure and SOAP parameters, SOAPLite will spit out the SOAP spectra of local points in space. For a higher level interface, please use DScribe instead.

Here is an example of the python interface:

from soaplite import getBasisFunc, get_soap_locals
from ase.build import molecule

#-------------- Define structure -----------------------------------------------
atoms = molecule("H2O")

#-------------- Define positions of desired local environments ----------------
hpos = [
    [0, 1, 2],
    [2, 3, 4]
]

#------------------ Basis function settings (rCut, N_max) ----------------------
n_max = 5
l_max = 5
r_cut = 10.0
my_alphas, my_betas = getBasisFunc(r_cut, n_max)

#--------- Get local chemical environments for each defined position -----------
x = get_soap_locals(
    atoms,
    hpos,
    my_alphas,
    my_betas,
    rCut=r_cut,
    NradBas=n_max,
    Lmax=l_max,
    crossOver=True
)

print(x)
print(x.shape)

Installation

We provide a python interface to the code with precompiled C-extension. This precompiled version should work with linux-based machines, and can be installed with:

pip install soaplite

Or by cloning this repository, you can install it by

pip3 install .

in the SOAPLite directory.

Authors

See also the list of contributors who participated in this project.

License

This project is licensed under the GNU LESSER GENERAL PUBLIC LICENSE - see the LICENSE.md file for details

References

If you use this software, please cite

  • [1] On representing chemical environments - Albert P. Bartók, Risi Kondor, Gábor Csányi paper
  • [2] Comparing molecules and solids across structural and alchemical space - Sandip De, Albert P. Bartók, Gábor Cásnyi, and Michele Ceriotti paper
  • Machine learning hydrogen adsorption on nanoclusters through structural descriptors - Marc O. J. Jäger, Eiaki V. Morooka, Filippo Federici Canova, Lauri Himanen & Adam S. Foster paper

The theory is based on the first two papers, and the implementation is based on the third paper.