Home

Oliver Beckstein edited this page Nov 30, 2016 · 19 revisions

Project Information

GNU GPL v2 code license
Labels: python, molecular dynamics, analysis, DCD, CHARMM, LAMMPS, NAMD, Gromacs, computer simulation, atoms, coordinates, trajectory, XTC, Library, object-oriented
Core Developers

Essentials

Applications
Downloads
Install
PaperErrata
Release Notes
Guide for Developers
Google Summer of Code

Links

@mdanalysis on Twitter
Documentation
Tutorials
Downloads (PyPi)
Mailing Lists:
User discussion group
Developer mailing list

Clone this wiki locally

MDAnalysis is an object-oriented python toolkit to analyze molecular dynamics trajectories generated by CHARMM, Gromacs, NAMD, LAMMPS, or Amber.

MDAnalysis allows one to read molecular dynamics trajectories and access the atomic coordinates through numpy arrays. This provides a flexible and relatively fast framework for complex analysis tasks. In addition, CHARMM-style atom selection commands are implemented. Trajectories can also be manipulated (for instance, fit to a reference structure) and written out.

A typical usage pattern is to iterate through a trajectory and analyze coordinates for every frame. In the following example the end-to-end distance of a protein and the radius of gyration of the backbone atoms are calculated:

import MDAnalysis
from MDAnalysis.tests.datafiles import PSF,DCD   # test trajectory
import numpy.linalg
u = MDAnalysis.Universe(PSF,DCD)                 # always start with a Universe
nterm = u.s4AKE.N[0]   # can access structure via segid (s4AKE) and atom name
cterm = u.s4AKE.C[-1]  # ... takes the last atom named 'C'
bb = u.select_atoms('protein and backbone')  # a selection (a AtomGroup)
for ts in u.trajectory:     # iterate through all frames
  r = cterm.pos - nterm.pos # end-to-end vector from atom positions
  d = numpy.linalg.norm(r)  # end-to-end distance
  rgyr = bb.radius_of_gyration()  # method of a AtomGroup; updates with each frame
  print "frame = {}: d = {} Angstroem, Rgyr = {} Angstroem".format(ts.frame, d, rgyr)

Availability and Installing

See Installation Quick Start.

Learning MDAnalysis

The MDAnalysis Tutorial serves as an introduction to the library and there are other Tutorials available, too.

See the Online Documentation for more information on how to use MDAnalysis and the TableOfContents for a general overview of the available documentation on the Wiki. The paper on MDAnalysis contains a high-level description of the structure and philosophy of the library together with examples of its use.

MDAnalysis also comes with example scripts and fairly general analysis modules, available as MDAnalysis.analysis — you can use this code as a starting point for your own analysis scripts.

Finally, you can also ask for advice or help on the mdnalysis-discussion mailing list. If you find bugs or want to request enhancements please file a report in the Issue Tracker.

Citation

See citing MDAnalysis.

Historical, Technical and Artistic Remarks

MDAnalysis was originally inspired by the Schulten Group's MDTools for Python, and the DCD reading code is derived from VMD's catdcd. MDAnalysis is GPL licensed, except for some 3rd party code that is included under GPL-compatible licenses; for instance the dcd reading code is under the UIUC Open Source Licence. See the files AUTHORS and LICENSE in the distribution for details.

Some time-critical routines are written in C or cython and require a working C compiler. The minimum required version of Python is 2.7. MDAnalysis has been successfully used on Linux and Mac OS X.

The MDAnalysis 'Atom' Logo was designed by Christian Beckstein and is licensed under a Creative Commons Attribution-NoDerivs 3.0 Unported License.