Skip to content

ANI Backward Pass #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 43 commits into
base: ANI-Integration-Check
Choose a base branch
from
Open

Conversation

manangoel99
Copy link
Owner

This PR contains an incorrect implementation of calculating derivatives of the AEVs w.r.t input coordinates for each atom.

The code is present in the ANIAtomContrib::getGrad function in Code/ForceField/ANI/AtomicContrib.cpp.
The test CH4.mol file can be found at Code/GraphMol/Descriptors/test_data/CH4.mol.

This is the expected output according to torchani
rsz_screenshot_from_2020-08-08_12-56-15

- Added tests by comparing ouput from ```SymmetryFunc``` with output from torchani
- Test cases are CH4, SO2, NH3 and ethanol for which mol files and expected are added
Addition of ANI namespace inside which all the featurization code has been added
Removed functions from public interface of AtomicEnvironmentVector which will not be used elsewhere
…s taking initial 0 as a bool option

- Consistent data types for indexing in Eigen Arrays/Matrices/Vectors
- Removed functions from public API which are not seen by other code
- Added tests for GenerateSpeciesVector
- Changed python wrapper as suggested
- Added PRECONDITION wherever required
- Changed unnecessary int to unsigned int and unnecessary double eigen arrays to int arrays
- Use of switch instead of multiple if else
- Added inline comments for better understanding of the code and from where constants were obtained
…s are available for ANI ForceField

Added AtomicContrib to the ANI ForceField for getting contributions from each atom
Implemented forward propogation of AEV with random weights
Code requires further clean up and handling edge cases
…nsembling

Removed hardcoding in ANIForceField module as much as possible by loading all data from CSV files (Needs to be changed)
Implemented testing for energy production accuracy for both ANI-1x and ANI-1ccx
…ass to use with boost::serialize

Added methods to serialize and deSerialize Eigen matrices and arrays to store and read them from files
…l energy by loading neural network weights from boost serialized files
… molecule

Added logic to load float weights instead of double
Added documentation for ANI force field
 - Replaced multiple weight files in 1 model with 1 file for each model in the ensemble
 - Added loading AEV generation parameters from files rather than hardcoding
 - Added function to generate Species Vector from array of atomic numbers
 - Added support for more data types in EigenSerializer and loading all weights from one file
 - Implemented Builder functions for constructing ANIForceField from mol objects
 - Implemented corresponding python wrappers and tests
…rough ANI NNs and added pytho unit tests for the python wrappers
…h framework

- Refactored functions like forwardProp to take references as arguments instead of passing arguments by value
- Created new file for python tests of ANI Force Field
…hen an unkown atom is encountered in AEV generation

- Added corresponding test case
- Added test case to check if ValueErrorException is raised while building force field if mol contains unkown atoms
…ccept ifstream and ofstream as arguments

- Added serializeAll function
- Added tests for serializeAll and deserializeAll
…gen::MatrixXd``` objects instead of ```Eigen::ArrayXXd``` to remove explicit type changes during matrix multiplication.

- Changed files containing weights to store MatrixXd objects instead of ArrayXXd
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant