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.
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:
| 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 torchpath 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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file caustic_nmr-0.4.1.tar.gz.
File metadata
- Download URL: caustic_nmr-0.4.1.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19e20f50e64be17ba6eb8163f6461d1f8065d0de6d28dd8c9ee57a84b8877417
|
|
| MD5 |
1e3afae77a071e7d16f2922d95123d84
|
|
| BLAKE2b-256 |
bc62485598163f66aafabada770715a0f472b1c4b022c6364525302314d13fbc
|
File details
Details for the file caustic_nmr-0.4.1-py3-none-any.whl.
File metadata
- Download URL: caustic_nmr-0.4.1-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c0feeca008ca6da738e1653590c518583938a104207c828301f1652847b8bbb
|
|
| MD5 |
0e1c13469048cc62def597fd2cfe7076
|
|
| BLAKE2b-256 |
2a182d7e2566810bc946346b0d3dc2f3035db390a8fbad1c0818909f4ed09f0f
|