Re-referencing¶
BMRB shifts are sometimes mis-referenced — a constant offset shifts every peak of
a given nucleus. ChemicalShifts.reref corrects this in
place using one of two published methods.
Usage¶
import makeshift as ms
cs = ms.ChemicalShifts.from_bmrb(4527)
cs.reref(method="panav") # or "lacs"
print(cs.reref_offsets) # {'N': ..., 'CA': ..., 'CB': ..., ...}
Or apply it on load:
reref_offsets holds the offset applied to each nucleus, so the correction is
fully transparent and reversible.
The two methods¶
PANAV¶
PANAV (Wang & Wishart 2005) uses rarely-misreferenced HA shifts to assign secondary structure, then aligns N/CA/CB to curated per-structure reference distributions (Wang & Jardetzky 2002).
LACS¶
LACS (Wang & Markley 2009) fits secondary shift vs. CSI so the random-coil regime intercepts at the origin; it covers CA, CB, C′, N, and HN.
For example, entries 6586 and 4150 have been described in the literature as needing re-referencing.

Under the hood¶
The makeshift.reref subpackage exposes the underlying
routines if you want to work with raw DataFrames rather than a ChemicalShifts
object, you can use compute_offsets, apply_offsets, reref_lacs, and reref_panav.
Full API¶
See the re-referencing reference.