Calculate deformation energies from Normal Mode Analysis.

deformation.nma(nma, mode.inds = NULL, = NULL, ncore = NULL)



a list object of class "nma" (obtained with nma).


a numeric vector of mode indices in which the calculation should be based.

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. See nma for examples.


number of CPU cores used to do the calculation. ncore>1 requires package ‘parallel’ installed.


Deformation analysis provides a measure for the amount of local flexibility of the protein structure - i.e. atomic motion relative to neighbouring atoms. It differs from ‘fluctuations’ (e.g. RMSF values) which provide amplitudes of the absolute atomic motion.

Deformation energies are calculated based on the nma object. By default the first 20 non-trivial modes are included in the calculation.

See examples for more details.


Returns a list with the following components:


numeric matrix containing the energy contribution (E) from each atom (i; row-wise) at each mode index (column-wise).


deformation energies corresponding to each mode.


Hinsen, K. (1998) Proteins 33, 417--429. Grant, B.J. et al. (2006) Bioinformatics 22, 2695--2696.


Lars Skjaerven

See also


# \donttest{ # Running the example takes some time - testing excluded ## Fetch stucture pdb <- read.pdb( system.file("examples/1hel.pdb", package="bio3d") ) ## Calculate (vibrational) normal modes modes <- nma(pdb)
#> Building Hessian... Done in 0.015 seconds. #> Diagonalizing Hessian... Done in 0.075 seconds.
## Calculate deformation energies def.energies <- deformation.nma(modes) # } if (FALSE) { ## Fluctuations of first non-trivial mode def.energies <- deformation.nma(modes, mode.inds=seq(7, 16)) write.pdb(pdb=NULL, xyz=modes$xyz, b=def.energies$ei[,1]) }