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.

DOI 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                       # writes 1ubq.nef next to the input
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

Zinke, M. CAUSTIC: conformation-aware uncertainty and shift prediction from protein conformer ensembles. Zenodo. https://doi.org/10.5281/zenodo.22213167

That is the concept DOI — it always resolves to the latest version. Each release also has its own version DOI, shown on the Zenodo record. Machine-readable metadata is in CITATION.cff, which GitHub's "Cite this repository" button renders.

Metadata

Release files for caustic-nmr 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for caustic-nmr 0.4.1
File Size Uploaded Provenance Actions
caustic_nmr-0.4.1.tar.gz 3.0 MB Without provenance Details for caustic_nmr-0.4.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for caustic-nmr 0.4.1
File Interpreter ABI Platform Actions
caustic_nmr-0.4.1-py3-none-any.whl Python 3 none any Details for caustic_nmr-0.4.1-py3-none-any.whl

Total release size: 5.9 MB

Release files / caustic_nmr-0.4.1.tar.gz

Download URL caustic_nmr-0.4.1.tar.gz
Size 3.0 MB
Tags Source
SHA-256 checksum
How to use checksums
19e20f50e64be17ba6eb8163f6461d1f8065d0de6d28dd8c9ee57a84b8877417
BLAKE2b-256 checksum
How to use checksums
bc62485598163f66aafabada770715a0f472b1c4b022c6364525302314d13fbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.3

Release files / caustic_nmr-0.4.1-py3-none-any.whl

Download URL caustic_nmr-0.4.1-py3-none-any.whl
Size 2.9 MB
Tags Python 3
SHA-256 checksum
How to use checksums
0c0feeca008ca6da738e1653590c518583938a104207c828301f1652847b8bbb
BLAKE2b-256 checksum
How to use checksums
2a182d7e2566810bc946346b0d3dc2f3035db390a8fbad1c0818909f4ed09f0f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.3

Security for caustic-nmr 0.4.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 release files No provenance

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