# Dynamics Analysis¶

This module defines classes and functions for protein dynamics analysis.

## Dynamics Models¶

Following classes are designed for modeling and analysis of protein dynamics:

`ANM`

- Anisotropic network model, for coarse-grained NMA`GNM`

- Gaussian network model, for coarse-grained dynamics analysis`PCA`

- Principal component analysis of conformation ensembles`EDA`

- Essential dynamics analysis of dynamics trajectories`NMA`

- Normal mode analysis, for analyzing data from external programs`RTB`

- Rotations and Translation of Blocks method

Usage of these classes are shown in Anisotropic Network Model (ANM), Gaussian Network Model (GNM), Ensemble Analysis, and Essential Dynamics Analysis examples.

Following classes are for analysis of individual modes or subsets of modes:

## Customize ENMs¶

Following classes allow for using structure or distance based, or other custom
force constants and cutoff distances in `ANM`

and `GNM`

calculations:

`Gamma`

- base class for developing property custom force constant calculation methods`GammaStructureBased`

- secondary structure based force constants`GammaVariableCutoff`

- atom type based variable cutoff function

## Function library¶

Dynamics of the functions described below accept a *modes* argument (may also
appear in different names), which may refer to one or more of the following:

Some of these functions may also accept `Vector`

instances as *mode*
argument. These are noted in function documentations.

## Analyze models¶

Following functions are for calculating atomic properties from normal modes:

`calcCollectivity()`

- degree of collectivity of a mode`calcCovariance()`

- covariance matrix for given modes`calcCrossCorr()`

- cross-correlations of fluctuations`calcFractVariance()`

- fraction of variance explained by a mode`calcPerturbResponse()`

- response to perturbations in positions`calcProjection()`

- projection of conformations onto modes`calcSqFlucts()`

- square-fluctuations`calcTempFactors()`

- temperature factors fitted to exp. data

## Compare models¶

Following functions are for comparing normal modes or dynamics models:

`calcOverlap()`

- overlap (correlation) between modes`calcCumulOverlap()`

- cumulative overlap between modes`calcSubspaceOverlap()`

- overlap between normal mode subspaces`calcCovOverlap()`

- covariance overlap between models`printOverlapTable()`

- formatted overlap table printed on screen

## Generate conformers¶

Following functions can be used to generate conformers along normal modes:

`deformAtoms()`

- deform atoms along a mode`sampleModes()`

- deform along random combination of a set of modes`traverseMode()`

- traverse a mode along both directions

## Editing models¶

Following functions can be used to reduce, slice, or extrapolate models:

`sliceMode()`

- take a slice of the normal mode`extendMode()`

- extend a coarse-grained mode to all-atoms`sliceModel()`

- take a slice of a model`extendModel()`

- extend a coarse-grained model to all-atoms`reduceModel()`

- reduce a model to a subset of atoms`sliceVector()`

- take a slice of a vector`extendVector()`

- extend a coarse-grained vector to all-atoms

## Parse/write data¶

Following functions are parsing or writing normal mode data:

`parseArray()`

- numeric arrays, e.g. coordinates, eigenvectors`parseModes()`

- normal modes`parseNMD()`

- normal mode, coordinate, and atomic data for NMWiz`parseSparseMatrix()`

- matrix data in sparse coordinate list format`writeArray()`

- numeric arrays, e.g. coordinates, eigenvectors`writeModes()`

- normal modes`writeNMD()`

- normal mode, coordinate, and atomic data`writeOverlapTable()`

- overlap between modes in a formatted table

## Save/load models¶

Dynamics objects can be efficiently saved and loaded in later Python sessions using the following functions:

`loadModel()`

,`saveModel()`

- load/save dynamics models`loadVector()`

,`saveVector()`

- load/save modes or vectors

## Short-hand functions¶

Following allow for performing some dynamics calculations in one function call:

## Plotting functions¶

Plotting functions are called by the name of the plotted data/property
and are prefixed with “show”. Function documentations refers to the
`matplotlib.pyplot`

function utilized for actual plotting.
Arguments and keyword arguments are passed to the Matplotlib functions.

`showMode()`

- mode shape`showOverlap()`

- overlap between modes`showSqFlucts()`

- square-fluctuations`showEllipsoid()`

- depict projection of a normal mode space on another`showContactMap()`

- contact map based on a Kirchhoff matrix`showProjection()`

- projection of conformations onto normal modes`showOverlapTable()`

- overlaps between two models`showScaledSqFlucts()`

- square-fluctuations fitted to experimental data`showNormedSqFlucts()`

- normalized square-fluctuations`showCrossProjection()`

- project conformations onto modes from different models`showCrossCorr()`

- cross-correlations between fluctuations in atomic positions`showCumulOverlap()`

- cumulative overlap of a mode with multiple modes from another model`showFractVars()`

- fraction of variances`showCumulFractVars()`

- cumulative fraction of variances`resetTicks()`

- change ticks in a plot

## Heat Mapper support¶

Following functions can be used to read, write, and plot VMD plugin Heat Mapper files.

## Visualize modes¶

Finally, normal modes can be visualized and animated using VMD plugin Normal Mode Wizard. Following functions allow for running NMWiz from within Python:

`viewNMDinVMD()`

- run VMD and load normal mode data`pathVMD()`

- get/set path to VMD executable