Skip to main content

CSP5: pip-installable NMR predictor for 13C and 1H.

Project description

CSP5

CSP5 is a pip-installable NMR predictor package with:

  • batched 13C and 1H prediction
  • prediction from precomputed geometries
  • shift matching utilities with dp (default), scipy, and murty (k-best)

Bundled defaults:

  • 13C model: CSP5-13C (model_id: csp5-13c)
  • 1H model: CSP5-1H (model_id: csp5-1h)

Bundled quantile models:

  • 13C quantile model: CSP5q-13C (model_id: csp5q-13c)
  • 1H quantile model: CSP5q-1H (model_id: csp5q-1h)

Install

Requires Python 3.9 or newer.

pip install CSP5

Prediction CLI

In interactive terminals, csp5 prints status lines to stderr before and after prediction. If a run is slow, it prints an additional note that first invocation can take longer while dependencies and model weights initialize, plus periodic "still working" updates during long runs. Use --no-status to silence them.

From SMILES

csp5 --smiles "CCO" --nucleus 1H
csp5 --smiles "CCO" --nucleus both
csp5 --smiles-file smiles.txt --nucleus 13C --batch-size 64
csp5 --smiles "CCO" --nucleus 13C --num-conformers 8
csp5 --smiles "CCO" --nucleus both --num-conformers 8 --output-conformers-json cco_conformers.json
csp5 --smiles "CCO" --nucleus 13C --num-conformers 8 --output-conformers-sdf cco_conformers.sdf
csp5 --smiles "CCO" --nucleus 13C --output-svg cco_13c.svg
csp5 --smiles "CCO" --nucleus 13C --output-svg cco_13c.svg --svg-bond-length 72 --svg-shift-font-scale 1.1
csp5 --smiles "CCO" --nucleus 13C --model-name CSP5q-13C
csp5 --smiles "CCO" --nucleus 1H --model-name CSP5q-1H

From molecule files (molfile or SDF)

By default, molecule-file input uses the coordinates embedded in the file. Add --regenerate-geometry to keep the input atom order/numbering while generating fresh ETKDG + MMFF/UFF coordinates for prediction.

csp5 --molecule-file input.mol --nucleus 13C
csp5 --molecule-file input.sdf --nucleus 1H --regenerate-geometry

From precomputed geometries (parquet structures dataset)

Input dataset requirements:

  • required columns: smiles, molblock
  • optional columns: conformer_rank, conformer_id, energy, energy_method

Predict only rank-0 conformers:

csp5 \
  --structures-path /path/to/structures.parquet \
  --conformer-rank 0 \
  --nucleus 1H \
  --batch-size 64

Predict using all conformers in the dataset:

csp5 \
  --structures-path /path/to/structures.parquet \
  --use-all-conformers \
  --nucleus 13C

Prediction Python API

from csp5 import draw_prediction, predict_molecule_file, predict_smiles, predict_structures, predict_sdf

# Standard SMILES mode
res = predict_smiles(["CCO", "c1ccccc1"], nucleus="1H", batch_size=32)
print(res.predictions.head())
svg = draw_prediction(res)

# Precomputed-geometry parquet mode
res2 = predict_structures(
    "/path/to/structures.parquet",
    nucleus="1H",
    conformer_rank=0,
    use_all_conformers=False,
)

# Precomputed-geometry SDF mode
res3 = predict_sdf("/path/to/embedded.sdf", nucleus="13C")

# Molfile/SDF mode with fresh generated geometry while preserving atom order
res4 = predict_molecule_file("/path/to/input.mol", nucleus="13C", regenerate_geometry=True)

# Quantile models for uncertainty quantification
res5 = predict_smiles(["CCO"], nucleus="13C", model_name="CSP5q-13C")
print(res5.predictions[["atom_index", "shift_ppm", "shift_q05_ppm", "shift_q50_ppm", "shift_q95_ppm"]])

Matching CLI

csp5-match expects one shift per line in each file.

Default fast path (dp)

csp5-match \
  --predicted-file predicted.txt \
  --experimental-file experimental.txt \
  --solver dp

SciPy Hungarian option

csp5-match \
  --predicted-file predicted.txt \
  --experimental-file experimental.txt \
  --solver scipy

Murty k-best option

csp5-match \
  --predicted-file predicted.txt \
  --experimental-file experimental.txt \
  --solver murty \
  --k-best-policy clip \
  --k-best 25 \
  --temperature 0.5 \
  --mae-delta-threshold 0.2

Matching Python API

from csp5 import match_shifts

pred = [7.35, 7.30, 1.25]
exp = [7.34, 7.31, 1.20]

