pp_emsc — Extended Multiplicative Scatter Correction (EMSC)

Group: Preprocessing · Binding: n4m.sklearn.EMSC · C ABI: n4m_pp_emsc_*

Description

Extended Multiplicative Scatter Correction (polynomial).

Parameters

Name

Type

Default

degree

int

2

Explanations

Bibliographic source

Martens, H. & Stark, E. (1991). Extended multiplicative signal correction and spectral interference subtraction. Journal of Pharmaceutical and Biomedical Analysis 9(8), 625–635.

Mathematical principle

EMSC augments the MSC regression basis with polynomial wavelength terms (and optionally known interferent spectra), so the model \(\mathbf{x}_i = a_i + b_i\bar{\mathbf{x}} + d_i\boldsymbol{\lambda} + e_i\boldsymbol{\lambda}^2 + \dots\) separates chemical signal from smooth physical baselines more flexibly than plain MSC.

Implementation

C ABI n4m_pp_emsc_* in libn4m (create / apply / destroy lifecycle), wrapped by n4m.sklearn.EMSC. The same numerical kernel backs every language binding.

Usage

from n4m.sklearn import EMSC
op = EMSC()
X_transformed = op.fit_transform(X)

Benchmarks

Adaptive wall-clock per cell measured against full_matrix.csv. Only backends that implement this method are listed; libraries without the method are omitted.

Verdict  ·  ✓ ref / ≈ ref / ~ shape mark a reference-gate pass at strict / relaxed / qualitative tolerance  ·  ✓ bind = pls4all binding agrees with the C++ baseline  ·  ⇄ cross-check = documented by-design selector/RNG/model, noncanonical API/facade convention, or secondary oracle  ·  ✗ divergent  ·  ⚠ error  ·  — not run. The fastest backend per column is marked 🏆.

Reference gate: strict — numeric equivalence (rmse_rel_tol 1e-12).

BackendParity50×250 (ms)250×50 (ms)
C++ native · libn4m
pls4all.cpp.blas✓ ref
pls4all.cpp.blas+omp✓ ref0.09 ms0.05 ms
pls4all.cpp.omp✓ ref
pls4all.cpp.ref✓ ref0.09 ms0.05 ms
Python · pls4all
pls4all.python✓ bind0.04 ms🏆0.04 ms🏆
pls4all.sklearn✓ bind0.05 ms0.05 ms
Python · external
nirs4all⇄ +1e+001.15 ms3.87 ms
ref.python_numpysource

See also: methods index · interactive dashboard