Learn R Programming

bio3d (version 2.1-2)

nma.pdb: Normal Mode Analysis

Description

Perform elastic network model (ENM) C-alpha normal modes calculation of a protein structure.

Usage

## S3 method for class 'pdb':
nma(pdb, inds = NULL, ff = 'calpha', pfc.fun = NULL,
                  mass = TRUE, temp = 300.0, keep = NULL, hessian = NULL,
                  outmodes = NULL, \dots )

build.hessian(xyz, pfc.fun, fc.weights = NULL, sequ = NULL, sse = NULL, ss.bonds = NULL, ...)

## S3 method for class 'nma': print(x, nmodes=6, \dots)

Arguments

pdb
an object of class pdb as obtained from function read.pdb.
inds
atom and xyz coordinate indices obtained from atom.select that selects the elements of pdb upon which the calculation should be based. If not provided the function will attempt to select the calpha atoms automatically
ff
character string specifying the force field to use: calpha, anm, pfanm, calphax, reach, or sdenm.
pfc.fun
customized pair force constant (pfc) function. The provided function should take a vector of distances as an argument to return a vector of force constants. If provided, 'pfc.fun' will override argument ff. See ex
mass
logical, if TRUE the Hessian will be mass-weighted.
temp
numerical, temperature for which the amplitudes for scaling the atomic displacement vectors are calculated. Set temp=NULL to avoid scaling.
keep
numerical, final number of modes to be stored. Note that all subsequent analyses are limited to this subset of modes. This option is useful for very large structures and cases where memory may be limiting.
hessian
hessian matrix as obtained from build.hessian. For internal purposes and generally not intended for public use.
outmodes
atom indices as obtained from atom.select) specifying the atoms to include in the resulting mode object. For aanma, also character strings calpha (which is the def
xyz
a numeric vector of Cartesian coordinates.
fc.weights
a numeric matrix of size NxN (where N is the number of calpha atoms) containg scaling factors for the pariwise force constants. See examples below.
sse
secondary structure elements as obtained from dssp.
sequ
a character vector of the amino acid sequence.
ss.bonds
a numeric two-column matrix containing the residue numbers of the disulfide bridges in the structure.
x
an nma object obtained from nma.pdb.
nmodes
numeric, number of modes to be printed.
...
additional arguments to build.hessian, aa2mass, pfc.fun, and print. One useful option here for dealing with unconventional residues is mass.custom, see the aa2mass

Value

  • Returns an object of class nma with the following components:
  • modesnumeric matrix with columns containing the normal mode vectors. Mode vectors are converted to unweighted Cartesian coordinates when mass=TRUE. Note that the 6 first trivial eigenvectos appear in columns one to six.
  • frequenciesnumeric vector containing the vibrational frequencies corresponding to each mode (for mass=TRUE).
  • force.constantsnumeric vector containing the force constants corresponding to each mode (for mass=FALSE)).
  • fluctuationsnumeric vector of atomic fluctuations.
  • Unumeric vector containing the raw eigenvectors. Equals to the modes component when mass=FALSE and temp=NULL.
  • Lnumeric vector containing the raw eigenvalues.
  • xyznumeric vector of the cartesian coordinates in which the calculation was performed.
  • massnumeric vector containing the residue masses used for the mass-weighting.
  • tempnumerical, temperature for which the amplitudes for scaling the atomic displacement vectors are calculated.
  • triv.modesnumber of trivial modes.
  • natomsnumber of C-alpha atoms.
  • callthe matched call.

Details

This function calculates the normal modes of a C-alpha model of a protein structure. A number of force fields are implemented all of whhich employ the elastic network model (ENM).

The calpha force field - originally developed by Konrad Hinsen - is the recommended one for most applications. It employs a spring force constant differentiating between nearest-neighbour pairs along the backbone and all other pairs. The force constant function was parameterized by fitting to a local minimum of a crambin model using the AMBER94 force field.

See load.enmff for details of the different force fields.

By default nma.pdb() will diagonalize the mass-weighted Hessian matrix. The resulting mode vectors are moreover scaled by the thermal fluctuation amplitudes.

The implementation under default arguments reproduces the calculation of normal modes (VibrationalModes) in the Molecular Modeling Toolkit (MMTK) package. To reproduce ANM modes set ff='anm', mass=FALSE, and temp=NULL.

References

Hinsen, K. et al. (2000) Chemical Physics 261, 25--37. Grant, B.J. et al. (2006) Bioinformatics 22, 2695--2696.

See Also

fluct.nma, mktrj.nma, dccm.nma, overlap, rmsip

Examples

Run this code
## Fetch stucture
pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") )

## Calculate normal modes
modes <- nma(pdb)

## Print modes
print(modes)

## Plot modes
plot(modes)

## Visualize modes
#m7 <- mktrj.nma(modes, mode=7, file="mode_7.pdb")

## Use Anisotropic Network Model
modes <- nma(pdb, ff="anm", mass=FALSE, temp=NULL, cutoff=15)

## Use SSE information and SS-bonds
sse      <- dssp(pdb, resno=FALSE, full=TRUE)
ss.bonds <- matrix(c(76,94, 64,80, 30,115, 6,127),
                   ncol=2, byrow=TRUE)

modes <- nma(pdb, ff="calphax", sse=sse, ss.bonds=ss.bonds)


## User defined energy function
## Note: Must take a vector of distances
"my.ff" <- function(r) {
   ifelse( r>15, 0, 1 )
}

## Modes with a user defined energy function
modes <- nma(pdb, pfc.fun=my.ff)


## A more manual approach
sele <- atom.select(pdb, "//A////CA/")
xyz <- pdb$xyz[sele$xyz]

hessian <- build.hessian(xyz, my.ff)
modes <- eigen(hessian)

## Dealing with unconventional residues
pdb <- read.pdb("1xj0")
## nma(pdb)
modes <- nma(pdb, mass.custom=list(CSX=121.166))

Run the code above in your browser using DataLab