Calculate deformation energies from Normal Mode Analysis.

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

## Arguments

nma 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.

## Details

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.

## Value

Returns a list with the following components:

ei

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

sums

deformation energies corresponding to each mode.

## References

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

## Author

Lars Skjaerven

nma

## Examples

# \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])
}