Skip to content

Quickstart

This page walks through the core workflow: fetch a BMRB entry, get tidy chemical shifts, optionally re-reference them, and build an assigned peak list. The same example lives in demos/quick_start.ipynb.

Fetch and parse shifts

ChemicalShifts.from_bmrb downloads a BMRB entry and returns a tidy table — one row per observed shift.

import makeshift as ms

cs = ms.ChemicalShifts.from_bmrb(5363)

cs.data          # one row per shift: Seq_ID, Comp_ID, Atom_ID, Atom_type, Val
cs.sequences()   # one row per entity: ID, polymer type, one-letter sequence

The columns are deliberately tidy so you can go straight to pandas:

Column Meaning
Seq_ID Residue number in the entity sequence
Comp_ID Residue type (three-letter, e.g. ALA)
Atom_ID Atom name (e.g. CA, HN, N)
Atom_type Element (C, H, N, …)
Val Chemical shift in ppm

Re-reference shifts

BMRB shifts are sometimes mis-referenced — a constant offset shifts every peak of a given nucleus. Pass reref= to correct this on load, and optionally compute the chemical-shift index (CSI):

cs = ms.ChemicalShifts.from_bmrb(4527, reref="lacs", calc_csi=True)
cs.reref_offsets   # {atom: offset applied}

See Re-referencing for the "lacs" vs "panav" methods.

Build a peak list

From an assigned shift table you can synthesize an assigned peak list — by default an amide HSQC (¹H–¹⁵N):

peaks = cs.peaklist()
peaks.data

You can also build a peak list directly from an entry or BMRB id, or read one from a CSV — see Peak lists.

Go deeper