Skip to content

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:

cs = ms.ChemicalShifts.from_bmrb(4527, reref="lacs")

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).

cs.reref(method="panav")

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.

cs.reref(method="lacs")

For example, entries 6586 and 4150 have been described in the literature as needing re-referencing.

Re-referencing example

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.