Includes: MutInf and Kullback-Leibler Divergence / Jensen-Shannon Divergence programs


What is MutInf?


MutInf is an analysis package written in Python. inline C, and R that analyzes data from Molecular Dynamics Simulations to identify statistically significant correlated motions and calculate residue-by-residue conformational entropies. Additionally, it can compare conformational ensembles from different constructs or starting points to show which residues show differences in their dihedral distributions due to changes in structure or dynamics. Our work has shown that the pattern of mutual information between residues can be used to identify couplings between allosteric sites and identify residues that might be important in mediating these couplings, and that the Jensen-Shannon Divergence and Kullback-Leibler Divergence show population shifts distant from the site of the perturbation, some of which have important functional consequences in allosteric mechanims.



Obtaining MutInf


MutInf is free for any use, academic or commercial use, though we encourage citations if you use it for publication. It is distributed under the GNU Limited Public License – which means you can even incorporate it to your own code you distribute if you wish. You can find a copy of the code on the Stanford SimTK website: .

I recommend downloading the latest version via anonymous Subservsion repository access:


svn checkout



If you use MutInf, please cite:


Christopher L. McClendon, Gregory Friedland, David L. Mobley, Homeira Amirkhani, Matthew P. Jacobson. Journal of Chemical Theory and Computation. 2009, 5 (9), pp 2486–2502.


Available on PubMed Central:


If you use Kullback-Leibler Divergence / Jensen-Shannon Divergence, please cite:


Christopher L. McClendon, Lan Hua, Gabriela Barriero, Matthew P. Jacobson. Journal of Chemical Theory and Computation. 2012. Article ASAP.

DOI: 10.1021/ct300008d





The code works best with Python 2.4.4 or 2.5x, 2.6.x, or 2.7x, and requires NumPy, SciPy, and BioPython libraries, which are easiest to install using rpm-based package managers such as “yum” for linux and “macports” for OS X. Alternatively, you can build these libraries from source but it will take a bit of work to install. Alternatively, Schrodinger ( bundles NumPy and SciPy with their Maestro package, which is free for academics.


I recommend running MutInf on 64-bit machines with as much RAM is possible -- ideally 4GB-16GB.

One requirement of the method is that you have many thousands of trajectory snapshots, ideally many tens of thousands. For six simulations of 10 ns each, ideally you'd want to save snapshots every 0.5ps -- 1ps, though the method will still work fine (but may reject some correlations as not statistically significant) if you have snapshots every 10 ps, though this is not recommended, unless your simulations are longer (i.e. 100ns). In Mike Gilson's papers that I cite, he keeps more snapshots than I do, up to every 100fs. I use robust entropy estimators and statistical filters that allow smaller sample sizes, so one can use thousands to tens if thousands of snapshots instead of a million or more snapshots.




A very special thanks to Greg Friedland for helping with code development and debugging. Without his help the code would not be what it is today. Thanks also to Salma Rafi for being the first end-user of the code and for using it in biologically-impactful applications, and to Adam Steeves who is currently improving the clustering/analysis protocol. Finally, thanks to my advisors, Matt Jacobson and Jim Wells, for supporting and encouraging my study of allostery and the development of this software.


Repository Access


MutInf's repository is on the SimTK site ( ), where a number of other useful simulation analysis tools can be found. Please contact Chris McClendon (see Contact below) if you have any suggestions, bug reports, patches, new features, etc.


MutInf Manual


1.   Installation

2.   Getting dihedral angles from simulations

3.   Specify residues to analyze

4.   Organize files into MutInf’s official directory structure

5.   Running the program (and options)

6.   Analyzing the results (and output files)

7.   Jensen-Shannon Divergence and Kullback-Leibler Divergence

8.   Helpful utilities

9.   Contact