Compute atomic environment vector (AEV) and its derivatives


Keywords
scr-2681
License
Other
Install
pip install aevmod==1.1.0

Documentation

aevmod package

This package provides functionality for computing an atomic environment vector (AEV), as well as its Jacobian and Hessian. The AEV is a feature vector that is useful for representing the geometry of a molecule, or simply a set of atoms, in a manner that satisfies rotational and translational invariances. For the i-th atom in the system, its AEV is yi = fi(x), where x is a vector of Cartesian coordinates of all atoms in the set. The Jacobian and Hessian are with respect to the x coordinates. Ther package uses pybind11 to expose our C++ AEV library to Python, as a python package aevmod. The package folder includes:

  • this README file, which can be viewed in a web browser using restview. You can use
# simple invocation in present terminal
restview README.rst &

# or, invocation in a separate xterm terminal
xterm -geometry 100x10-0-0 -e restview README.rst &
  • a doc folder containing pdf documentation
  • an examples folder containing an example application taev.py
  • an include folder containing requisite sacado include files for the C++ library
  • a pyproject.toml file containing build-system dependencies and other configuration info
  • a setup.py file for building and installing the package
  • an src folder containing the C++ source code
  • a tests folder containing code and data for running tests with pytest

The aevmod package is compatible with Python 3, and the pybind11 usage requires a C++ compiler that has at least C++11 functionality.

To try out aevmod, under the package folder, do:

# Build and install the package
pip install .

# Install pytest so we can run the tests
pip install pytest

You can now run the tests to confirm everything works:

pytest
====================================== test session starts =======================================
platform darwin -- Python 3.8.10, pytest-6.2.4, py-1.10.0, pluggy-0.13.1
rootdir: /Users/hnnajm/mls/pkg/aev, configfile: setup.cfg, testpaths: tests
plugins: anyio-2.2.0
collected 6 items

tests/test_aev.py .                                                                        [ 16%]
tests/test_ang_indsets.py .                                                                [ 33%]
tests/test_hes.py .                                                                        [ 50%]
tests/test_jac.py .                                                                        [ 66%]
tests/test_rad_indsets.py .                                                                [ 83%]
tests/test_structures.py .                                                                 [100%]

======================================= 6 passed in 0.75s ========================================

You can also run the example code:

python ./examples/taev.py

If you make a code change you will need to re-build and install. You can do this using pip:

pip install --upgrade .