11.3.1. Core Topology object — MDAnalysis.core.topology
New in version 0.16.0.
Topology
is the core object that holds all topology information.
TODO: Add in-depth discussion.
Notes
For developers: In MDAnalysis 0.16.0 this new topology system was introduced and discussed as issue #363; this issue contains key information and discussions on the new system. The issue number 363 is also being used as a short-hand in discussions to refer to the new topology system.
11.3.1.1. Classes
- class MDAnalysis.core.topology.Topology(n_atoms=1, n_res=1, n_seg=1, attrs=None, atom_resindex=None, residue_segindex=None)[source]
In-memory, array-based topology database.
The topology model of MDanalysis features atoms, which must each be a member of one residue. Each residue, in turn, must be a member of one segment. The details of maintaining this heirarchy, and mappings of atoms to residues, residues to segments, and vice-versa, are handled internally by this object.
- Parameters
n_atoms (int) – number of atoms in topology. Must be larger then 1 at each level
n_residues (int) – number of residues in topology. Must be larger then 1 at each level
n_segments (int) – number of segments in topology. Must be larger then 1 at each level
attrs (TopologyAttr objects) – components of the topology to be included
atom_resindex (array) – 1-D array giving the resindex of each atom in the system
residue_segindex (array) – 1-D array giving the segindex of each residue in the system
- add_Residue(segment, **new_attrs)[source]
- Return type
residx of the new Residue
- Raises
NoDataError – If not all data was provided. This error is raised before any changes
Changed in version 2.1.0: Added use of _add_new to TopologyAttr resize
- add_Segment(**new_attrs)[source]
Adds a new Segment to the Topology
- Parameters
new_attrs (dict) – the new attributes for the new segment, eg {‘segid’: ‘B’}
- Raises
NoDataError – if an attribute wasn’t specified.
- Returns
ix – the idx of the new segment
- Return type
Changed in version 2.1.0: Added use of _add_new to resize topology attrs
- add_TopologyAttr(topologyattr)[source]
Add a new TopologyAttr to the Topology.
- Parameters
topologyattr (TopologyAttr) –
- del_TopologyAttr(topologyattr)[source]
Remove a TopologyAttr from the Topology.
If it is not present, nothing happens.
- Parameters
topologyattr (TopologyAttr) –
New in version 2.0.0.
- property guessed_attributes
A list of the guessed attributes in this topology
- property read_attributes
A list of the attributes read from the topology
- class MDAnalysis.core.topology.TransTable(n_atoms, n_residues, n_segments, atom_resindex=None, residue_segindex=None)[source]
Membership tables with methods to translate indices across levels.
There are three levels; Atom, Residue and Segment. Each Atom must belong in a Residue, each Residue must belong to a Segment.
When translating upwards, eg finding which Segment a Residue belongs in, a single numpy array is returned. When translating downwards, two options are available; a concatenated result (suffix _1) or a list for each parent object (suffix _2d).
- Parameters
n_atoms (int) – number of atoms in topology
n_residues (int) – number of residues in topology
n_segments (int) – number of segments in topology
atom_resindex (1-D array) – resindex for each atom in the topology; the number of unique values in this array must be <= n_residues, and the array must be length n_atoms; giving None defaults to placing all atoms in residue 0
residue_segindex (1-D array) – segindex for each residue in the topology; the number of unique values in this array must be <= n_segments, and the array must be length n_residues; giving None defaults to placing all residues in segment 0
- .. versionchanged:: 2.3.0
Lazy building RA and SR.
- atoms2residues(aix)[source]
Get residue indices for each atom.
- Parameters
aix (array) – atom indices
- Returns
rix – residue index for each atom
- Return type
array
- atoms2segments(aix)[source]
Get segment indices for each atom.
- Parameters
aix (array) – atom indices
- Returns
rix – segment index for each atom
- Return type
array
- residues2atoms_1d(rix)[source]
Get atom indices collectively represented by given residue indices.
- Parameters
rix (array) – residue indices
- Returns
aix – indices of atoms present in residues, collectively
- Return type
array
- residues2atoms_2d(rix)[source]
Get atom indices represented by each residue index.
- Parameters
rix (array) – residue indices
- Returns
raix – each element corresponds to a residue index, in order given in rix, with each element being an array of the atom indices present in that residue
- Return type
- residues2segments(rix)[source]
Get segment indices for each residue.
- Parameters
rix (array) – residue indices
- Returns
six – segment index for each residue
- Return type
array
- segments2atoms_1d(six)[source]
Get atom indices collectively represented by given segment indices.
- Parameters
six (array) – segment indices
- Returns
aix – sorted indices of atoms present in segments, collectively
- Return type
array
- segments2atoms_2d(six)[source]
Get atom indices represented by each segment index.
- Parameters
six (array) – residue indices
- Returns
saix – each element corresponds to a segment index, in order given in six, with each element being an array of the atom indices present in that segment
- Return type
- segments2residues_1d(six)[source]
Get residue indices collectively represented by given segment indices
- Parameters
six (array) – segment indices
- Returns
rix – sorted indices of residues present in segments, collectively
- Return type
array
- segments2residues_2d(six)[source]
Get residue indices represented by each segment index.
- Parameters
six (array) – residue indices
- Returns
srix – each element corresponds to a segment index, in order given in six, with each element being an array of the residue indices present in that segment
- Return type
11.3.1.2. Helper functions
- MDAnalysis.core.topology.make_downshift_arrays(upshift, nparents)[source]
From an upwards translation table, create the opposite direction
Turns a many to one mapping (eg atoms to residues) to a one to many mapping (residues to atoms)
- Parameters
upshift (array_like) – Array of integers describing which parent each item belongs to
nparents (integer) – Total number of parents that exist.
- Returns
downshift – An array of arrays, each containing the indices of the children of each parent. Length nparents + 1
- Return type
array_like (dtype object)
Examples
To find the residue to atom mappings for a given atom to residue mapping:
>>> import numpy as np >>> import MDAnalysis as mda >>> from MDAnalysis.core.topology import make_downshift_arrays >>> atom2res = np.array([0, 1, 0, 2, 2, 0, 2]) >>> make_downshift_arrays(atom2res, 3) array([array([0, 2, 5]), array([1]), array([3, 4, 6]), None], dtype=object)
Entry 0 corresponds to residue 0 and says that this contains atoms 0, 2 & 5
Notes
The final entry in the return array will be
None
to ensure that the dtype of the array isobject
.Warning
This means negative indexing should never be used with these arrays.