Skip to content

NMR Observables

synth-pdb generates a complete suite of synthetic NMR observables for testing assignment software, structure calculation pipelines, and AI/ML models โ€” all physically grounded in the real NMR experiment.

[!NOTE] As of v1.16.0, detailed NMR prediction is implemented in the separate synth-nmr package. synth-pdb provides the CLI flags and Python shims described here, delegating computation to synth-nmr โ‰ฅ 0.9.0.


NOE Restraints (--gen-nef)

Generates synthetic distance restraints based on inter-proton geometry.

Physics: The NOE intensity scales as \(r^{-6}\), so only proton pairs closer than a cutoff (default 5.0 ร…) produce observable cross-peaks.

synth-pdb --sequence "LKELEKELEKELEKEL" --conformation alpha --gen-nef
# Output: my_structure_restraints.nef

Output is in NMR Exchange Format (NEF), importable directly into CCPNMR Analysis V3, CYANA, and CS-Rosetta.


Chemical Shifts (--gen-shifts)

Generates predicted backbone and sidechain chemical shifts (\(\delta\)) using a SPARTA-lite implementation:

  1. Base value: Random coil shifts (Wishart et al. 1995)
  2. Secondary structure offset: Based on local ฯ†/ฯˆ angles
  3. Ring-current corrections: From aromatic residues (Haigh & Mallion 1979)
synth-pdb --sequence "LKELEKELEKELEKEL" --conformation alpha --gen-shifts
# Output: my_structure_shifts.nef

Secondary structure signatures:

Nucleus ฮฑ-Helix offset ฮฒ-Sheet offset
\(C_\alpha\) +3.1 ppm โˆ’1.5 ppm
\(C_\beta\) โˆ’0.5 ppm +1.2 ppm
\(H^\alpha\) โˆ’0.4 ppm +0.8 ppm
\(^{15}\)N โˆ’1.5 ppm +1.2 ppm

Use the Chemical Shift Index (CSI) analysis to verify secondary structure is correctly encoded in the generated shifts โ€” exactly as you would for a real BMRB entry.


Relaxation Data (--gen-relax)

Simulates \(R_1\), \(R_2\), and heteronuclear NOE based on the Lipari-Szabo model-free formalism:

\[R_1 = \frac{d^2}{4} \left[ S^2 J(\omega_H - \omega_N) + \ldots \right]\]
\[S^2 = 1 - \frac{B\text{-factor}}{B_{\max}}\]
synth-pdb --sequence "LKELEKELEKELEKEL" --conformation alpha \
  --gen-relax --tumbling-time 5.0
# Output: my_structure_relaxation.csv

Options:

Flag Default Description
--tumbling-time auto Global correlation time ฯ„_c (ns)
--field-strength 600 ยนH Larmor frequency (MHz)

RPF Scores (synth_pdb.nmr.calculate_rpf_score)

The RPF score (Huang et al. 2005) evaluates how well a structural model explains a set of NOE-derived distance restraints:

Metric Measures
R (Recall) Fraction of observed NOEs explained by the structure
P (Precision) Fraction of structure-predicted contacts with NOE evidence
F Harmonic mean of R and P (overall goodness-of-fit)
DP Discriminant Power โ€” separates correct from incorrect folds
from synth_pdb.nmr import calculate_rpf_score

score = calculate_rpf_score(
    pdb_content=pdb_text,
    noe_file="restraints.nef",
    distance_cutoff=5.0,
)
print(f"R={score.recall:.3f}  P={score.precision:.3f}  F={score.f_score:.3f}  DP={score.dp:.3f}")

Interpretation (BMRB thresholds):

Score Meaning
F > 0.70 Good structural model
F 0.50โ€“0.70 Moderate โ€” review restraint completeness
F < 0.50 Poor โ€” significant structural errors

See the RPF Validation tutorial for an interactive demonstration.


Residual Dipolar Couplings (RDC)

See the dedicated RDC module documentation and the RDC Alignment Explorer tutorial.


J-Couplings (--gen-couplings)

Predicts scalar \(^3J_\text{HN-HA}\) couplings via the Karplus equation:

\[^3J(\theta) = A\cos^2\theta + B\cos\theta + C\]
synth-pdb --sequence "LKELEKELEKELEKEL" --gen-couplings
# Output: my_structure_couplings.csv
Secondary structure \(^3J_\text{HN-HA}\)
ฮฑ-Helix < 6 Hz
ฮฒ-Sheet > 8 Hz
Random coil ~7 Hz

See Also