A graph representation of a molecule containing enough information to unambiguously parametrize it. Required data fields for a
atoms: element (integer), formal_charge (integer), is_aromatic (boolean), stereochemistry (
bonds: order (integer), is_aromatic (boolean), stereochemistry (
There are several other optional attributes such as
partial_chargesthat may be populated in the
Moleculedata 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.
Molecule.propertiesis 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.
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
Systemobjects are being used for this purpose right now. Development is underway on GitHub.
An object that efficiently holds many OpenFF
Moleculeobjects. The atom indexing in a
Topologymay differ from those of the underlying
The efficient data structures that make up an OpenFF
Topology. There is one
TopologyMoleculefor each instance of a chemical species in a
Topology. However, each unique chemical species has a single OpenFF
Moleculerepresenting it, which may be shared by multiple
TopologyMolecules contain an atom index map, as several copies of the same chemical species in a
Topologymay be present with different atom orderings. This data structure allows the OpenFF toolkit to only parametrize each unique
Moleculeonce, and then write a copy of the assigned parameters out for each of the
Topology(accounting for atom indexing differences in the process).
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
ParameterHandlers, however some top-level SMIRNOFF data is stored in the