# openforcefield.topology.Topology

class `openforcefield.topology.``Topology`(other=None)

  A Topology is a chemical representation of a system containing one or more molecules appearing in a specified order.

  As of the 0.7.0 release, the Topology particle indexing system puts all atoms before all virtualsites. This ensures that atoms keep the same Topology particle index value, even if the Topology is modified during system creation by the addition of virtual sites.

  Warning

  This API is experimental and subject to change.

  Examples

  Import some utilities

      >>> from simtk.openmm import app
      >>> from openforcefield.tests.utils import get_data_file_path, get_packmol_pdb_file_path
      >>> pdb_filepath = get_packmol_pdb_file_path('cyclohexane_ethanol_0.4_0.6')
      >>> monomer_names = ('cyclohexane', 'ethanol')

  Create a Topology object from a PDB file and sdf files defining the molecular contents

      >>> from openforcefield.topology import Molecule, Topology
      >>> pdbfile = app.PDBFile(pdb_filepath)
      >>> sdf_filepaths = [get_data_file_path(f'systems/monomers/{name}.sdf') for name in monomer_names]
      >>> unique_molecules = [Molecule.from_file(sdf_filepath) for sdf_filepath in sdf_filepaths]
      >>> topology = Topology.from_openmm(pdbfile.topology, unique_molecules=unique_molecules)

  Create a Topology object from a PDB file and IUPAC names of the molecular contents

      >>> pdbfile = app.PDBFile(pdb_filepath)
      >>> unique_molecules = [Molecule.from_iupac(name) for name in monomer_names]
      >>> topology = Topology.from_openmm(pdbfile.topology, unique_molecules=unique_molecules)

  Create an empty Topology object and add a few copies of a single benzene molecule

      >>> topology = Topology()
      >>> molecule = Molecule.from_iupac('benzene')
      >>> molecule_topology_indices = [topology.add_molecule(molecule) for index in range(10)]

  Attributes
    `angles`

      Iterable of Tuple[TopologyAtom]: iterator over the angles in this Topology.

    `aromaticity_model`

      Get the aromaticity model applied to all molecules in the topology.

    `box_vectors`

      Return the box vectors of the topology, if specified

    `charge_model`

      Get the partial charge model applied to all molecules in the topology.

    `constrained_atom_pairs`

      Returns the constrained atom pairs of the Topology

    `fractional_bond_order_model`

      Get the fractional bond order model for the Topology.

    `impropers`

      Iterable of Tuple[TopologyAtom]: iterator over the improper torsions in this Topology.

    `n_angles`

      int: number of angles in this Topology.

    `n_impropers`

      int: number of improper torsions in this Topology.

    `n_propers`

      int: number of proper torsions in this Topology.

    `n_reference_molecules`

      Returns the number of reference (unique) molecules in in this Topology.

    `n_topology_atoms`

      Returns the number of topology atoms in in this Topology.

    `n_topology_bonds`

      Returns the number of TopologyBonds in in this Topology.

    `n_topology_molecules`

      Returns the number of topology molecules in in this Topology.

    `n_topology_particles`

      Returns the number of topology particles (TopologyAtoms and TopologyVirtualSites) in in this Topology.

    `n_topology_virtual_sites`

      Returns the number of TopologyVirtualSites in in this Topology.

    `propers`

      Iterable of Tuple[TopologyAtom]: iterator over the proper torsions in this Topology.

    `reference_molecules`

      Get an iterator of reference molecules in this Topology.

    `topology_atoms`

      Returns an iterator over the atoms in this Topology.

    `topology_bonds`

      Returns an iterator over the bonds in this Topology

    `topology_molecules`

      Returns an iterator over all the TopologyMolecules in this Topology

    `topology_particles`

      Returns an iterator over the particles (TopologyAtoms and TopologyVirtualSites) in this Topology.

    `topology_virtual_sites`

      Get an iterator over the virtual sites in this Topology

  Methods

  `add_constraint`(self, iatom, jatom[, distance]) | Mark a pair of atoms as constrained.
  `add_molecule`(self, molecule[, …]) | Add a Molecule to the Topology.
  `add_particle`(self, particle) | Add a Particle to the Topology.
  `assert_bonded`(self, atom1, atom2) | Raise an exception if the specified atoms are not bonded in the topology.
  `atom`(self, atom_topology_index) | Get the TopologyAtom at a given Topology atom index.
  `bond`(self, bond_topology_index) | Get the TopologyBond at a given Topology bond index.
  `chemical_environment_matches`(self, query[, …]) | Retrieve all matches for a given chemical environment query.
  `from_bson`(serialized) | Instantiate an object from a BSON serialized representation.
  `from_dict`(d) | Static constructor from dictionary representation.
  `from_json`(serialized) | Instantiate an object from a JSON serialized representation.
  `from_mdtraj`(mdtraj_topology[, unique_molecules]) | Construct an openforcefield Topology object from an MDTraj Topology object.
  `from_messagepack`(serialized) | Instantiate an object from a MessagePack serialized representation.
  `from_molecules`(molecules) | Create a new Topology object containing one copy of each of the specified molecule(s).
  `from_openmm`(openmm_topology[, unique_molecules]) | Construct an openforcefield Topology object from an OpenMM Topology object.
  `from_parmed`(parmed_structure[, unique_molecules]) | Warning This functionality will be implemented in a future toolkit release.
  `from_pickle`(serialized) | Instantiate an object from a pickle serialized representation.
  `from_toml`(serialized) | Instantiate an object from a TOML serialized representation.
  `from_xml`(serialized) | Instantiate an object from an XML serialized representation.
  `from_yaml`(serialized) | Instantiate from a YAML serialized representation.
  `get_bond_between`(self, i, j) | Returns the bond between two atoms
  `is_bonded`(self, i, j) | Returns True if the two atoms are bonded
  `is_constrained`(self, iatom, jatom) | Check if a pair of atoms are marked as constrained.
  `to_bson`(self) | Return a BSON serialized representation.
  `to_dict`(self) | Convert to dictionary representation.
  `to_json`(self[, indent]) | Return a JSON serialized representation.
  `to_messagepack`(self) | Return a MessagePack representation.
  `to_openmm`(self[, ensure_unique_atom_names]) | Create an OpenMM Topology object.
  `to_parmed`(self) | Warning This functionality will be implemented in a future toolkit release.
  `to_pickle`(self) | Return a pickle serialized representation.
  `to_toml`(self) | Return a TOML serialized representation.
  `to_xml`(self[, indent]) | Return an XML representation.
  `to_yaml`(self) | Return a YAML serialized representation.
  `virtual_site`(self, vsite_topology_index) | Get the TopologyAtom at a given Topology atom index.

  `__init__`(self, other=None)

    Create a new Topology.

    Parameters
      other optional, default=None

        If specified, attempt to construct a copy of the Topology from the specified object. This might be a Topology object, or a file that can be used to construct a Topology object or serialized Topology object.

  Methods

  `__init__`(self[, other]) | Create a new Topology.
  `add_constraint`(self, iatom, jatom[, distance]) | Mark a pair of atoms as constrained.
  `add_molecule`(self, molecule[, …]) | Add a Molecule to the Topology.
  `add_particle`(self, particle) | Add a Particle to the Topology.
  `assert_bonded`(self, atom1, atom2) | Raise an exception if the specified atoms are not bonded in the topology.
  `atom`(self, atom_topology_index) | Get the TopologyAtom at a given Topology atom index.
  `bond`(self, bond_topology_index) | Get the TopologyBond at a given Topology bond index.
  `chemical_environment_matches`(self, query[, …]) | Retrieve all matches for a given chemical environment query.
  `from_bson`(serialized) | Instantiate an object from a BSON serialized representation.
  `from_dict`(d) | Static constructor from dictionary representation.
  `from_json`(serialized) | Instantiate an object from a JSON serialized representation.
  `from_mdtraj`(mdtraj_topology[, unique_molecules]) | Construct an openforcefield Topology object from an MDTraj Topology object.
  `from_messagepack`(serialized) | Instantiate an object from a MessagePack serialized representation.
  `from_molecules`(molecules) | Create a new Topology object containing one copy of each of the specified molecule(s).
  `from_openmm`(openmm_topology[, unique_molecules]) | Construct an openforcefield Topology object from an OpenMM Topology object.
  `from_parmed`(parmed_structure[, unique_molecules]) | Warning This functionality will be implemented in a future toolkit release.
  `from_pickle`(serialized) | Instantiate an object from a pickle serialized representation.
  `from_toml`(serialized) | Instantiate an object from a TOML serialized representation.
  `from_xml`(serialized) | Instantiate an object from an XML serialized representation.
  `from_yaml`(serialized) | Instantiate from a YAML serialized representation.
  `get_bond_between`(self, i, j) | Returns the bond between two atoms
  `is_bonded`(self, i, j) | Returns True if the two atoms are bonded
  `is_constrained`(self, iatom, jatom) | Check if a pair of atoms are marked as constrained.
  `to_bson`(self) | Return a BSON serialized representation.
  `to_dict`(self) | Convert to dictionary representation.
  `to_json`(self[, indent]) | Return a JSON serialized representation.
  `to_messagepack`(self) | Return a MessagePack representation.
  `to_openmm`(self[, ensure_unique_atom_names]) | Create an OpenMM Topology object.
  `to_parmed`(self) | Warning This functionality will be implemented in a future toolkit release.
  `to_pickle`(self) | Return a pickle serialized representation.
  `to_toml`(self) | Return a TOML serialized representation.
  `to_xml`(self[, indent]) | Return an XML representation.
  `to_yaml`(self) | Return a YAML serialized representation.
  `virtual_site`(self, vsite_topology_index) | Get the TopologyAtom at a given Topology atom index.

  Attributes

  `angles` | Iterable of Tuple[TopologyAtom]: iterator over the angles in this Topology.
  `aromaticity_model` | Get the aromaticity model applied to all molecules in the topology.
  `box_vectors` | Return the box vectors of the topology, if specified Returns ——- box_vectors : simtk.unit.Quantity wrapped numpy array The unit-wrapped box vectors of this topology
  `charge_model` | Get the partial charge model applied to all molecules in the topology.
  `constrained_atom_pairs` | Returns the constrained atom pairs of the Topology
  `fractional_bond_order_model` | Get the fractional bond order model for the Topology.
  `impropers` | Iterable of Tuple[TopologyAtom]: iterator over the improper torsions in this Topology.
  `n_angles` | int: number of angles in this Topology.
  `n_impropers` | int: number of improper torsions in this Topology.
  `n_propers` | int: number of proper torsions in this Topology.
  `n_reference_molecules` | Returns the number of reference (unique) molecules in in this Topology.
  `n_topology_atoms` | Returns the number of topology atoms in in this Topology.
  `n_topology_bonds` | Returns the number of TopologyBonds in in this Topology.
  `n_topology_molecules` | Returns the number of topology molecules in in this Topology.
  `n_topology_particles` | Returns the number of topology particles (TopologyAtoms and TopologyVirtualSites) in in this Topology.
  `n_topology_virtual_sites` | Returns the number of TopologyVirtualSites in in this Topology.
  `propers` | Iterable of Tuple[TopologyAtom]: iterator over the proper torsions in this Topology.
  `reference_molecules` | Get an iterator of reference molecules in this Topology.
  `topology_atoms` | Returns an iterator over the atoms in this Topology.
  `topology_bonds` | Returns an iterator over the bonds in this Topology
  `topology_molecules` | Returns an iterator over all the TopologyMolecules in this Topology
  `topology_particles` | Returns an iterator over the particles (TopologyAtoms and TopologyVirtualSites) in this Topology.
  `topology_virtual_sites` | Get an iterator over the virtual sites in this Topology