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
Topology
A collection of molecules, as well as optional box vector, positions, and other information. A
Topology
describes the chemistry of a system, but has no force field parameters.- 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.- OpenFF
Interchange
A
Topology
that has been parametrized by aForceField
. AnInterchange
contains all the information needed to calculate an energy or start a simulation.Interchange
also provides methods to export this information to MD simulation engines.