This repository contains the code needed to reproduce results in the paper, "Inclusion of more physics leads to less data: Learning the interaction energy as a function of electron deformation density with limited training data" (K. Low, M. L. Coote, and E. I. Izgorodina, 2021).
The code in this repository references the MLCF code developed by Dick, Sebastian, and Marivi Fernandez-Serra in "Learning from the density to correct total energy and forces in first principle simulations." The Journal of Chemical Physics 151.14 (2019): 144102. See: https://github.com/semodi/mlcf to download and for a full list of requirements.
Requires Python version 3.6 or later. Necessary packages are ase, pyscf, dscribe, scipy, spherical_functions and sympy.
All structures are in the data folder. Codes can be found in the model folder. Kernels for use in GPR models are in the kernels folder.
python get_deformation_density.py xyzfile.xyz
Run the following code in a folder containing one or more .cube files. Basis set parameters such as atom types and radial cutoffs can be specified within the script.
python get_dens_coeffs.py
To reproduce results from the neutral dimer dataset or predict for your own molecules, load the saved model:
import pickle
with open('data/EDDIE_neutraldimer_model.pkl', 'rb') as f:
model = pickle.load(file)
model.predict(X, y, atoms, atomtypes)
where atoms contains the number of atoms in the first dimer of X, and atom types is a list containing the elements of X. These can be accessed from get_atoms_and_atomtypes.py.