Last chance! 50% off unlimited learning
Sale ends in
## 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)
pdb
as obtained from
function read.pdb
.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 automaticallyff
. See exbuild.hessian
. For internal purposes and generally not
intended for public use.atom.select
)
specifying the atoms to include in the resulting mode object. For
aanma
, also character strings dssp
.nma
object obtained from nma.pdb
.build.hessian
,
aa2mass
, pfc.fun
, and print
. One useful option
here for dealing with unconventional residues is
aa2mass
mass=TRUE
. Note that the 6 first trivial
eigenvectos appear in columns one to six.mass=TRUE
).mass=FALSE)
).modes
component when mass=FALSE
and
temp=NULL
. The
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
.
fluct.nma
, mktrj.nma
,
dccm.nma
, overlap
, rmsip
## 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