Topology stores the topological information about a system.
The structure of a Topology object is similar to that of a PDB file. It consists of a set of Chains (often but not always corresponding to polymer chains). Each Chain contains a set of Residues, and each Residue contains a set of Atoms. In addition, the Topology stores a list of which atom pairs are bonded to each other.
Atom and residue names should follow the PDB 3.0 nomenclature for all molecules for which one exists.
Examples
>>> topology = md.load('example.pdb').topology
>>> print(topology)
<mdtraj.Topology with 1 chains, 3 residues, 22 atoms, 21 bonds at 0x105a98e90>
>>> table, bonds = topology.to_dataframe()
>>> print(table.head())
   serial name element  resSeq resName  chainID
0       0   H1       H       0     CYS        0
1       1  CH3       C       0     CYS        0
2       2   H2       H       0     CYS        0
3       3   H3       H       0     CYS        0
4       4    C       C       0     CYS        0
>>> # rename residue "CYS" to "CYSS"
>>> table[table['residue'] == 'CYS']['residue'] = 'CYSS'
>>> print(table.head())
   serial name element  resSeq resName   chainID
0       0   H1       H       0     CYSS        0
1       1  CH3       C       0     CYSS        0
2       2   H2       H       0     CYSS        0
3       3   H3       H       0     CYSS        0
4       4    C       C       0     CYSS        0
>>> t2 = md.Topology.from_dataframe(table, bonds)
Attributes
| chains | Iterator over all Chains in the Topology. | 
| residues | Iterator over all Residues in the Topology. | 
| atoms | Iterator over all Atoms in the Topology. | 
Create a new Topology object
Methods
| __init__() | Create a new Topology object | 
| add_atom(name, element, residue) | Create a new Atom and add it to the Topology. | 
| add_bond(atom1, atom2) | Create a new bond and add it to the Topology. | 
| add_chain() | Create a new Chain and add it to the Topology. | 
| add_residue(name, chain[, resSeq]) | Create a new Residue and add it to the Topology. | 
| atom(index) | Get a specific atom by index. | 
| chain(index) | Get a specific chain by index. | 
| copy() | Return a copy of the topology | 
| create_disulfide_bonds(positions) | Identify disulfide bonds based on proximity and add them to the Topology. | 
| create_standard_bonds() | Create bonds based on the atom and residue names for all standard residue types. | 
| from_dataframe(atoms[, bonds]) | Create a mdtraj topology from a pandas data frame | 
| from_openmm(value) | Create a mdtraj topology from an OpenMM topology | 
| join(other) | Join two topologies together | 
| residue(index) | Get a specific residue by index. | 
| subset(atom_indices) | Create a new Topology from a subset of the atoms in an existing topology. | 
| to_dataframe() | Convert this topology into a pandas dataframe | 
| to_openmm() | Convert this topology into OpenMM topology | 
Attributes
| atoms | Iterator over all Atoms in the Topology. | 
| bonds | Iterator over all bonds (each represented as a tuple of two Atoms) in the Topology. | 
| chains | Iterator over all Chains in the Topology. | 
| n_atoms | Get the number of atoms in the Topology | 
| n_chains | Get the number of chains in the Topology | 
| n_residues | Get the number of residues in the Topology | 
| residues | Iterator over all Residues in the Topology. | 
Return a copy of the topology
| Returns: | out : Topology 
 | 
|---|
Join two topologies together
| Parameters: | other : Topology 
 | 
|---|---|
| Returns: | out : Topology 
 | 
Convert this topology into OpenMM topology
| Returns: | topology : simtk.openmm.app.Topology 
 | 
|---|
Create a mdtraj topology from an OpenMM topology
| Parameters: | value : simtk.openmm.app.Topology 
 | 
|---|
Convert this topology into a pandas dataframe
| Returns: | atoms : pandas.DataFrame 
 bonds : np.ndarray 
 | 
|---|
Create a mdtraj topology from a pandas data frame
| Parameters: | atoms : pandas.DataFrame 
 bonds : np.ndarray, shape=(n_bonds, 2), dtype=int, optional 
 | 
|---|
See also
Create a new Chain and add it to the Topology.
| Returns: | chain : mdtraj.topology.Chain 
 | 
|---|
Create a new Residue and add it to the Topology.
| Parameters: | name : str 
 chain : mdtraj.topology.Chain 
 resSeq : int, optional 
 | 
|---|---|
| Returns: | residue : mdtraj.topology.Residue 
 | 
Create a new Atom and add it to the Topology.
| Parameters: | name : str 
 element : mdtraj.pdb.element.Element 
 residue : mdtraj.topology.Residue 
 | 
|---|---|
| Returns: | atom : mdtraj.topology.Atom 
 | 
Create a new bond and add it to the Topology.
| Parameters: | atom1 : mdtraj.topology.Atom 
 atom2 : mdtraj.topology.Atom 
 | 
|---|
Get a specific chain by index. These indices start from zero.
| Returns: | chain : Chain 
 | 
|---|
Iterator over all Chains in the Topology.
| Returns: | chainiter : listiterator 
 | 
|---|
Get the number of chains in the Topology
Get a specific residue by index. These indices start from zero.
| Returns: | residue : Residue 
 | 
|---|
Iterator over all Residues in the Topology.
| Returns: | residueiter : generator 
 | 
|---|
Get the number of residues in the Topology
Get a specific atom by index. These indices start from zero.
| Returns: | atom : Atom 
 | 
|---|
Iterator over all Atoms in the Topology.
| Returns: | atomiter : generator 
 | 
|---|
Get the number of atoms in the Topology
Iterator over all bonds (each represented as a tuple of two Atoms) in the Topology.
| Returns: | atomiter : generator 
 | 
|---|
Create bonds based on the atom and residue names for all standard residue types.
Identify disulfide bonds based on proximity and add them to the Topology.
| Parameters: | positions : list 
 | 
|---|
Create a new Topology from a subset of the atoms in an existing topology.
| Parameters: | atom_indices array_like 
 | 
|---|
Notes
The existing topology will not be altered.