Skip to main content
PyPI version CI status Coverage Conda version Documentation Status

Bayesian optimization of spectroscopic preprocessing pipelines for chemometric regression (NIR, MIR, Raman, and related modalities).

Overview

SpectoPrep searches over combinations of scatter correction, smoothing, baseline correction, scaling and related transforms. Each candidate pipeline is scored with group-aware cross-validation and fitted with OptimizedRidgeCV, which selects the ridge penalty by CV. The goal is a reproducible, leakage-aware alternative to hand-tuned preprocessing recipes.

Features

  • Bayesian pipeline search over structure and transform hyperparameters

  • Group-aware CV: group_kfold, group_shuffle_split, leave_p_group_out

  • RidgeCV downstream model (no manual ridge_alpha in the search space)

  • Broad preprocessing catalogue (MSC, EMSC, SNV, Savitzky–Golay, ALS, scalers, PCA, …)

  • Structured logging via structlog and a Typer CLI (spectoprep info)

  • Visualization helpers for spectra and optimization summaries

Installation

pip install spectoprep

Or:

conda install -c habeebest spectoprep

PyPI and the habeebest conda channel are both published automatically from tagged releases (see updated_package_deployment.md).

Requires Python 3.10+.

Quick start

import numpy as np
from spectoprep import PipelineOptimizer

rng = np.random.default_rng(0)
X_train = rng.normal(size=(80, 200))
y_train = rng.normal(size=80)
groups = np.arange(80)

optimizer = PipelineOptimizer(
    X_train=X_train,
    y_train=y_train,
    groups=groups,
    preprocessing_steps=["msc", "savgol", "detrend", "scaler", "snv"],
    cv_method="group_kfold",
    n_splits=5,
    max_pipeline_length=2,
    allowed_preprocess_combinations=[1, 2],
)

best_params, best_pipeline = optimizer.bayesian_optimize(
    init_points=25,
    n_iter=200,
)

summary = optimizer.summarize_optimization()
predictions, rmse, r2 = optimizer.get_best_pipeline_predictions(best_pipeline)

CLI

spectoprep version
spectoprep info

Selected preprocessing methods

  • msc / emsc: multiplicative (extended) scatter correction

  • snv / lsnv / rnv: (localized / robust) standard normal variate

  • savgol: Savitzky–Golay filtering / derivatives

  • detrend / als: linear detrend / asymmetric least squares baseline

  • scaler / robust_scaler / meancn: column scaling and mean centering

  • pca / select_k_best: dimensionality reduction and feature selection

Run spectoprep info for the full catalogue.

Documentation

Limitations

SpectoPrep currently supports regression only. Classification pipelines are out of scope.

Contributing

Contributions are welcome. See CONTRIBUTING.rst and open a pull request.

License

MIT — see LICENSE.

Citation

If you use SpectoPrep in research, please cite:

@article{babatunde2025automated,
  title={Automated Spectral Preprocessing via Bayesian Optimization for Chemometric Analysis of Milk Constituents},
  author={Babatunde, Habeeb Abolaji and McDougal, Owen M and Andersen, Timothy},
  journal={Foods},
  volume={14},
  number={17},
  pages={2996},
  year={2025},
  publisher={MDPI}
}

Download files

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

Source Distribution

spectoprep-1.0.4.tar.gz (217.6 kB view details)

Uploaded Source

Built Distribution

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

spectoprep-1.0.4-py3-none-any.whl (34.7 kB view details)

Uploaded Python 3

File details

Details for the file spectoprep-1.0.4.tar.gz.

File metadata

  • Download URL: spectoprep-1.0.4.tar.gz
  • Upload date:
  • Size: 217.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for spectoprep-1.0.4.tar.gz
Algorithm Hash digest
SHA256 970349fa658cfeb30508a70572c5701f134d53653e4a5e5da07512d262ab07b6
MD5 99b22faac450b5d84cf6264cd54d7e4b
BLAKE2b-256 24f67072dcefcebd0c303708e483f121bc456976de0574db4a0eef353d42411f

See more details on using hashes here.

Provenance

The following attestation bundles were made for spectoprep-1.0.4.tar.gz:

Publisher: release.yml on habeeb3579/Spectoprep

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file spectoprep-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: spectoprep-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 34.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for spectoprep-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4dc21750d5b20e88d6b0995703f92ac337847b15f04fc0afe49254e75fb0cdf9
MD5 f3296f847008c1e1cb40940366ea4e11
BLAKE2b-256 83930adb5c5b5943ab0aa4d571ecaf8feb79bb9ef71673efac3da77271ecfbfb

See more details on using hashes here.

Provenance

The following attestation bundles were made for spectoprep-1.0.4-py3-none-any.whl:

Publisher: release.yml on habeeb3579/Spectoprep

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.0.4 This release

2 files

1.0.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page