7.7. GRO file format — MDAnalysis.coordinates.GRO
¶
Classes to read and write Gromacs GRO coordinate files; see the notes on the GRO format which includes a conversion routine for the box.
7.7.1. Developer notes: GROWriter
format strings¶
The GROWriter
class has a GROWriter.fmt
attribute, which is a dictionary of different
strings for writing lines in .gro
files. These are as follows:
n_atoms
For the first line of the gro file, supply the number of atoms in the system. E.g.:
fmt['n_atoms'].format(42)
xyz
An atom line without velocities. Requires that the ‘resid’, ‘resname’, ‘name’, ‘index’ and ‘pos’ keys be supplied. E.g.:
fmt['xyz'].format(resid=1, resname='SOL', name='OW2', index=2, pos=(0.0, 1.0, 2.0))
xyz_v
- As above, but with velocities. Needs an additional keyword ‘vel’.
box_orthorhombic
The final line of the gro file which gives box dimensions. Requires the box keyword to be given, which should be the three cartesian dimensions. E.g.:
fmt['box_orthorhombic'].format(box=(10.0, 10.0, 10.0))
box_triclinic
- As above, but for a non orthorhombic box. Requires the box keyword, but this time as a length 9 vector. This is a flattened version of the (3,3) triclinic vector representation of the unit cell. The rearrangement into the odd gromacs order is done automatically.
7.7.2. Classes¶
-
class
MDAnalysis.coordinates.GRO.
Timestep
(n_atoms, **kwargs)[source]¶ Create a Timestep, representing a frame of a trajectory
Parameters: - n_atoms (int) – The total number of atoms this Timestep describes
- positions (bool, optional) – Whether this Timestep has position information [
True
] - velocities (bool (optional)) – Whether this Timestep has velocity information [
False
] - forces (bool (optional)) – Whether this Timestep has force information [
False
] - reader (Reader (optional)) – A weak reference to the owning Reader. Used for when attributes require trajectory manipulation (e.g. dt)
- dt (float (optional)) – The time difference between frames (ps). If
time
is set, then dt will be ignored. - time_offset (float (optional)) – The starting time from which to calculate time (in ps)
Changed in version 0.11.0: Added keywords for positions, velocities and forces. Can add and remove position/velocity/force information by using the
has_*
attribute.-
dimensions
¶ unitcell dimensions (A, B, C, alpha, beta, gamma)
GRO:
8.00170 8.00170 5.65806 0.00000 0.00000 0.00000 0.00000 4.00085 4.00085
PDB:
CRYST1 80.017 80.017 80.017 60.00 60.00 90.00 P 1 1
XTC: c.trajectory.ts._unitcell:
array([[ 80.00515747, 0. , 0. ], [ 0. , 80.00515747, 0. ], [ 40.00257874, 40.00257874, 56.57218552]], dtype=float32)
-
class
MDAnalysis.coordinates.GRO.
GROReader
(filename, convert_units=None, n_atoms=None, **kwargs)[source]¶ Reader for the Gromacs GRO structure format.
Changed in version 0.11.0: Frames now 0-based instead of 1-based
-
class
MDAnalysis.coordinates.GRO.
GROWriter
(filename, convert_units=None, n_atoms=None, **kwargs)[source]¶ GRO Writer that conforms to the Trajectory API.
- Will attempt to write the following information from the topology:
- atom name (defaults to ‘X’)
- resnames (defaults to ‘UNK’)
- resids (defaults to ‘1’)
Note
The precision is hard coded to three decimal places
Changed in version 0.11.0: Frames now 0-based instead of 1-based
Changed in version 0.13.0: Now strictly writes positions with 3dp precision. and velocities with 4dp. Removed the convert_dimensions_to_unitcell method, use Timestep.triclinic_dimensions instead. Now now writes velocities where possible.
Changed in version 0.17.1: Added reindex keyword argument to allow original atom ids to be kept.
Set up a GROWriter with a precision of 3 decimal places.
Parameters: - filename (str) – output filename
- n_atoms (int (optional)) – number of atoms
- convert_units (str (optional)) – units are converted to the MDAnalysis base format;
None
selects the value ofMDAnalysis.core.flags
[‘convert_lengths’] - reindex (bool (optional)) – By default, all the atoms were reindexed to have a atom id starting
from 1. [
True
] However, this behaviour can be turned off by specifying reindex=False
.
Note
To use the reindex keyword, user can follow the two examples given below.:
u = mda.Universe()
Usage 1:
u.atoms.write('out.gro', reindex=False)
Usage 2:
with mda.Writer('out.gro', reindex=False) as w: w.write(u.atoms)
-
fmt
= {'box_orthorhombic': '{box[0]:10.5f}{box[1]:10.5f}{box[2]:10.5f}\n', 'box_triclinic': '{box[0]:10.5f}{box[4]:10.5f}{box[8]:10.5f}{box[1]:10.5f}{box[2]:10.5f}{box[3]:10.5f}{box[5]:10.5f}{box[6]:10.5f}{box[7]:10.5f}\n', 'n_atoms': '{0:5d}\n', 'xyz': '{resid:>5d}{resname:<5.5s}{name:>5.5s}{index:>5d}{pos[0]:8.3f}{pos[1]:8.3f}{pos[2]:8.3f}\n', 'xyz_v': '{resid:>5d}{resname:<5.5s}{name:>5.5s}{index:>5d}{pos[0]:8.3f}{pos[1]:8.3f}{pos[2]:8.3f}{vel[0]:8.4f}{vel[1]:8.4f}{vel[2]:8.4f}\n'}¶ format strings for the GRO file (all include newline); precision of 3 decimal places is hard-coded here.
-
write
(obj)[source]¶ Write selection at current trajectory frame to file.
Parameters: obj (AtomGroup or Universe or Timestep
) –Note
The GRO format only allows 5 digits for resid and atom number. If these numbers become larger than 99,999 then this routine will chop off the leading digits.
Changed in version 0.7.6: resName and atomName are truncated to a maximum of 5 characters
Changed in version 0.16.0: frame kwarg has been removed