# 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 particle representing a virtual site whose position is defined in terms of `Atom` positions.
`TopologyAtom` | A TopologyAtom is a lightweight data structure that represents a single openforcefield.topology.molecule.Atom in a Topology.
`TopologyBond` | A TopologyBond is a lightweight data structure that represents a single openforcefield.topology.molecule.Bond in a Topology.
`TopologyVirtualSite` | A TopologyVirtualSite is a lightweight data structure that represents a single openforcefield.topology.molecule.VirtualSite in a Topology.