Status | |
---|---|
Latest Release | |
Communication | |
Foundation | |
Installation |
The Open Force Field Toolkit, built by the Open Force Field Initiative, is a Python toolkit for the development and application of modern molecular mechanics force fields based on direct chemical perception and rigorous statistical parameterization methods.
The toolkit currently covers two main areas we have committed to stably maintain throughout their lifetimes:
Note: Prior to version 0.9.0, this toolkit and its associated repository were named openforcefield
and used different import paths. For details on this change and migration instructions, see the release notes of version 0.9.0.
Documentation for the Open Force Field Toolkit is hosted at readthedocs. Example notebooks are available in the examples/
directory and also hosted on the Open Force Field
website.
Please cite the OpenFF Toolkit using the Zenodo record of the latest release or the version that was used. The BibTeX reference of the latest release can be found here.
The Open Force Field Toolkit (openff-toolkit
) is a Python toolkit, and supports Python 3.9 through 3.11.
Detailed installation instructions can be found here.
Two major force field development efforts have been undertaken by the Open Force Field Initiative, with results hosted in separate repositories.
Force fields from both of these packages are available in their respective GitHub repositories and also as conda packages. Tables detailing the individual file names/versions within these force field lines are in the README of each repository. By default, installing the Open Force Field toolkit using conda
or the single-file toolkit installers will also install these conda packages. A plugin architecture is provided for other force field developers to produce python/conda packages that can be imported by the Open Force Field Toolkit as well.
This repository provides tools for using the SMIRKS Native Open Force Field (SMIRNOFF) specification, which currently supports an XML representation for force field definition files.
By convention, files containing XML representations of SMIRNOFF force fields carry .offxml
extensions.
Example SMIRNOFF .offxml
force field definitions can be found in openff/toolkit/data/test_forcefields/
. These force fields are for testing only, and we neither record versions of these files, nor do we guarantee their correctness or completeness.
SMIRNOFF force fields can be parsed by the ForceField
class, which offers methods including create_openmm_system
for exporting to OpenMM and create_interchange
for exporting to other formats (GROMACS, Amber, LAMMPS) via Interchange.
# Load a molecule into the OpenFF Molecule object
from openff.toolkit import Molecule
from openff.toolkit.utils import get_data_file_path
sdf_file_path = get_data_file_path('molecules/ethanol.sdf')
molecule = Molecule.from_file(sdf_file_path)
# Create an OpenFF Topology object from the molecule
from openff.toolkit import Topology
topology = Topology.from_molecules(molecule)
# Load the latest OpenFF force field release: version 2.1.0, codename "Sage"
from openff.toolkit import ForceField
forcefield = ForceField('openff-2.1.0.offxml')
# Create an OpenMM system representing the molecule with SMIRNOFF-applied parameters
openmm_system = forcefield.create_openmm_system(topology)
# Create an Interchange object for representations in other formats
interchange = forcefield.create_interchange(topology)
Detailed examples of using SMIRNOFF with the toolkit can be found in the documentation.
See FAQ.md
for answers to a variety of common problems, such as:
Topology
with bond orders?For a partial list of contributors, see the GitHub Contributors page. Others whose work constitutes significant contributions but did not make it into the git
history include Shuzhe Wang.