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. The current release is supported on Linux. Installing from the source distribution requires working C and C++ compilers for the native matching backends.

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. The bundled scale is calibrated on held-out NMRexp-like data. Coverage is not guaranteed for rare or out-of-distribution chemistry, so these intervals should not be interpreted as a general OOD safety bound.
  • 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.18.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.18-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.18-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.18-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.18-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.18-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.18-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.18-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.18-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.18-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.18-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.18.tar.gz.

File metadata

  • Download URL: csp5-0.2.18.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.18.tar.gz
Algorithm Hash digest
SHA256 5e8ca5f1c4c7bcb6146ffaa6d9a4cab5212e29aaa753ea4875096cd92e92444a
MD5 39000f659f77219ad5a4fbd2c268b55e
BLAKE2b-256 08cdf1490a70c93f48b8e82e644fbdaad613bf60c54a41bc9d82d96b5626be58

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.18-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 059d2994ba631b2ac134ca76c812580627c3ba065f700af50725bfa7e41ce8a4
MD5 1b61544a1bc34a9e69b42ad18223bfeb
BLAKE2b-256 0e1ebfe9a9cce65c87c2d4734267149f370e1aba8a5111273ac551505c3eb4ba

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.18-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 d891d7710d035aac730a12bf1ec2d0e5249435e15fdfc7a520411cdc2fa3fede
MD5 c0dbcfb2cbf937f3751016dba9b65160
BLAKE2b-256 8a279a3914ca1dc406f449091353fd3981f3bce3d307ab441cde6f0b6835b676

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.18-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ff330c97022b4dbad492e7a046ad23d22b4fd0ddf29986b0192f0d78bcfa640a
MD5 c8a6aefe03fd6e32f01fc112ef461e33
BLAKE2b-256 d3ef3ad5c2d89d92e07c2076019ecd8ab2f98a7d6e62a990f09a322242533107

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.18-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 5a2b1254b3e107074a08535864e515d5241ebcb2ccc85c5fe0c71857dc890fb6
MD5 b025446053de7564fd27045ec24979e6
BLAKE2b-256 eb3576eb7acbff6e329fbb04c8435891e1d4c46fae32b5cf1fb23270c828fc0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.18-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1bd67f1bacdab2953612267429a7aec36b9b8351e91bfd469e79a60fec04ef8d
MD5 15ea45552754ab69b8f9b9b7afc9eb30
BLAKE2b-256 94e8f5111f69a35d7b642887baaf8ae7ba28367b8a3f1e4c053ae368681622f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.18-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 4706e21a3beaf82663ea045caa9790fa04511d63679139088f7786d0244dd417
MD5 a13e248bf94082e1419606c6b28b7ec4
BLAKE2b-256 b892477b802ee1a7ed026a4bb6986049b9ac3a3d65fd2c850e6260691c1b8ee7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.18-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8c5cd5ec41cc93ba602131da3341ead0c88093088c30b56914d32981c6e0f6ac
MD5 7fedbc5807213611e3a3fbe29a6a6d55
BLAKE2b-256 f64907bb00d345049f2bd602bb05f1ab860c05a68c710d5492b6a8446a15012a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.18-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 c5799ff1d5b6e0dcb952cf749377794662413e822912038cd4b6868be0aa2075
MD5 e728e2ce1bf78ca0632165c0a49eb650
BLAKE2b-256 c4c9a4a1213e8f23a9466001d65a568ba30c80df9a4a9723e78d28e3f62d5cb8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.18-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 006de319d6002497de9b4f51305b192ad2364cc570f670cb87f008c99e137b68
MD5 3fd59054bf9ce67002269ab087d479a9
BLAKE2b-256 5e40eed35052003905e63a768cd7bb7c1e5c935c79739560d458083054f7c157

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csp5-0.2.18-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.18-cp39-cp39-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 6a97a9ef7c5d250bf3c07de658760095434e7a1b54bd2bd3d6d3ef5b9d56ad86
MD5 2ba8ebb35f33356cbdad8fce377dae94
BLAKE2b-256 bc819110637c0d3d24fbb25439ec54c0203292335e3fe98420f4b459ef1d4810

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