Skip to content
Switch branches/tags


Binder Click the launcher to try PyBMRB on a live Jupyter Notebook.

Biological Magnetic Resonance data Bank (BMRB)

BMRB collects, annotates, archives, and disseminates (worldwide in the public domain) the important spectral and quantitative data derived from NMR spectroscopic investigations of biological macromolecules and metabolites. The goal is to empower scientists in their analysis of the structure, dynamics, and chemistry of biological systems and to support further development of the field of biomolecular NMR spectroscopy.

BMRB maintains its data in a relational data base and also as flat files in NMR-STAR format. It also provides data access via API and provide software tools to handle NMR-STAR files. PyNMRSTAR is one such tool to facilitate read, write and parse NMR-STAR files. PyBMRB enhances the usability of BMRB data and data access and visualization of chemical shift data from BMRB.

Data visualization

PyBMRB uses modern python visualization tool plotly for its visualization. It features chemical shift histograms of standard amino acids from BMRB data base and N15-HSQC peak position simulation for any given BMRB entry (or) list of BMRB entries (or) from a local assigned chemical shift list in NMR-STAR format. Random coil N15-HSQC simulation based on BMRB database statistics is also included.

This library can produce stand alone interactive visualizations as an html file or it can be used in a Jupyter Notebook. Example notebooks can be found here


PyBMRB is available in Python Package Index (PIP). It can be easily installed with the following command

pip install pybmrb

To install from the source, clone or download the source and go to the folder which contains '' and run the following command

pip install .

If necessary use 'sudo'.

Chemical shift Histogram

BMRB serves Nuclear Magnetic Resonance(NMR) community by providing high quality curated chemical shift data of various biologically important macro molecules like proteins and nucleic acids and small molecules like ligands , co-factors, small peptides and metabolites. Chemical shift distribution of an atom in an amino acid or nucleic acid helps us to understand its diverse chemical environment. Chemical shift histograms from a database like BMRB will help us to understand the biophysical nature bio-molecules and provides a priory probabilities for resonance assignments.

Conditional Histogram

Chemical shift assignment in a multi-dimensional NMR experiment is a biggest challenge. PyBMRB could help the process by generating conditional histogram. If partial assignments of a particular amnio acid is available, then PyBMRB could estimate the chemical shift distribution of an unassigned atom in that amino acid only from those entries whose chemical shifts are similar to the given list for that particular amino acid.

Examples in Notebook

Chemical shift histogram examples notebook can be found here. The output might look like this

N15-HSQC Simulation.

N15-HSQC is one of the most common and useful NMR experiment. It carries signatures of folded state, ligand interaction and experimental environments like pH and temperature. BMRB contains thousands of assigned chemical shifts of various bio-molecules. PyBMRB make use of this data to simulate N15-HSQC peak positions for any BMRB entry. Its also possible to compare N15-HSQC spectra of different entries or BMRB entries with user generated chemical shift information in NMR-STAR format.

N15-HSQC spectrum from sequence.

As an experiment, BMRB developed tools to simulate random coil N15-HSQC spectrum for a given protein sequence using database statistics. Assuming the fact that in BMRB, small segments of given sequence might exists in all possible confirmations, one could calculate the chemical shift of an atom in random confirmation by averaging the chemical shifts of small segments over the entire database

Examples in Notebook

N15-HSQC examples notebook can be found here The output of the notebook looks like this


BMRB data visualization tools using python Plotly




No packages published