Run the released caustic-nmr package instead of a vendored copy
Maximilian Zinke
ae9adb7
- installs caustic-nmr==0.4.1 from PyPI; the weights and calibrator now come
from the package, so the Space and the library can no longer drift apart
- pins CPU-only torch: the default wheel pulls ~2.7 GB of CUDA libraries a CPU
Space cannot use
- deletes the vendored caustic/ tree, best.onnx and the tracked __pycache__
- the benchmark figure is committed here instead of hot-linked from a GitHub
repository that was private, so it renders for visitors
- README and footer carry the version, the benchmark summary and the DOI
chore: add .mailmap for the canonical author identity
Maximilian Zinke
da7fd83
fix: fallback ProteinData class when torch_geometric is absent
Maximilian Zinke
589695a
Mirrors github.com/bluegems661/caustic. HF Space's requirements.txt
intentionally excludes torch_geometric (heavy + only needed for
training-time batching), so ProteinData was None at structure_to_graph
construction time, producing the 'NoneType object is not callable'
TypeError that broke v0.3.0 inference for users.
Mirrors github.com/bluegems661/caustic f3f8d72. Fixes the
'NoneType object is not callable' error on the v0.3.0 ONNX inference —
function-level 'from .features import ...' lazy imports inside
graph.py / physics_features.py weren't rewritten by the initial sync,
so they resolved to None on first call.
Also adds caustic/potenci.py (random-coil shifts table) needed for
the residue_geometry compute path, and improves predict_shifts_onnx
error logging to include the full traceback when a conformer fails.
Mirrors github.com/bluegems661/caustic c0362f7. Fixes the
ONNXRuntimeError: 'Got invalid dimensions for input residue_geometry,
got 34 expected 52' that users hit on the Space — caustic/graph.py was
still emitting the D14-era 34-feature geometry tensor, but the v0.3.0
ONNX expects 52 features.
Also updates the footer header that still claimed 'v0.1.0 SchNet 404K
D14' to the actual shipped artefact (v0.3.0 PaiNN, carbon-cleaned,
-4.37% relative composite MAE). Embarrassing oversight from the
incomplete v0.3.0 push.
Mirrors github.com/bluegems661/caustic commit 1c894a1. Two layers
applied automatically after ONNX inference (opt out with
apply_calibrator=False):
1. Global per-nucleus offsets (small, <0.03 ppm)
2. CYS-CB +1.36 ppm modifier for disulfide-bonded cysteines
(detected by Sγ-Sγ distance < 2.5 A)
Shipped artefact: caustic/data/sa16_calibrator_v2.json (~1 KB JSON,
text — sneaks past HF binary push gate; the larger best.onnx already
lives at the Space root for app.py to load directly).
Embeds the GitHub-hosted benchmark figure (DUF3349 / BMRB 18812 / 2M0N,
HN amide HSQC top + residual bottom panel — CAUSTIC's error band sits
tighter to zero than SPARTA+ / UCBShift2). Image hosted at
github.com/bluegems661/caustic to keep the Space repo clean (HF Spaces
need XET / LFS for binary files).
Updates the model description from the stale '400K SchNet D14' to v0.3.0:
~740K PaiNN, carbon-aggressive label cleaning, -4.37% relative composite
MAE on cc.test (n=735) with CI excluding zero.
Bumps the served checkpoint to a PaiNN-backbone model trained on
carbon-aggressive label-noise-cleaned BMRB labels.
Net composite -4.37% relative MAE on cc.test (n=614, paired bootstrap,
CI [-0.041, -0.024] excludes zero) vs the prior PaiNN baseline.
Per-nucleus: CA -5.7%, CB -5.5%, C -3.7% (all CI excl 0); H / HA / N
tied (proton noise is biological, not referencing drift).
caustic/export.py also extended to support the PaiNN backbone (4 new
ONNX inputs: pos, node_normal, is_hbond, hb_cos).
CAUSTIC branding: full acronym, HSQC 1-letter labels, table sigma columns
Maximilian Zinke
bedef78
HSQC labels: use 1-letter AA + sequence number (e.g. 5W)
Maximilian Zinke
bce8f68
Split table into shift + sigma columns for clarity
- Strip plots: proper isotope labels, fill_between uncertainty, minor ticks, clean spines
- New 2D Spectra tab with four simulated experiments:
* 15N-1H HSQC with residue labels
* HNCACB (CA red, CB purple, dual overlay)
* 13CA-1HA correlation
* HNCO (sequential C'[i-1] vs N[i])
- All plots use NMR axis conventions (inverted ppm axes)
- Matplotlib rcParams set for Arial/Helvetica, 300 dpi export
- Both plots available as separate PNG downloads
Add ProteinData fallback when torch_geometric not installed
Maximilian Zinke
f65992c
ONNX-only inference path only needs a simple namespace to hold
tensor attributes. The full PyG Data class is only needed for
training/batching.
Wider container, inline subtitle so text doesn't clip