In-house software

A number of useful in-house programs have been produced that are available for download. Programs are either in C++ (making frequent use of the GSL), python (2.7, usually requiring numpy, scipy, matplotlib and nmrGlue modules) or a mixture of both. Outputs are produced in either gnuplot, matplotlib or latex. For programs with graphical user interfaces, wx-python will be required. Specific installation instructions and requirements are described for each program individually.

All have had testing on mac, linux and windows, on both 32 and 64bit chipsets.

Please get in touch if you have any problems with installing and using these guys!

[PLEASE NOTE: Download links are not setup yet! work in progress...]

1. Sign determination by R

Python code to help with the determination of signs of chemical shift differences using the R method. The code takes a pb, kex and a list of chemical shift differences, and determines optimal B1 fields and offsets from numerically evolving the appropriate Louvillian. Effects of differences in transverse relaxation between exciting both upfield and downfield of the resonance of interest are calculated. Varian input macros files are produced, so that you only need type ‘go’ at the spectrometer. The program uses nmrPipe and nmrGlue to process data and will also analyze everything for you. Signs made simple!

Measurement of the signs of methyl chemical shift differences between ground and excited protein states by R: an application to αB-crystallin
Baldwin AJ, Kay LE
J. Biol. NMR (2012) 53(1) 1 pdf

2. Polymake

Python code for taking a pdb ‘building block’ file and assembling it into a polyhedra. Modelling restraints, such as enforcing a minimum distances between two points are implemented. Modified fortran code is provided for rapidly calculating PA collision cross section values, to enable models to be compared to experimental collision cross section data.

The polydispersity of αB-crystallin is rationalised by an interconverting polyhedral architecture
Baldwin AJ, Lioe H, Hilton GR, Baker LA, Rubinstein JL, Kay LE, Benesch JLP
Structure (2011), 19, 1855-63

3. Champ

Used to analyze 1D electrospray mass spectra where a protein M is binding a ligand P giving complexes with stoichiometries of the form MiPj. The program assumes that the concentrations of the various complexes can be described by a continuous distribution function. We applied this approach in studies of clients binding to sHSP oligomers.

Dissecting heterogeneous molecular chaperone complexes using a mass spectrum deconvolution approach

Stengel F, Baldwin AJ, Bush MF, Hilton GR, Lioe H, Basha E, Jaya N, Vierling E, Benesch JLP
Chem & Biol. (2012), 19, 599-607
commentary Slingsby C, Clark AR

4. Champion

Used to analyse batch 2D electrospray/ion mobility data. Details to come.

5. CPMG R2eff calculation

Implementations of various methods for calculating effective transverse relaxation rate in CPMG experiments for 2 site exchange. Includes exact solution to 2x2 Bloch McConnell equations (see publication 24).

c code
python code

An exact solution for R2,eff in CPMG experiments in the case of two site chemical exchange
Baldwin AJ
JMR (2014), 244, 114-124


Software for calculating the collision cross-section of proteins, for use in ion-mobility mass spectrometry calculations.

Collision Cross Sections for Structural Proteomics
Markland EG, Degiacomi MT, Robinson CV, Baldwin AJ, Benesch JLP
Structure (2015) 23(4):791-9


Software for deconvolving mass spectra.

Pasted Graphic 3
Bayesian Deconvolution of Mass and Ion Mobility Spectra: From Binary Interactions to Polydisperse Ensembles
Marty MT, Baldwin AJ, Marklund EG, Hochberg GKA, Benesch JLP, Robinson CV
Anal. Chem. (2015) 87 (8) 4370-4376


Software for assigning methyl-methyl through space data, for use with a crystal structure using graph theory.

Automatic assignment of methyl-NMR spectra of supra-molecular machines using graph theory
Pritisanac I, Degiacomi M, Alderson R, Carneiro M, Eiso AB, Siegal G, Baldwin AJ,
J. Am. Chem. Soc. (in press) 2017


Pulsar, software for fitting gas phase dissociation data.

Quantifying the stabilizing effects of protein-ligand interactions in the gas phase
Allison TM, Reading E, Liko I, Baldwin AJ, Laganowsky A, Robinson CV
Nature Communications (2015) DOI: 10.1038/ncomms9551

Quick data references

A selection of quick ‘go-to’ references for values such as scalar coupling constants in proteins, and chemical shifts

Scalar coupling constants:

Scalar coupling in amino acids by Dr. Alexandar Hansen png

Chemical Shifts:

BMRB database statistics (protein chemical shifts) here

Chemical shift distribution histograms for proteins, from the BMRB (needs Javascript enabled)

Chemical shift distribution histograms for proteins allowing side-by-side comparison, from the BMRB (needs Javascript enabled)

