7.18. TNG trajectory files — MDAnalysis.coordinates.TNG
The TNG format [1] is a format used in GROMACS for storage of trajectory and topology information. The TNG format allows a wide range of compression algorithms and unlike the compressed XTC format can also store velocities and forces in addition to positions.
The classes in this module are based on the pytng package for reading TNG files. The reader is directed to the pytng documentation for further reading about how pytng works under the hood. Pytng is an optional dependency and must be installed to use this Reader. Use of the reader without pytng installed will raise an ImportError. The variable HAS_PYTNG indicates whether this module has pytng availble.
In addition to particle-dependent trajectory information like positions, forces and velocities, the TNG format can store trajectory metadata and other arbitrary time dependent data. Additional information can range from the virial and pressure components to the molecular topology of the system. This is enabled by a block based system in which binary flags indicate the presence or absence of various data blocks. The structure of a TNG file is provided in the TNG specification. The TNG paper [1] and the pytng documentation are also good resources. The user is encouraged to read the full list of TNG blocks to understand the full power of the TNG format.
7.18.1. Current Limitations
Currently there is only a Reader for TNG files and no Writer. This will depend on upstream changes in pytng. Additionally, it is not currently possible to read the molecular topology from a TNG file.
There are also some limitations to reading TNG files with pytng. Currently we do not allow data to be read off stride. In essence this means that all of the critical trajectory data (positions, box, velocities (if present), forces (if present)) must share the same stride in trajectory integrator steps. These critical blocks in the TNG file are henceforth called special blocks. Optional blocks (all blocks that are not special blocks) will not be read if they do not share an integrator step with, or are not divisible by the shared integrator step of the special blocks.
References
- class MDAnalysis.coordinates.TNG.TNGReader(filename: str, convert_units: bool = True, **kwargs)[source]
Reader for the TNG format
The TNG format [1] is a format used in GROMACS for storage of trajectory and topology information. This reader is are based on the pytng package for reading TNG files. The reader is directed to the pytng documentation and TNG specification for further reading.
The TNG format allows a wide range of compression algorithms and unlike the compressed XTC format can also store velocities and forces in addition to positions.
The contents of the special blocks (positions, box, velocities, forces) are read into the timestep if present. Additional blocks are read into the ts.data dictionary if they are available at the current frame.
Added in version 2.4.0.
Initialize a TNG trajectory
- Parameters:
- Writer()[source]
Writer for TNG files
- Raises:
NotImplementedError – Currently there is not writer for TNG files pending implementation upstream in pytng.
- property additional_blocks: List[str]
list of the additional (non-special) blocks that are being read from the trajectory. This may be exclude some blocks present in the file if they do not fall on the same trajectory stride as the positions and velocities.
- Returns:
additional_blocks – The additional block names in the TNG trajectory
- Return type:
- property blocks: List[str]
list of the blocks that are in the file
- Returns:
blocks – The block names present in the TNG trajectory
- Return type:
- property n_frames: int
number of frames in trajectory
- Returns:
n_frames – The number of data containing frames in the trajectory
- Return type:
- static parse_n_atoms(filename: str) int [source]
parse the number of atoms in the TNG trajectory file
- property special_blocks: List[str]
list of the special blocks that are in the file
- Returns:
special_blocks – The special block names (positions, box, velocities, forces) present in the TNG trajectory
- Return type:
- units = {'force': 'kJ/(mol*nm)', 'length': 'nm', 'time': 'second', 'velocity': 'nm/ps'}
dict with units of of time and length (and velocity, force, … for formats that support it)