Skip to main content

CAUSTIC

Conformation-Aware Uncertainty and Shift predicTion from proteIn Conformer ensembles

Predicts protein backbone NMR chemical shifts (H, HA, N, CA, CB, C') with per-residue uncertainties from a PDB, mmCIF or AlphaFold structure. A 741,024-parameter PaiNN equivariant graph neural network, trained on 3,433 BMRB-linked experimental structures with carbon-aggressive label-noise cleaning; NMR ensembles are predicted as the median over conformers.

CI Web app

Try it in your browser — no install needed.

Install

pip install caustic-nmr

Python ≥ 3.10; Linux, macOS and Windows. The model weights and calibrator are inside the package — nothing is downloaded at run time. PyTorch is a dependency (graph construction uses it; inference itself runs on ONNX Runtime).

60-second example

caustic --version                      # package version, model SHA-256, calibrator
caustic 1ubq.pdb                       # NEF to stdout
caustic 1ubq.pdb --format csv -o 1ubq_shifts.csv
caustic AF-P01112-F1-model_v6.cif      # AlphaFold model: pLDDT read from the B-factor column
caustic ensemble.pdb --ensemble median # NMR ensemble: median over conformers (default)
from caustic import predict_shifts_onnx
from importlib.resources import files

result = predict_shifts_onnx("1ubq.pdb", str(files("caustic.data") / "best_v2_carbons.onnx"))
result.mean["CA"]        # CA shifts (ppm), one per residue
result.std["CA"]         # per-residue sigma (ppm)
result.residue_names     # ['MET', 'GLN', 'ILE', ...]
result.provenance        # package version, model SHA-256, calibrator, date

Every output file carries the same provenance stamp in its header:

# caustic-nmr 0.4.0 model=best_v2_carbons.onnx sha256=ebc7bbc2fc59 calibrator=sa16_v2_carbons_slim date=2026-08-30T16:27:19Z

Inputs and outputs for ubiquitin and an AlphaFold model are in examples/.

Accuracy

Measured through this exact package (the released wheel, bundled weights, default settings) on the 735-protein held-out test split, against SPARTA+ 2.90, LEGOLAS and UCBShift2 in full mode (transfer module on), paired per residue:

Per-nucleus MAE, all four methods on the common residue set

Nucleus (n residues) CAUSTIC SPARTA+ LEGOLAS UCBShift2
H (62,197) 0.309 0.426 0.525 0.343
HA (51,541) 0.175 0.233 0.251 0.192
N (61,978) 1.713 2.321 2.727 1.918
CA (64,504) 0.764 0.975 1.091 0.834
CB (58,264) 0.860 1.082 1.311 0.920
C (46,003) 0.804 1.029 1.109 0.919

MAE in ppm on the 344,487 residues all four methods predicted (731 proteins). Per-protein composite, paired, with protein-level bootstrap CIs (Δ in ppm): −25.9 % vs SPARTA+ (Δ −0.276 [−0.318, −0.243]), −35.3 % vs LEGOLAS (Δ −0.429 [−0.450, −0.412]), −11.5 % vs full UCBShift2 (Δ −0.102 [−0.127, −0.083]) — every per-nucleus CI excludes zero. 67 of 693 test structures are in UCBShift2's own reference database (where its transfer module excels); they are included, so the UCBShift2 comparison is conservative against CAUSTIC. Protocol, competitor versions, crash accounting and the fairness slices: docs/BENCHMARKS.md; regenerate everything with python benchmarks/rescore.py --bootstrap 2000.

Where the details are

Question Document
How does the model work, how was it trained? docs/METHOD.md
What data, what split, what licences? docs/DATA.md
How were the numbers above measured, against which versions of which tools? docs/BENCHMARKS.md
What does it not do? docs/LIMITATIONS.md
Regenerate every table from the per-residue results benchmarks/README.md
One protein end to end benchmarks/WALKTHROUGH.md
What changed between versions CHANGELOG.md

Output formats

Format Flag For
NEF 1.1 (default) --format nef CCPN Analysis v3 and other NEF-aware software
NMR-STAR 3.x --format star BMRB deposition
CSV --format csv pandas / spreadsheets (pd.read_csv(path, comment="#"))
JSON --format json programmatic use (provenance object included)

Things to know

  • One chain per call (--chain); other chains, ligands and waters are not in the graph.
  • Missing backbone H/HA are synthesised from geometry (X-ray and AlphaFold inputs).
  • Thirty non-standard residue names (MSE, HYP, SEP, TPO, PTR, CSO, PCA, …) are mapped to their parent residue; the modification itself is invisible to the model.
  • Temperature is fixed at 298 K at inference; pH is not an input.
  • σ comes from the network's uncertainty head; there is no pLDDT-dependent widening and no post-hoc isotonic calibration. See LIMITATIONS.md §4–5.
  • The shipped model is ONNX-only; the --backend torch path cannot load it (CHANGELOG, Known issues).

Licence

Code: MIT. Model weights and calibrator (caustic/data/): CC BY 4.0 — attribution CAUSTIC model weights, Maximilian Zinke, 2026, https://github.com/maxzinke/caustic-nmr. Training data come from the BMRB and the wwPDB; no BMRB records are redistributed (DATA.md §6).

Citation

See CITATION.cff (GitHub's "Cite this repository" button renders it).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

caustic_nmr-0.4.0.tar.gz (3.0 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

caustic_nmr-0.4.0-py3-none-any.whl (2.9 MB view details)

Uploaded Python 3

File details

Details for the file caustic_nmr-0.4.0.tar.gz.

File metadata

  • Download URL: caustic_nmr-0.4.0.tar.gz
  • Upload date:
  • Size: 3.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.3

File hashes

Hashes for caustic_nmr-0.4.0.tar.gz
Algorithm Hash digest
SHA256 d6dd605d04912fd51c64ad1e40e1f8d6d08a56f68fae1715e8829310720ed69d
MD5 164de0d9d6cedbed3fef9c9371f29e9a
BLAKE2b-256 83a9db5d8f1053c5ea16dcc288092d33c6d34530c326d542090103d370baa0e7

See more details on using hashes here.

File details

Details for the file caustic_nmr-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: caustic_nmr-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 2.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.3

File hashes

Hashes for caustic_nmr-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a15d596e9ae1b4b1996ff70160483e9b064a7efaf54a15af3861e89a7c2c4492
MD5 e8cea941a1c892d494902c48c492627f
BLAKE2b-256 1dbe284f9167fbbf94b52b714283c774d55876b289d3dce9159657ec04e71b2e

See more details on using hashes here.

Release history Release notifications | RSS feed

0.4.1

2 files

This release

0.4.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page