Core concepts
- OpenFF
Molecule
A graph representation of a molecule containing enough information to unambiguously parametrize it. Required data fields for a
Molecule
are:atoms
: element (integer), formal_charge (integer), is_aromatic (boolean), stereochemistry ('R'
/'S'
/None
)bonds
: order (integer), is_aromatic (boolean), stereochemistry ('E'
/'Z'
/None
)
There are several other optional attributes such as
conformers
andpartial_charges
that may be populated in theMolecule
data structure. These are considered “optional” because they are not required for system creation, however if those fields are populated, the user MAY use them to override values that would otherwise be generated during system creation.A dictionary,
Molecule.properties
is exposed, which is a Python dict that can be populated with arbitrary data. This data should be considered cosmetic and should not affect system creation. Whenever possible, molecule serialization or format conversion should preserve this data.- OpenFF
System
An object that contains everything needed to calculate a molecular system’s energy, except the atomic coordinates. Note that this does not exist yet, and that OpenMM
System
objects are being used for this purpose right now. Development is underway on GitHub.- OpenFF
Topology
An object that efficiently holds many OpenFF
Molecule
objects. The atom indexing in aTopology
may differ from those of the underlyingMolecule
s- OpenFF
TopologyMolecule
The efficient data structures that make up an OpenFF
Topology
. There is oneTopologyMolecule
for each instance of a chemical species in aTopology
. However, each unique chemical species has a single OpenFFMolecule
representing it, which may be shared by multipleTopologyMolecules
.TopologyMolecule
s contain an atom index map, as several copies of the same chemical species in aTopology
may be present with different atom orderings. This data structure allows the OpenFF toolkit to only parametrize each uniqueMolecule
once, and then write a copy of the assigned parameters out for each of theMolecule
in theTopology
(accounting for atom indexing differences in the process).- OpenFF
ForceField
An object generated from an OFFXML file (or other source of SMIRNOFF data). Most information from the SMIRNOFF data source is stored in this object’s several
ParameterHandler
s, however some top-level SMIRNOFF data is stored in theForceField
object itself.