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 q10-q90 interval. CSP5q-1H returns 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.14.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.14-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.14-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.14-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.14-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.14-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.14-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.14-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.14-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.14-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.14-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.14.tar.gz.

File metadata

  • Download URL: csp5-0.2.14.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.14.tar.gz
Algorithm Hash digest
SHA256 76208586a9476f8c070aa64b0819c11c7ac5af175d074dd1e6edf6d5a386c02f
MD5 54467f4287710db054ab0aea8aceafbe
BLAKE2b-256 f4f9e7c9f8d83abb03b8eb54b373c3ff062150883ffdc24fe0bb06634806095d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b2bab7060475d7fd00ae95b6e0536e6cbf274ebce3b186f72345ea2388197e6b
MD5 731dff6ce91fc08a78357d425dc5a06a
BLAKE2b-256 c8aec18b4477975ad77695203de787783e01b6a76bb52c626d25d6fcc5d3c59a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.14-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 5307704c3f52e5af433bb29ca03dc5e705807cfaac890cd824517fb760c571c6
MD5 5d8f1394b534c7e5137f6446befa761e
BLAKE2b-256 5188441467cc13c8157ab2c287b8a5a15db34b6ac40d68a52adb3f614c4562e2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 19599ec5eec54c0a334a62caf8a78a547a9f073d7792c8727f9a367ea51320af
MD5 e3d5e770dd493e7588750667ae113abe
BLAKE2b-256 69dd9a8cd95e0c52187102d9bf7efc7079d46b4e477e9b8d52469be4d9cfe5ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.14-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 5a8dedcb7eb175ae143102039840104a81108f57bd35ab9abbcc5d4785c81fbf
MD5 2ec33918f5f74be0bc3e0769df8bbce5
BLAKE2b-256 7445353eec1a9d5f23144a8db96ad5bf36a1f61c68502bd31e1ddc86478c19c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4531a113f30bece14cec9e148caaaa34b8a7dce949e22be175f11331464f184a
MD5 17b164a9e1ccb41c452bc67cc2988703
BLAKE2b-256 ff5478bc375a00ccc22315a1e969ecf1707b59de26e0330bec20ea63a34a8ba6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.14-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 5fd6093ec216c79525e56a4e1ecf5b2df9421ed430e96112782c1667f6cc603d
MD5 be1027251d14188e519bc5dc1d244155
BLAKE2b-256 09b5a88b3a16879aebda65e38b50836144dc35516d0dd2eeefa7c5a37f10bd4d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2ca8ccb31ded058f4778d75f8f2d89dcb2b4e8957302a6e74fda0ebe21966696
MD5 3bca93e1564cfd4ffc85a323124aaace
BLAKE2b-256 bf540852df66db7f9515465ee71a925264afd047c26326355eea5f9c63a0e16a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.14-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 4f998a25f2a78d7881b8a1f8fc601a19c14c910b09ba307b64669fc2481711dc
MD5 33aa1ca69f181069fd5d880e3e399d1d
BLAKE2b-256 a19b1ec7031e79ad7b841cd8821e89326f7fecf6e31cba59ce7fafe491098e5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.14-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 eedc25915a7a942e4cfd76b82bfabae1aadb8e4bde16fd02d42eb0c485272fe9
MD5 ade156c47a716c383cc1a0ced09be7bb
BLAKE2b-256 556af2df7b7a4814bb21d467a768209beebfb0b55b1653bbca81259e3a5cd577

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csp5-0.2.14-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.14-cp39-cp39-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 b75d05a157d935efc47381d0982e5c7e04871ab4fcd8006e6c464c0c5d5a161d
MD5 3b96dc703bfdbc3e04f07c84e2d051e7
BLAKE2b-256 3b60ecc6a6bd4d600330ae25bc5db56e38814550073e58995b4277c356fbf880

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