Biomolecular structure:

PDB statistics


Bionumbers - contains a great many random quantities such as cell volume, cellular concentration of ATP etc.

Web of Knowledge, Portal for UofT

Learning NMR

While originally a curiosity for theoretical physicists, NMR techniques are now routinely applied to solve problems across chemistry, physics, biology, engineering, medicine and just about everything in between. While in some instances, a ‘turn up and press go’ attitude will give spectra that can be interpreted, a deeper understanding of the theory will dramatically increase both the quality of the data, and the information that can be obtained from your sample.

Learning and understanding NMR is, however, a uniquely challenging prospect. A physicist will describe NMR as a ‘solved problem’ in the sense that the fundamental equations used to describe the phenomena have been well known for over 50 years. Nevertheless, hundreds of novel experiments are still published every year, taking advantage of one subtlety or another. So while NMR is ‘solved’, new and creative ways of exploiting the physics are continually being developed. Students that wish to take maximum advantage of new experiments need an appreciation of the theory.

For those interested in applying NMR to problems in biology, the chemical properties of the system under study must be fully understood. These twin requirements make biomolecular NMR studies hugely cross-disciplinary, and therefore intellectually incredibly rewarding. Though in the words of Lewis Kay, ‘it’s not easy’.

There are a great many textbooks devoted to all aspects of biomolecular NMR. Depending on the background of the student, it is common for students to find the physics either impenetrable, or over-simplified. A good solution is simply to approach the problem from as many different directions as possible and find the one that works.

To help with this, the following are some resources that I have personally found to be incredibly useful for understanding one aspect or another of NMR spectroscopy. I hope they are of use to you. If you think a given resource is either too technical or too hand-wavy, simply switch to another, and work your way up! Good luck.

Most accessible for chemists:

‘Advanced spectroscopy’, and ‘NMR biophysics’ courses by Oliver Zerbe

‘The basics of NMR’ by Joseph Hornak

NMR Lectures by James Keeler

NMR Lecture course by David Case pdf

NMR Lecture by Christian Griesinger pdf

For those interested in a more mathematical treatment:

Lewis Kay’s Lecture Notes (Jan 2010)
(Survival guide for the Kay lab) pdf

NMR notes from Ronald E.D. McClung (1983)
(From group meetings, saved by Ranjith) pdf

NMR Lecture notes on chemical exchange by Pramodh Vallurupalli (Feb 2009) pdf

The three papers that started it all:

Bloch F, Physical Review (1946) 70 460
Wangsness RK, Bloch F, Physical Review (1953) 89 728
Redfield AG, IBM Journal (1957) 19-31

NMR software

The standard program for processing NMR data
Delagio F, Grzesiek S, Vuister GW, Zhu G, Pfeifer J, Bax A
J Biol, NMR (1995) 6 277-293 pdf

Great program for comparing NMR spectra, and assigning. Works well with python
Goddard TD, Kneller DG (UnPublished)

Predicts backbone and side chain 1H 13C and 15N chemical shifts using a pdf file as an input. The python interface is my personal favourite. Note that the web server can give some funny side chain shifts.
Han B, Liu Y, Ginzinger S, Wishart D
J Biol. NMR (2011) 50 1 43-57 pdf

Python module for working with NMR data. A great bit of code!
Helmus JJ, Jaroniec CP (soon to be published)

Useful code for converting between different common NMR file storage formats.
Hokkaido University

Mathematica code for performing symbolic calculations. Very useful!
Jerschow A,
J Mag Res (2005) 176 7-14 pdf

Three very useful NMR data analysis programs from the laboratory of Dr. Flemming Hansen:

1. FuDA
Very convenient python code for quantitatively peak intensities, particularly when you have a high degree of overlap in a spectrum. Gives nice 3D gnuplot outputs for individual peaks so you can see when things have screwed up.

Software for numerically analysing CPMG relaxation dispersion data. Can take a wide range of spin-systems and basis sets and has experiment files that are individually tailored. Simply, to not use software that best matches what you do in the experiment brings in the possibility of having significant errors in the parameters that you ultimately extract. This program is presently the Kay group standard for relaxation dispersion analysis.

3. Sider
Analyses carbon chemical shifts to extract out rotamer (gauche -, gauche + and trans) conformations for Ile, Leu and Val residues.

Protein structure software

Software from Andrej Sali’s group for homology or comparative modelling of protein three dimensional structures
Sali A, Blundell TL, J Mol Biol (1993) 234 779-815 pdf

Software for automated determination of macromolecular structures using X-ray crystallography and other methods
Acta Cryst (2010) D66 213-221 pdf