5.17. AMBER PRMTOP topology parser¶
Reads an AMBER top file to build the system.
Amber keywords are turned into the following attributes:
AMBER flag |
MDAnalysis attribute |
ATOM_NAME |
names |
CHARGE |
charges |
ATOMIC_NUMBER |
elements |
MASS |
masses |
BONDS_INC_HYDROGEN BONDS_WITHOUT_HYDROGEN |
bonds |
ANGLES_INC_HYDROGEN ANGLES_WITHOUT_HYDROGEN |
angles |
DIHEDRALS_INC_HYDROGEN DIHEDRALS_WITHOUT_HYDROGEN |
dihedrals / improper |
ATOM_TYPE_INDEX |
type_indices |
AMBER_ATOM_TYPE |
types |
RESIDUE_LABEL |
resnames |
RESIDUE_POINTER |
residues |
Note
The Amber charge is converted to electron charges as used in MDAnalysis and other packages. To get back Amber charges, multiply by 18.2223.
5.17.1. Classes¶
-
class
MDAnalysis.topology.TOPParser.
TOPParser
(filename)[source]¶ Reads topology information from an AMBER top file.
Reads the following Attributes if in topology: - Atomnames - Charges - Masses - Elements - Atomtypes - Resnames - Type_indices - Bonds - Angles - Dihedrals (inc. impropers)
- Guesses the following attributes:
Elements (if not included in topology)
The format is defined in PARM parameter/topology file specification. The reader tries to detect if it is a newer (AMBER 12?) file format by looking for the flag “ATOMIC_NUMBER”.
Changed in version 0.7.6: parses both amber10 and amber12 formats
Changed in version 0.19.0: parses bonds, angles, dihedrals, and impropers
-
close
()¶ Close the trajectory file.
-
convert_forces_from_native
(force, inplace=True)¶ Conversion of forces array force from native to base units
- Parameters
force (array_like) – Forces to transform
inplace (bool (optional)) – Whether to modify the array inplace, overwriting previous data
Note
By default, the input force is modified in place and also returned. In-place operations improve performance because allocating new arrays is avoided.
New in version 0.7.7.
-
convert_forces_to_native
(force, inplace=True)¶ Conversion of force array force from base to native units.
- Parameters
force (array_like) – Forces to transform
inplace (bool (optional)) – Whether to modify the array inplace, overwriting previous data
Note
By default, the input force is modified in place and also returned. In-place operations improve performance because allocating new arrays is avoided.
New in version 0.7.7.
-
convert_pos_from_native
(x, inplace=True)¶ Conversion of coordinate array x from native units to base units.
- Parameters
x (array_like) – Positions to transform
inplace (bool (optional)) – Whether to modify the array inplace, overwriting previous data
Note
By default, the input x is modified in place and also returned. In-place operations improve performance because allocating new arrays is avoided.
Changed in version 0.7.5: Keyword inplace can be set to
False
so that a modified copy is returned unless no conversion takes place, in which case the reference to the unmodified x is returned.
-
convert_pos_to_native
(x, inplace=True)¶ Conversion of coordinate array x from base units to native units.
- Parameters
x (array_like) – Positions to transform
inplace (bool (optional)) – Whether to modify the array inplace, overwriting previous data
Note
By default, the input x is modified in place and also returned. In-place operations improve performance because allocating new arrays is avoided.
Changed in version 0.7.5: Keyword inplace can be set to
False
so that a modified copy is returned unless no conversion takes place, in which case the reference to the unmodified x is returned.
-
convert_time_from_native
(t, inplace=True)¶ Convert time t from native units to base units.
- Parameters
t (array_like) – Time values to transform
inplace (bool (optional)) – Whether to modify the array inplace, overwriting previous data
Note
By default, the input t is modified in place and also returned (although note that scalar values t are passed by value in Python and hence an in-place modification has no effect on the caller.) In-place operations improve performance because allocating new arrays is avoided.
Changed in version 0.7.5: Keyword inplace can be set to
False
so that a modified copy is returned unless no conversion takes place, in which case the reference to the unmodified x is returned.
-
convert_time_to_native
(t, inplace=True)¶ Convert time t from base units to native units.
- Parameters
t (array_like) – Time values to transform
inplace (bool, optional) – Whether to modify the array inplace, overwriting previous data
Note
By default, the input t is modified in place and also returned. (Also note that scalar values t are passed by value in Python and hence an in-place modification has no effect on the caller.)
Changed in version 0.7.5: Keyword inplace can be set to
False
so that a modified copy is returned unless no conversion takes place, in which case the reference to the unmodified x is returned.
-
convert_velocities_from_native
(v, inplace=True)¶ Conversion of velocities array v from native to base units
- Parameters
v (array_like) – Velocities to transform
inplace (bool (optional)) – Whether to modify the array inplace, overwriting previous data
Note
By default, the input v is modified in place and also returned. In-place operations improve performance because allocating new arrays is avoided.
New in version 0.7.5.
-
convert_velocities_to_native
(v, inplace=True)¶ Conversion of coordinate array v from base to native units
- Parameters
v (array_like) – Velocities to transform
inplace (bool (optional)) – Whether to modify the array inplace, overwriting previous data
Note
By default, the input v is modified in place and also returned. In-place operations improve performance because allocating new arrays is avoided.
New in version 0.7.5.
-
parse
(**kwargs)[source]¶ Parse Amber PRMTOP topology file filename.
- Returns
- Return type
A MDAnalysis Topology object
-
parse_bonded
(num_per_record, numlines)[source]¶ Extracts bond information from PARM7 format files
- Parameters
Note
For the bond/angle sections of parm7 files, the atom numbers are set to coordinate array index values. As detailed in http://ambermd.org/formats.html to recover the actual atom number, one should divide the values by 3 and add 1. Here, since we want to satisfy zero-indexing, we only divide by 3.
-
parse_chunks
(data, chunksize)[source]¶ Helper function to parse AMBER PRMTOP bonds/angles.
- Parameters
data (list of int) – Input list of the parm7 bond/angle section, zero-indexed
num_per_record (int) – The number of entries for each record in the input list
- Returns
vals – A list of tuples containing the atoms involved in a given bonded interaction
- Return type
list of int tuples
Note
In the parm7 format this information is structured in the following format: [ atoms 1:n, internal index ] Where 1:n represent the ids of the n atoms involved in the bond/angle and the internal index links to a given set of FF parameters. Therefore, to extract the required information, we split out the list into chunks of size num_per_record, and only extract the atom ids.
-
parse_dihedrals
(diha, dihh)[source]¶ Combines hydrogen and non-hydrogen containing AMBER dihedral lists and extracts sublists for conventional dihedrals and improper angles
- Parameters
diha (list of tuples) – The atom ids of dihedrals not involving hydrogens
dihh (list of tuples) – The atom ids of dihedrals involving hydrogens
- Returns
dihedrals (
Dihedrals
) – ADihedrals
instance containing a list of all unique dihedrals as defined by the parm7 fileimpropers (
Impropers
) – AImpropers
instance containing a list of all unique improper dihedrals as defined by the parm7 file
Note
As detailed in http://ambermd.org/formats.html, the dihedral sections of parm7 files contain information about both conventional dihedrals and impropers. The following must be accounted for: 1) If the fourth atom in a dihedral entry is given a negative value, this indicates that it is an improper. 2) If the third atom in a dihedral entry is given a negative value, this indicates that it 1-4 NB interactions are ignored for this dihedrals. This could be due to the dihedral within a ring, or if it is part of a multi-term dihedral definition or if it is an improper.
-
parse_elements
(num_per_record, numlines)[source]¶ Extracts the atomic numbers of each atom and converts to element type
- Parameters
- Returns
attr – A
Elements
instance containing the element of each atom as defined in the parm7 file- Return type
Elements
Note
If the record contains atomic numbers <= 0, these will be treated as dummy elements and an attempt will be made to guess the element based on atom type. See issue #2306 for more details.
-
parse_type_indices
(num_per_record, numlines)[source]¶ Extracts the index of atom types of the each atom involved in Lennard Jones (6-12) interactions.