dm(...)"dm"(pdb, inds = NULL, grp = TRUE, verbose=TRUE, ...) "dm"(pdbs, ...)"dm"(xyz, grpby = NULL, scut = NULL, mask.lower = TRUE, gc.first=FALSE, ncore=1, ...)
pdb
structure object as returned by
read.pdb
or a numeric vector of xyz coordinates.atom.select
that selects the elements of pdb
upon which the calculation
should be based. read.fasta.pdb
or pdbaln
. xyz
that should be considered as a group
(e.g. atoms from a particular residue). ncore > 1
and xyz
has many rows/columns, with a bit sacrifice on speed. ncore>1
requires package parallel installed. Construct a distance matrix for a given protein structure.
Distance matrices, also called distance plots or distance maps, are an established means of describing and comparing protein conformations (e.g. Phillips, 1970; Holm, 1993).
A distance matrix is a 2D representation of 3D structure that is independent of the coordinate reference frame and, ignoring chirality, contains enough information to reconstruct the 3D Cartesian coordinates (e.g. Havel, 1983).
"dmat"
, with all N by N
distances, where N is the number of selected atoms. With multiple
frames the output is provided in a three dimensional array.
Grant, B.J. et al. (2006) Bioinformatics 22, 2695--2696.
Phillips (1970) Biochem. Soc. Symp. 31, 11--28.
Holm (1993) J. Mol. Biol. 233, 123--138.
Havel (1983) Bull. Math. Biol. 45, 665--720.
The input selection
can be any character string or pattern
interpretable by the function atom.select
. For example,
shortcuts "calpha"
, "back"
, "all"
and selection
strings of the form /segment/chain/residue number/residue
name/element number/element name/
; see atom.select
for details.
If a coordinate vector is provided as input (rather than a pdb
object) the selection
option is redundant and the input vector
should be pruned instead to include only desired positions.
# PDB server connection required - testing excluded ##--- Distance Matrix Plot pdb <- read.pdb( "4q21" )Note: Accessing on-line PDB filek <- dm(pdb,inds="calpha") filled.contour(k, nlevels = 10) ## NOTE: FOLLOWING EXAMPLE NEEDS MUSCLE INSTALLED ##--- DDM: Difference Distance Matrix # Downlaod and align two PDB files pdbs <- pdbaln( get.pdb( c( "4q21", "521p"), path = tempdir() ), outfile = tempfile() )Warning message: /tmp/RtmpTDihxb/4q21.pdb exists. Skipping downloadReading PDB files: /tmp/RtmpTDihxb/4q21.pdb /tmp/RtmpTDihxb/521p.pdb .. Extracting sequences pdb/seq: 1 name: /tmp/RtmpTDihxb/4q21.pdb pdb/seq: 2 name: /tmp/RtmpTDihxb/521p.pdb# Get distance matrix a <- dm.xyz(pdbs$xyz[1,]) b <- dm.xyz(pdbs$xyz[2,]) # Calculate DDM c <- a - b # Plot DDM plot(c,key=FALSE, grid=FALSE)plot(c, axis.tick.space=10, resnum.1=pdbs$resno[1,], resnum.2=pdbs$resno[2,], grid.col="black", xlab="Residue No. (4q21)", ylab="Residue No. (521p)")##-- Residue-wise distance matrix based on the ## minimal distance between all available atoms l <- dm.xyz(pdb$xyz, grpby=pdb$atom[,"resno"], scut=3)