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 |
|---|---|---|
|
|
|
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).
| Backend | Parity | 50×250 (ms) | 250×50 (ms) |
|---|---|---|---|
| C++ native · libn4m | |||
pls4all.cpp.blas | ✓ ref | — | — |
pls4all.cpp.blas+omp | ✓ ref | 0.09 ms | 0.05 ms |
pls4all.cpp.omp | ✓ ref | — | — |
pls4all.cpp.ref | ✓ ref | 0.09 ms | 0.05 ms |
| Python · pls4all | |||
pls4all.python | ✓ bind | 0.04 ms🏆 | 0.04 ms🏆 |
pls4all.sklearn | ✓ bind | 0.05 ms | 0.05 ms |
| Python · external | |||
nirs4all | ⇄ +1e+00 | 1.15 ms | 3.87 ms |
ref.python_numpy | source | — | — |
See also: methods index · interactive dashboard