com {bio3d} | R Documentation |
Center of Mass
Description
Calculate the center of mass of a PDB object.
Usage
com(...)
## S3 method for class 'pdb'
com(pdb, inds=NULL, use.mass=TRUE, ...)
## S3 method for class 'xyz'
com(xyz, mass=NULL, ...)
Arguments
pdb |
an object of class |
inds |
atom and xyz coordinate indices obtained from |
use.mass |
logical, if TRUE the calculation will be mass weighted (center of mass). |
... |
additional arguments to |
xyz |
a numeric vector or matrix of Cartesian coordinates
(e.g. an object of type |
mass |
a numeric vector containing the masses of each atom in
|
Details
This function calculates the center of mass of the provided PDB structure / Cartesian coordiantes. Atom names found in standard amino acids in the PDB are mapped to atom elements and their corresponding relative atomic masses.
In the case of an unknown atom name elety.custom
and
mass.custom
can be used to map an atom to the correct
atomic mass. See examples for more details.
Alternatively, the atom name will be mapped automatically to the
element corresponding to the first character of the atom name. Atom
names starting with character H
will be mapped to hydrogen
atoms.
Value
Returns the Cartesian coordinates at the center of mass.
Author(s)
Lars Skjaerven
References
Grant, B.J. et al. (2006) Bioinformatics 22, 2695–2696.
See Also
Examples
# PDB server connection required - testing excluded
## Stucture of PKA:
pdb <- read.pdb("3dnd")
## Center of mass:
com(pdb)
## Center of mass of a selection
inds <- atom.select(pdb, chain="I")
com(pdb, inds)
## using XYZ Cartesian coordinates
xyz <- pdb$xyz[, inds$xyz]
com.xyz(xyz)
## with mass weighting
com.xyz(xyz, mass=atom2mass(pdb$atom[inds$atom, "elety"]) )
## Not run:
## Unknown atom names
pdb <- read.pdb("3dnd")
inds <- atom.select(pdb, resid="LL2")
mycom <- com(pdb, inds, rescue=TRUE)
#warnings()
## Map atom names manually
pdb <- read.pdb("3RE0")
inds <- atom.select(pdb, resno=201)
myelety <- data.frame(name = c("CL2","PT1","N1","N2"), symb = c("Cl","Pt","N","N"))
mymasses <- data.frame(symb = c("Cl","Pt"), mass = c(35.45, 195.08))
mycom <- com(pdb, inds, elety.custom=myelety, mass.custom=mymasses)
## End(Not run)