This repository houses the SMIRNOFF SMIRKS-based force field format, along with classes to parameterize OpenMM systems given SMIRNOFF .ffxml
format files.
examples/
- some examples - look here to get startedsmirnoff/
- SMIRNOFF forcefield parameterization enginedevtools/
- continuous integration and packaging scripts and utilitiesoe_license.txt.enc
- encrypted OpenEye license for continuous integration testing.travis.yml
- travis-ci continuous integration fileutilities/
- some utility functionality relating to the project; initially, for conversion of parm@frosst modified frcmod files to SMIRNOFF XML.
We recommend the miniconda Python distribution.
To install miniconda
on osx
with bash
, this is:
wget https://repo.continuum.io/miniconda/Miniconda3-latest-MacOSX-x86_64.sh
bash Miniconda3-latest-MacOSX-x86_64.sh -b -p $HOME/miniconda3
export PATH="$HOME/miniconda3/bin:${PATH}"
SMIRNOFF currently requires the OpenEye toolkit (which requires a license that is free for academics indenting to rapidly release results into the public domain):
pip install -i https://pypi.anaconda.org/OpenEye/simple OpenEye-toolkits
Install smirnoff
via conda:
conda install --yes -c omnia openforcefield-smirnoff
The SMIRNOFF force field format is documented here.
The SMIRNOFF forcefield format is available in sample form under data/forcefield
, and is handled by forcefield.py
.
An example comparing SMIRNOFF versus AMBER energies for the parm@frosst forcefield is provided under
examples/SMIRNOFF_comparison, where two scripts can compare energies for a single molecule or for the entire AlkEthOH set.
Note that two forcefields are currently available in this format, Frosst_AlkEtOH.ffxml
,
the parm@frosst forcefield as it should have been for this set, and Frosst_AlkEtOH_parmAtFrosst.ffxml
,
the forcefield as it was actually implemented (containing several bugs as noted in the file itself).
It can also be of interest to know what SMIRNOFF parameters would be applied to particular molecules. Utility functionality for this is provided under forcefield_labeler.py
, which has generally similar structure to forcefield.py
but instead of providing OpenMM systems with parameters, it can be applied to specific molecules and returns information about what parameters would be applied.