Learn R Programming

bio3d (version 2.1-2)

rmsd: Root Mean Square Deviation

Description

Calculate the RMSD between coordinate sets.

Usage

rmsd(a, b=NULL, a.inds=NULL, b.inds=NULL, fit=FALSE, ncore=1, nseg.scale=1)

Arguments

a
a numeric vector containing the reference coordinate set for comparison with the coordinates in b. Alternatively, if b=NULL then a can be a matrix or list object containing multiple coordinates for pairw
b
a numeric vector, matrix or list object with an xyz component, containing one or more coordinate sets to be compared with a.
a.inds
a vector of indices that selects the elements of a upon which the calculation should be based.
b.inds
a vector of indices that selects the elements of b upon which the calculation should be based.
fit
logical, if TRUE coordinate superposition is performed prior to RMSD calculation.
ncore
number of CPU cores used to do the calculation. ncore>1 requires package parallel installed.
nseg.scale
split input data into specified number of segments prior to running multiple core calculation. See fit.xyz.

Value

  • Returns a numeric vector of RMSD value(s).

Details

RMSD is a standard measure of structural distance between coordinate sets.

Structure a[a.inds] and b[b.inds] should have the same length.

A least-squares fit is performed prior to RMSD calculation by setting fit=TRUE. See the function fit.xyz for more details of the fitting process.

References

Grant, B.J. et al. (2006) Bioinformatics 22, 2695--2696.

See Also

fit.xyz, rot.lsq, read.pdb, read.fasta.pdb

Examples

Run this code
# -- Calculate RMSD between two or more structures
aln <- read.fasta(system.file("examples/kif1a.fa",package="bio3d"))
pdbs <- read.fasta.pdb(aln)

# Indices 
gaps <- unique( which(is.na(pdbs$xyz),arr.ind=TRUE)[,2] )
inds <- c(1:ncol(pdbs$xyz))[-gaps]

# RMSD between structure 1 and structure 2
rmsd(a=pdbs$xyz[1,], b=pdbs$xyz[2,], a.inds=inds, b.inds=inds)
rmsd(a=pdbs$xyz[1,], b=pdbs$xyz[2,], a.inds=inds, b.inds=inds, fit=TRUE)

# RMSD between structure 1 and structures 2 and 3
rmsd(a=pdbs$xyz[1,], b=pdbs$xyz[2:3,], a.inds=inds, b.inds=inds)

# RMSD between structure 1 and all structures in alignment
rmsd(a=pdbs$xyz[1,], b=pdbs, a.inds=inds, b.inds=inds, fit=TRUE)

# pairwise RMSD
rmsd(pdbs$xyz[,inds])

Run the code above in your browser using DataLab