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.15.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.15-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.15-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.15-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.15-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.15-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.15-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.15-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.15-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.15-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.15-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.15.tar.gz.

File metadata

  • Download URL: csp5-0.2.15.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.15.tar.gz
Algorithm Hash digest
SHA256 8a32cd28b980151970ee7c1ba6a44e0e22514c70fcbbb45d849e53c7674fd307
MD5 da0f069206a811cd103013ba45941db2
BLAKE2b-256 dfb8a75228fc13e8a2f40b4ef3670998cd2a588cc7510105906b664adfefe0c3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.15-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 aa31cfa7d14b31bea60ce287aa528a4cf929519a3c7ad47e8896e21b25c49faa
MD5 b28edabf104993ca74ea1b549b2196b3
BLAKE2b-256 8f8b9dbeafc3a44df4211c92ba31e0404ba26799b027df8ff04c9ca05fff70d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.15-cp313-cp313-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 faf4dd6c3136f880eef0fe619206ef0b4c47256cfea29d785902443cd50d2de4
MD5 5fcb07191950ccec50e171f8ebdc8eda
BLAKE2b-256 e7df1b7ddf525c753becb02edc0df2f34ff09e29c5ddf0db5a0fc2e49a23ba13

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.15-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c1eb5885f89118dec2c9402ebf4a7dbd7d71e633c40d635c00c90d249c2ee646
MD5 7da051f20579a0b1be3c68388fb1145f
BLAKE2b-256 3b51a437abaa8111483a8a993b7fd0b5b4b8adb141414b05c46f4f75cd7f754c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.15-cp312-cp312-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 8e5a5582f4f63dcbe619462cb748686f038b58c4cb0ced1d57c58c409a7c9282
MD5 955ea801007fc9714d29275317dbd84b
BLAKE2b-256 689fd2cb66fe3b981712c2ee75fe382a4874b66f33e0415dc16e20690faffbe6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.15-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9cd825e27cdfc031b85fd03c0dcc9a032e004ab6e9f56f9d9c7c5c043f435049
MD5 0d8a5c73f871dee0389469635db3ebd4
BLAKE2b-256 1482b8cf04e463ecdb0f5b9e9683791639da377c3bb94ff2b126b148b35b9aaf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.15-cp311-cp311-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 82182149dd02eba367ac024c39db985708a1d50e1c781a4f7c6b845340f1793e
MD5 ecff7df3c3c4add2b088e0101bafc1f1
BLAKE2b-256 b6ebdf5cf02bb8af29fa32b65d988d480bc512c892d1d2550ee407dac22838f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.15-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bde716e389a3164c2ff3f896e973d809c3b34aec2e09a36621d805308b20b056
MD5 d21d958a7c4092f4c9ae01009a76eaf5
BLAKE2b-256 b92679f076fb2b7838d22b4fd55c38446be05fa41afc32bf8e474cffd7a38050

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.15-cp310-cp310-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 1cbdff87ddaafb4d7e251f224745672dbb169c6cdf0bece599b124c51528def4
MD5 2aa3584af322760c3a36982a8f93da5f
BLAKE2b-256 d8fe3a8ed627e20651407d779b3d417bc493d25af4f0658a236e4c60203992d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for csp5-0.2.15-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c42f01c9e9ed227d519114fb34f1264f6ae12271b3c07ec513970bea29d23653
MD5 907bf743da4969161829758c1494364b
BLAKE2b-256 ea12df3553463320d22aa50eeb6fab71237f5a786d59b133adc52b2e77dfd126

See more details on using hashes here.

File details

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

File metadata

  • Download URL: csp5-0.2.15-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.15-cp39-cp39-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 62ab1d9237425892f700e17b3c263ed1ad7e9573e8a124e7d21b3a27f3389910
MD5 46c8ef78432b6d42ba4d94bb7cefccb9
BLAKE2b-256 ee021193e8937f0710b5324d832a6e275cbddba520d2b0542fb32d72a8ee9e9d

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