Skip to content


Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Comparing single molecule minimizations with different all atom force fields

NOTE: only Python 2 is supported for the time being.

Project Goals

This project relates to the larger goals of the Open Force Field Group's effort to automate force field parameterization.

Here we have created scripts to minimize small molecules using a variety of force fields with two goals in mind.

  1. Find places where the SMIRNOFF99Frosst force field behaves differently from currently accepted force fields.
  2. Discover molecules that are minimized to different conformations by different force fields. These molecules will likely be used in future SMIRNOFF parameterizations.

Force fields

The following is a list of the force fields being considered here:

Python Dependencies

Package Version
OpenEye 2016.10.1
OpenMolTools 0.7.5
AmberTools 2016
OpenMM 7.0.1
MDTRAJ 1.7.2
ParmEd 2.6.1
OpenForceField 0.1.6


  • Script to read in mol2 files and run minimization using OpenMM (or oechem.OESzybki).

  • Script to generate mol2 files with Tripos, GAFF, and GAFF2 atom types.

  • smirnoff99Frosst.offxml: FFXML file for SMIRNOFF

  • Script to generate a collection SDF file from a list of SMILES strings for use in

  • : This script was used to filter the eMolecules and DrugBank databases to meet the requirements for this project.

  • This script includes two functions:

    • oemol_from_rdmol converts a molecule from RDKit to an OpenEye molecule.
    • rdmol_from_oemol converts a molecule from OpenEye to an RDKit molecule.
  • This script generates a csv file containing Torsion Fingerprint Deviation (TFD) and TanimotoCombo values between conformers of the same molecule.

  • This script interprets the data generated by It exports a handful of different csv and txt files containing statistics and assigning difference and similarity flags.

  • This script uses a directory full of .mol2 files and enumerates the checkmol descriptors inside, as well as pairwise combinations of checkmol descriptors.


  1. Generate initial SDF files.

    1. Use to filter DrugBank and eMolecules databases available online. The method eMolecule_filtering in that script could be used to filter any other large database of molecules to meet these requirements for all molecules:
      • < 200 heavy atoms (eventually, only data from molecules under 25 heavy atoms were used for this project)
      • no metals
      • proper valency, that is no first row elements with > 5 bonds
      • python assuming DrugBank.sdf, eMolecules.sdf.gz and eMolecules_incremental.sdf.gz are in the current directory.
    2. If starting from a list of SMILES strings, can generate a single conformer with oechem using
      • Change variables, then call python
  2. Generate Tripos, GAFF, and GAFF2 mol2 files.

    • python -i /path/to/sdf/files -l /path/to/output/files
  3. Perform minimization.

    1. Use to minimize mol2 files with a specified forcefield type (fftype). Supported fftypes include GAFF, GAFF2, MMFF94, MMFF94S and SMIRNOFF. The inmols flag should specify path to tripos *.mol2 files (not the mol2 files themselves).
    • This script can be used for one or more of the accepted forcefields
    • All: python --inmols /path/triposMol2Files/ --dommff True --ffxml smirnoff99Frosst.ffxml --gaffdir /path/GAFF/Files/ --gaff2dir /path/GAFF2/Files
    • GAFF: python --inmols /path/triposMol2Files/ --gaffdir /path/GAFF/Files/
    1. was used to minimize mol2 files with a specific forcefield type (fftype). Supported fftypes inclue OPLS3, OPLS2005. Input should specifiy path to tripos mol2 files and optimizetype should specify the forcefield type.
    • OPLS3: python --input /path/to/triposmol2Files --optimizetype "OPLS3" --outdir /path/output_directory/
    • OPLS2005: python --input /path/to/triposmol2Files --optimizetype "OPLS2005" --outdir /path/output_directory/
  4. Evaluate RMSD. Torsion Fingerprint Deviation and TanimotoCombo can also be found using the same input format, but with instead of

    • python --ref [name of reference force-field] --compare [names of compared force fields] --directory /path/containing/directories


Compare molecular structures after energy minimization in various force fields.






No packages published