# Molecular topology representations

This module provides pure-Python classes for representing molecules and molecular systems. These classes offer several advantages over corresponding Topology objects in OpenMM and MDTraj, including offering serialization to a variety of standard formats (including XML, JSON, YAML, BSON, TOML, and MessagePack).

## Primary objects

 FrozenMolecule Immutable chemical representation of a molecule, such as a small molecule or biopolymer. Molecule Mutable chemical representation of a molecule, such as a small molecule or biopolymer. Topology A Topology is a chemical representation of a system containing one or more molecules appearing in a specified order. TopologyMolecule TopologyMolecules are built to be an efficient way to store large numbers of copies of the same molecule for parameterization and system preparation.

## Secondary objects

 Particle Base class for all particles in a molecule. Atom A particle representing a chemical atom. Bond Chemical bond representation. VirtualSite A container representing one or more virtual particles whose positions are defined in terms of Atom positions. VirtualParticle A single particle owned by a VirtualSite TopologyVirtualParticle BondChargeVirtualSite A particle representing a "Bond Charge"-type virtual site, in which the location of the charge is specified by the positions of two atoms. MonovalentLonePairVirtualSite A particle representing a "Monovalent Lone Pair"-type virtual site, in which the location of the charge is specified by the positions of three atoms. DivalentLonePairVirtualSite A particle representing a "Divalent Lone Pair"-type virtual site, in which the location of the charge is specified by the positions of three atoms. TrivalentLonePairVirtualSite A particle representing a "Trivalent Lone Pair"-type virtual site, in which the location of the charge is specified by the positions of four atoms. TopologyAtom A TopologyAtom is a lightweight data structure that represents a single openff.toolkit.topology.molecule.Atom in a Topology. TopologyBond A TopologyBond is a lightweight data structure that represents a single openff.toolkit.topology.molecule.Bond in a Topology. TopologyVirtualSite A TopologyVirtualSite is a lightweight data structure that represents a single openff.toolkit.topology.molecule.VirtualSite in a Topology. ValenceDict Enforce uniqueness in atom indices. ImproperDict Symmetrize improper torsions.