mdtraj.rmsd¶
-
mdtraj.
rmsd
(target, reference, frame=0, atom_indices=None, parallel=True, precentered=False)¶ Compute RMSD of all conformations in target to a reference conformation. Note, this will center the conformations in place.
- Parameters
- targetmd.Trajectory
For each conformation in this trajectory, compute the RMSD to a particular ‘reference’ conformation in another trajectory object.
- referencemd.Trajectory
The object containing the reference conformation to measure distances to.
- frameint, default=0
The index of the conformation in reference to measure distances to.
- atom_indicesarray_like, or None
The indices of the atoms to use in the RMSD calculation. If not supplied, all atoms will be used.
- ref_atom_indicesarray_like, or None
Use these indices for the reference trajectory. If not supplied, the atom indices will be the same as those for target.
- parallelbool
Use OpenMP to calculate each of the RMSDs in parallel over multiple cores.
- precenteredbool, default=False
Assume that the conformations are already centered at the origin, and that the “rmsd_traces” have been computed, as is done by Trajectory.center_coordinates. The “rmsd_traces” are intermediate calculations needed for the RMSD calculation which can be computed independently on each trajectory. Note that this has the potential to be unsafe; if you use Trajectory.center_coordinates and then modify the trajectory’s coordinates, the center and traces will be out of date and the RMSDs will be incorrect.
- Returns
- rmsdsnp.ndarray, shape=(target.n_frames,)
A 1-D numpy array of the optimal root-mean-square deviations from the frame-th conformation in reference to each of the conformations in target.
See also
Trajectory.center_coordinates
Notes
This function uses OpenMP to parallelize the calculation across multiple cores. To control the number of threads launched by OpenMP, you can set the environment variable
OMP_NUM_THREADS
.Examples
>>> import mdtraj as md >>> rmsds = md.rmsd(trajectory, trajectory, 0) >>> print rmsds array([ 0.0, 0.03076187, 0.02549562, ..., 0.06230228, 0.00666826, 0.24364147])
The calculation is slightly faster if you precenter the trajectory
>>> trajectory.center_coordinates() >>> rmsds = md.rmsd(trajectory, trajectory, 0, precentered=True)