Table Of Contents

Previous topic

3.4. Distance analysis — MDAnalysis.distances

Next topic

3.6. Hydrogen Bond analysis — MDAnalysis.analysis.hbonds

This Page

3.5. Elastic network analysis of MD trajectories — MDAnalysis.analysis.gnm

Author:Benjamin Hall <benjamin.a.hall@ucl.ac.uk>
Year:2011
Copyright:GNU Public License v2 or later

Analyse a trajectory using elastic network models, following the approach of [Hall2007].

An example is provided in examples/GNMExample.py. The basic approach is to pass a trajectory to GNMAnalysis and then run the analysis:

u = MDAnalysis.Universe(PSF,DCD)
C = MDAnalysis.analysis.gnm.GNMAnalysis(u,ReportVector="output.txt")

C.run()
output = zip(*C.results)

outputfile = open("eigenvalues.dat","w")
for item in output[1]:
   print >> outputfile, item
outputfile.close()

The results are found in GNMAnalysis.results, which can be used for further processing (see [Hall2007]).

References

[Hall2007](1, 2) Benjamin A. Hall, Samantha L. Kaye, Andy Pang, Rafael Perera, and Philip C. Biggin. Characterization of Protein Conformational States by Normal-Mode Frequencies. JACS 129 (2007), 11394–11401.

3.5.1. Analysis tasks

class MDAnalysis.analysis.gnm.GNMAnalysis(universe, selection='protein and name CA', cutoff=7.0, ReportVector=None, Bonus_groups=())

Basic tool for GNM analysis.

Each frame is treated as a novel structure and the GNM calculated. By default, this stores the dominant eigenvector and its associated eigenvalue; either can be used to monitor conformational change in a simulation.

generate_kirchoff()

Generate the Kirchhoff matrix of contacts.

This generates the neighbour matrix by generating a grid of near-neighbours and then calculating which are are within the cutoff. Returns the resulting matrix

generate_output(w, v, outputobject, time, matrix, nmodes=2, ReportVector=None, counter=0)

Appends eigenvalues and eigenvectors to results.

This generates the output by adding eigenvalue and eigenvector data to an appendable object and optionally printing some of the results to file. This is the function to replace if you want to generate a more complex set of outputs

run(skip=1)

Analyze trajectory and produce timeseries.

Returns GNM results per frame:

results = [(time,eigenvalues[1],eigenvectors[1]),(time,eigenvalues[1],eigenvectors[1])... ]
class MDAnalysis.analysis.gnm.closeContactGNMAnalysis(universe, selection='protein', cutoff=4.5, ReportVector=None, MassWeight=True)

GNMAnalysis only using close contacts.

This is a version of the GNM where the Kirchoff matrix is constructed from the close contacts between individual atoms in different residues

3.5.2. Utility functions

The following functions are used internally and are typically not directly needed to perform the analysis.

MDAnalysis.analysis.gnm.backup_file(filename)

This function helps prevent overwriting default named files

MDAnalysis.analysis.gnm.generate_grid(positions, cutoff)

An alternative to searching the entire list of each atom; divide the structure into cutoff sized boxes This way, for each particle you only need to search the neighbouring boxes to find the particles within the cutoff Observed a 6x speed up for a smallish protein with ~300 residues; this should get better with bigger systems.

MDAnalysis.analysis.gnm.order_list(w)

Returns a dictionary showing the order of eigenvalues (which are reported scrambled normally)