Python MD Swiss Army Tool-Kit

Most of the modern tools for bio-engineering are gathered in OMNIA_ repository maintained by Continuum Analytics.

OpenMM & OpenMMtools

A toolkit for molecular simulation using high performance GPU code. OpenMM consists of two parts:

A set of libraries that lets programmers easily add molecular simulation features to their programs An “application layer” that exposes those features to end users who just want to run simulations


A modern, open library for the analysis of molecular dynamics trajectories.

Read, write and analyze MD trajectories with only a few lines of Python code.

MDTraj is a python library that allows users to manipulate molecular dynamics (MD) trajectories. Features include:

Wide MD format support, including pdb, xtc, trr, dcd, binpos, netcdf, mdcrd, prmtop, and more. Extremely fast RMSD calculations (4x the speed of the original Theobald QCP). Extensive analysis functions including those that compute bonds, angles, dihedrals, hydrogen bonds, secondary structure, and NMR observables. Lightweight, Pythonic API. MDTraj includes a command-line application, mdconvert, for converting trajectories between formats.

pross cons
easy dupa



MDAnalysis is an object-oriented Python library to analyze trajectories from molecular dynamics (MD) simulations in many popular formats. It can write most of these formats, too, together with atom selections suitable for visualization or native analysis tools.

MDAnalysis allows one to read particle-based trajectories (including individual coordinate frames such as biomolecules in the PDB format) and access the atomic coordinates through NumPy arrays. This provides a flexible and relatively fast framework for complex analysis tasks. In addition, powerful atom selection commands are implemented. Trajectories can also be manipulated (for instance, fit to a reference structure) and written out.


Linux only.


  • Modular Python framework to facilitate development and testing of new algorithms
  • GPU-accelerated via the OpenMM toolkit (see benchmarks)
  • Alchemical free energy calculations in both explicit and implicit solvent
  • Hamiltonian exchange among alchemical intermediates with Gibbs sampling framework
  • General Markov chain Monte Carlo framework for exploring enhanced sampling methods
  • Built-in equilibration detection and convergence diagnostics
  • Support for AMBER prmtop/inpcrd files
  • Support for absolute binding free energy calculations
  • Support for transfer free energies (such as hydration or partition free energies)


Lightweight coordinate-only trajectory reader based on code from GROMACS, MDAnalysis, VMD. Linux only.


ParmEd is a general tool for aiding in investigations of biomolecular systems using popular molecular simulation packages, like Amber, CHARMM, and OpenMM written in Python.

There are two parts to ParmEd – the Python API that exposes the core classes used in its modeling capabilities, and two front-end Python programs (parmed and its GUI counterpart, xparmed) that make use of the ParmEd API to allow rapid prototyping and parameter-topology modifications for use in molecular simulations.


PDBFixer fixes problems in PDB files to prepare them for molecular simulation (development snapshot).

Protein Data Bank (PDB or PDBx/mmCIF) files often have a number of problems that must be fixed before they can be used in a molecular dynamics simulation. The details vary depending on how the file was generated. Here are some of the most common ones: If the structure was generated by X-ray crystallography, most or all of the hydrogen atoms will usually be missing. There may also be missing heavy atoms in flexible regions that could not be clearly resolved from the electron density. This may include anything from a few atoms at the end of a sidechain to entire loops. Many PDB files are also missing terminal atoms that should be present at the ends of chains. The file may include nonstandard residues that were added for crystallography purposes, but are not present in the naturally occurring molecule you want to simulate. The file may include more than what you want to simulate. For example, there may be salts, ligands, or other molecules that were added for experimental purposes. Or the crystallographic unit cell may contain multiple copies of a protein, but you only want to simulate a single copy. There may be multiple locations listed for some atoms. If you want to simulate the structure in explicit solvent, you will need to add a water box surrounding it. PDBFixer can fix all of these problems for you in a fully automated way. You simply select a file, tell it which problems to fix, and it does everything else. PDBFixer can be used in three different ways: as a desktop application with a graphical user interface; as a command line application; or as a Python API. This allows you to use it in whatever way best matches your own needs for flexibility, ease of use, and scriptability. The following sections describe how to use it in each of these ways.


A toolkit for Bayesian hidden Markov model analysis of single-molecule trajectories

This project provides tools for estimating the number of metastable states, rate constants between the states, equilibrium populations, distributions characterizing the states, and distributions of these quantities from single-molecule data. This data could be FRET data, single-molecule pulling data, or any data where one or more observables are recorded as a function of time. A Hiddenstclu Markov Model (HMM) is used to interpret the observed dynamics, and a distribution of models that fit the data is sampled using Bayesian inference techniques and Markov chain Monte Carlo (MCMC), allowing for both the characterization of uncertainties in the model and modeling of the expected information gain by new experiments.


Fast hierarchical clustering routines for R and Python.

This library provides Python functions for hierarchical clustering. It generates hierarchical clusters from distance matrices or from vector data.

conda install -c omnia fastcluster


Pint is a Python package to define, operate and manipulate physical quantities: the product of a numerical value and a unit of measurement. It allows arithmetic operations between them and conversions from and to different units.

It is distributed with a comprehensive list of physical units, prefixes and constants. Due to its modular design, you can extend (or even rewrite!) the complete list without changing the source code. It supports a lot of numpy mathematical operations without monkey patching or wrapping numpy. Physical quantities module.


Linux only.


One of the biggest issues you face when you first start doing molecular dynamics (MD) simulations is how to create an initial geometry that won’t blow up in the first few time steps. Repulsive forces are very steep if the atoms are too close to each other, and if you are trying to simulate a condensed phase (liquid, solid, or interfacial) system, it can be hard to know how to make a sensible initial structure.


Deep-learning models for drug discovery and quantum chemistry.

DeepChem is a python library that aims to make the use of machine-learning in drug discovery straightforward and convenient.

linux only