# DP (default)
r1 = match_shifts(pred, exp, solver="dp")

# SciPy Hungarian
r2 = match_shifts(pred, exp, solver="scipy")

# Murty k-best
r3 = match_shifts(pred, exp, solver="murty", k_best=10, k_best_policy="clip")
print(r3.assignment_entropy, r3.num_competing_assignments)

Solver Notes

  • dp is the default and is intended for the standard 1D shift objective.
  • scipy uses Hungarian assignment on the full padded cost matrix.
  • murty is the k-best solver; use this when you need assignment ambiguity analysis.
  • For murty, k_best_policy="clip" (default) returns all feasible unique assignments when k_best is larger than what exists. Use k_best_policy="strict" to fail instead.
  • dp and scipy are top-1 only (k_best must be 1).

Output Notes

  • Prediction failures are returned explicitly (failures) with reason tags.
  • Prediction output always includes nucleus, model_id, and model_name.
  • Quantile models are selected explicitly with model_name="CSP5q-13C" or model_name="CSP5q-1H". Their shift_ppm value is the median prediction (shift_q50_ppm) and the output also includes shift_q01_ppm through shift_q99_ppm, plus shift_std_ppm estimated from the calibrated q10-q90 interval. CSP5q-13C and CSP5q-1H return calibrated quantile columns for uncertainty quantification.
  • For structures-mode predictions, conformer metadata columns are propagated when available.
  • CLI JSON is molecule-oriented, with top-level model metadata, per-molecule prediction lists, and atom-map numbers matching mapped_smiles_explicit_h.
  • Use --nucleus both to write 13C and 1H predictions in one JSON, grouped by nucleus under each molecule's predictions.
  • In SMILES mode, --num-conformers N predicts generated conformers and returns Boltzmann-averaged shifts at 298.15 K (--boltzmann-temperature-k changes the temperature). The default remains one conformer.
  • In structures mode, --use-all-conformers also returns Boltzmann-averaged shifts. Use --output-conformers-json to save individual conformer predictions separately.
  • Use --output-conformers-sdf to save the exact conformer geometry or geometries used for prediction.
  • Use --molecule-file path.mol or --molecule-file path.sdf for molfile/SDF input. Add --regenerate-geometry to discard embedded coordinates and create fresh geometry without changing the input atom order used for atom maps.
  • Use --output-svg path.svg or draw_prediction(result) to create an RDKit-native SVG drawing with atom labels (C4, H9) and shift notes. SVGs auto-size by default. Use both --svg-width and --svg-height to force a fixed canvas; tune with --svg-bond-length, --svg-atom-font-size, --svg-shift-font-scale, and --svg-padding.
  • When drawing quantile-model predictions, each shift note includes the median followed by shift_std_ppm, for example 18.35 +/- 1.24.

Project details


Download files

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

Source Distribution

csp5-0.2.17.tar.gz (68.0 MB view details)

Uploaded Source

Built Distributions

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

