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-nmrpackage.synth-pdbprovides the CLI flags and Python shims described here, delegating computation tosynth-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:
- Base value: Random coil shifts (Wishart et al. 1995)
- Secondary structure offset: Based on local ฯ/ฯ angles
- 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:
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:
| Secondary structure | \(^3J_\text{HN-HA}\) |
|---|---|
| ฮฑ-Helix | < 6 Hz |
| ฮฒ-Sheet | > 8 Hz |
| Random coil | ~7 Hz |
See Also
- API: nmr module โ
calculate_rpf_score,read_restraint_file - API: rdc module โ RDC back-calculation and Q-factor
- API: relaxation module โ \(R_1\), \(R_2\), NOE equations
- Tutorial: Virtual NMR Spectrometer
- Guide: For NMR Spectroscopists