Skip to main content

Adaptive Operator-Mixture PLS and Ridge for near-infrared spectroscopy: companion code for the paper.

Project description

nirs4all-aom

Adaptive Operator-Mixture PLS and Ridge for near-infrared spectroscopy.

Companion code for the paper "Operator-adaptive PLS and Ridge calibration for NIR spectroscopy" (manuscript in paper/).

This repository ships three sklearn-compatible model families plus benchmark runners:

  • aom_nirs.pls — AOM-PLS, POP-PLS, AOM-PLS-DA, POP-PLS-DA. Operator-adaptive PLS that integrates strict-linear preprocessing operators (identity, Savitzky-Golay, finite difference, detrend, Norris-Williams, Whittaker, FCK) into the calibration via covariance / NIPALS / SIMPLS identities. Replaces external preprocessing grid-search.
  • aom_nirs.ridge — AOM-Ridge family (AOMRidgeRegressor, AOMRidgeBlender, AOMRidgeAutoSelector, AOMRidgeClassifier, plus AOMRidgePLS, AOMMultiKernelRidge, AOMMultiBranchMKL, AOMLocalRidge). Dual / kernel Ridge with operator-mixture preprocessing. The paper's best empirical result (median RMSEP ratio 0.918 vs Ridge-default on 32 NIRS datasets, Wilcoxon Holm-corrected $p = 2.6\times 10^{-4}$).
  • aom_nirs.fast — FastAOM chain-screening framework. Adjoint-only covariance screening with diversity-aware top-k, low-rank kernel evaluator, and four sklearn-style models (SingleChainPLSRidge, HardAOMChainPLSRidge, SoftAOMChainPLSRidge, SparseMultiKernelRidge).

Installation

pip install nirs4all-aom                # core
pip install "nirs4all-aom[torch]"        # GPU NIPALS / SIMPLS / superblock
pip install "nirs4all-aom[tabpfn]"       # TabPFN-residual experimental stacker
pip install "nirs4all-aom[bench]"        # benchmark runners and reporting tools

nirs4all-aom is pure Python; no compilation is required. The optional pybaselines dependency drives aom_nirs.pls.preprocessing.ASLSBaseline.

Quick start

from sklearn.cross_decomposition import PLSRegression
from sklearn.model_selection import KFold
from aom_nirs.pls import AOMPLSRegressor
from aom_nirs.ridge import AOMRidgeRegressor, AOMRidgeBlender

# AOM-PLS, paper "simple" preset
aom_pls = AOMPLSRegressor(bank="compact", criterion="cv", cv=5)
aom_pls.fit(X_train, y_train)
y_pred = aom_pls.predict(X_test)

# AOM-Ridge, paper "best" preset
aom_ridge = AOMRidgeBlender()        # convex non-negative blend of Ridge candidates
aom_ridge.fit(X_train, y_train)

A full reproduction of one smoke dataset for AOM-PLS, AOM-Ridge, and FastAOM is in examples/paper_smoke.py.

Relationship to other repos

  • nirs4all (GitHub) — NIRS instrumentation, acquisition, and provenance context for local benchmark inputs. The AOM methods, benchmark runners, result tables, and manuscript artifacts are distributed from this nirs4all-aom repository.
  • aompls (GitHub) — older multi-language prototype. Superseded by nirs4all-aom for the Python reference implementation used in the paper.

Paper

The manuscript and supplement live under paper/. The review dossier (paper/review/) contains the inventory, migration plan, cohort coverage audit, and per-variant score evidence used for the arXiv draft.

License

Dual-license: AGPL-3.0-or-later (default open-source) or commercial. See LICENSE.

Citation

@software{beurier_aom_nirs_2026,
  author = {Beurier, Gregory},
  title  = {nirs4all-aom: Adaptive Operator-Mixture PLS and Ridge for NIR spectroscopy},
  year   = {2026},
  url    = {https://github.com/GBeurier/nirs4all-aom},
  version = {0.1.0}
}

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

nirs4all_aom-0.1.1.tar.gz (258.3 kB view details)

Uploaded Source

Built Distribution

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

nirs4all_aom-0.1.1-py3-none-any.whl (206.5 kB view details)

Uploaded Python 3

File details

Details for the file nirs4all_aom-0.1.1.tar.gz.

File metadata

  • Download URL: nirs4all_aom-0.1.1.tar.gz
  • Upload date:
  • Size: 258.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nirs4all_aom-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7cad6d177091e13d56e9a9a5db2607a9a074ef3677153ea11248d34c6f3b4df6
MD5 8a13b7b1e788a08965615ea5ec150bb0
BLAKE2b-256 447cf9d374051da32ddb83dd0514e378b4a32eb05cac2a4491a23fe0d89717ea

See more details on using hashes here.

Provenance

The following attestation bundles were made for nirs4all_aom-0.1.1.tar.gz:

Publisher: publish-pypi.yml on GBeurier/nirs4all-aom

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

File details

Details for the file nirs4all_aom-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: nirs4all_aom-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 206.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for nirs4all_aom-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f5d889e217a51a82edf46caa524093bdfa623ab9ec1f0a0ffafc78c8f98e5cf3
MD5 cef3bde4ccde9f444f7f83425b4ec729
BLAKE2b-256 5aba2a250cfc250b1afbd0b8fc08ab5032fd8e1c20a7a056bd03945851e6b305

See more details on using hashes here.

Provenance

The following attestation bundles were made for nirs4all_aom-0.1.1-py3-none-any.whl:

Publisher: publish-pypi.yml on GBeurier/nirs4all-aom

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

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