csp5-0.2.17-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (68.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

csp5-0.2.17-cp313-cp313-macosx_11_0_universal2.whl (68.0 MB view details)

Uploaded CPython 3.13macOS 11.0+ universal2 (ARM64, x86-64)

csp5-0.2.17-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (68.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

csp5-0.2.17-cp312-cp312-macosx_11_0_universal2.whl (68.0 MB view details)

Uploaded CPython 3.12macOS 11.0+ universal2 (ARM64, x86-64)

csp5-0.2.17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (68.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

csp5-0.2.17-cp311-cp311-macosx_11_0_universal2.whl (68.0 MB view details)

Uploaded CPython 3.11macOS 11.0+ universal2 (ARM64, x86-64)

csp5-0.2.17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (68.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

csp5-0.2.17-cp310-cp310-macosx_11_0_universal2.whl (68.0 MB view details)

Uploaded CPython 3.10macOS 11.0+ universal2 (ARM64, x86-64)

csp5-0.2.17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (68.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

csp5-0.2.17-cp39-cp39-macosx_11_0_universal2.whl (68.0 MB view details)

Uploaded CPython 3.9macOS 11.0+ universal2 (ARM64, x86-64)

File details

Details for the file csp5-0.2.17.tar.gz.

File metadata

  • Download URL: csp5-0.2.17.tar.gz
  • Upload date:
  • Size: 68.0 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.9.25

File hashes

Hashes for csp5-0.2.17.tar.gz
Algorithm Hash digest
SHA256 962107ad695c5d058710167938702a4ca1e93aa2a5c95982f6a20130da4ad811
MD5 654a1e59b3675f21bbbc6652293360ae
BLAKE2b-256 bb452f481612997bf8fc9e766cb1fc37aed39368b09e357519749f952ba10b62

See more details on using hashes here.

File details

Details for the file csp5-0.2.17-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csp5-0.2.17-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8042a3fcc1d3e56187775075b8d0dee65ff02323101384c0b3c48da672c46f66
MD5 e65489961555ea1be9bd46aa88a0a01b
BLAKE2b-256 fc9b04414aa92b3337496484d320d2bd440a9203369e3e07761db9079dc06d26

See more details on using hashes here.

File details

Details for the file csp5-0.2.17-cp313-cp313-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for csp5-0.2.17-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 554063cc818c6676277d9636efaffbe2ceb3d1db91eb1f8250034d9abbb2d381
MD5 b0b959cc780fe29c296d6baf85f47c29
BLAKE2b-256 845b75752b23dca92e4c33728d30cbc0c00f3f13439534e726bbaf2193886ac9

See more details on using hashes here.

File details

Details for the file csp5-0.2.17-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csp5-0.2.17-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1aacc9a1793d02409832360278a4df8aae3e284f4cece84a2da8ec01045d1075
MD5 4f8f95debd2dbc78b4cdca2413054577
BLAKE2b-256 6df6a3bf3914ca8d7024de14b219b42cabe1484d01c4976a2bc568e6090d6e7a

See more details on using hashes here.

File details

Details for the file csp5-0.2.17-cp312-cp312-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for csp5-0.2.17-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 772303d2a88207b7468e13ddc55b2f53f127ab8a66e39bc4d2890b827eb2b1b6
MD5 1813704bc8cf5dc1e9b261d80f8bb1b4
BLAKE2b-256 d554fce13c10a7e74186f1b1b14ecf5e776433f65d095409b7da1eb8451b75e9

See more details on using hashes here.

File details

Details for the file csp5-0.2.17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csp5-0.2.17-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f7971916e2845859902a885210da37dbedb3e28f41f07b3a203511deb11c3e4a
MD5 9847d987bf737add039060908b6d35e9
BLAKE2b-256 71c0bb8e06dc2603dbaee29e23fd75dcd27730c1e78f5319628a1e77f1376d5a

See more details on using hashes here.

File details

Details for the file csp5-0.2.17-cp311-cp311-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for csp5-0.2.17-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 4ce262e19fb49c553d8880f3a841fd14e49c876c146e7ef2337ba4f2daa26972
MD5 1e18fc3112934b938e1d01c1a5184b36
BLAKE2b-256 1e9f53c69dfa14a28a9af2bf7f38eaf2d83ac441c2f39fdeee94dd8de3af2ba0

See more details on using hashes here.

File details

Details for the file csp5-0.2.17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csp5-0.2.17-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e764a26f37e8a637461578174784913a2fc692a1901d5cc8cf80824e01e92dba
MD5 6449ed22ec553d2b1ae337e177fe16b7
BLAKE2b-256 36a7c9d2e0bd515676151736d6e7efe0ca28744800ccb263e380fa29133f2773

See more details on using hashes here.

File details

Details for the file csp5-0.2.17-cp310-cp310-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for csp5-0.2.17-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 54b3f66d8461c283831c3e6bd41317040323ee8a13c254fdadad812a71103466
MD5 bcc1aac3066dd68a07799d23e1de1ea0
BLAKE2b-256 a5ccad0c27ed1f2f8b46eb2e778bc8ae6bd9b3a001ae564ca21da73a0733fff2

See more details on using hashes here.

File details

Details for the file csp5-0.2.17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for csp5-0.2.17-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 15535334b6f9b0d9d747c9a33669d079832cd337e1ab0c2eb14dbf706e09106c
MD5 7f21ac6f5a2df407d61f0ff4adbcee7b
BLAKE2b-256 d7affc98f3e451c2817c75f0982875f0685b99bde2b47f4299a78bd50dc72b02

See more details on using hashes here.

File details

Details for the file csp5-0.2.17-cp39-cp39-macosx_11_0_universal2.whl.

File metadata

  • Download URL: csp5-0.2.17-cp39-cp39-macosx_11_0_universal2.whl
  • Upload date:
  • Size: 68.0 MB
  • Tags: CPython 3.9, macOS 11.0+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.9.13

File hashes

Hashes for csp5-0.2.17-cp39-cp39-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 22df4da3c456361313bbce3bc8459295bf37de443ccca1cf9d2e5db0d39b1c22
MD5 568a89c106d695e79507d5536c9dbbfc
BLAKE2b-256 ebb1f668bb829b79e0d0f8d1f0069857ab1a249709d3404ed805f3682767292d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page