Metadata-Version: 2.4
Name: nirs4all-lite
Version: 0.1.0
Summary: Portable nirs4all aggregate binding over formats, IO, methods, dag-ml, and dag-ml-data (datasets optional)
Project-URL: Homepage, https://nirs4all.org
Project-URL: Repository, https://github.com/GBeurier/nirs4all-lite
Project-URL: Issues, https://github.com/GBeurier/nirs4all-lite/issues
Author: nirs4all contributors
License-Expression: MIT
License-File: LICENSE
Keywords: bindings,chemometrics,nirs,spectroscopy,wasm
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering
Requires-Python: >=3.11
Requires-Dist: pyyaml>=6
Provides-Extra: all
Requires-Dist: dag-ml-data>=0.1.0a0; extra == 'all'
Requires-Dist: dag-ml>=0.1.0a0; extra == 'all'
Requires-Dist: nirs4all-formats>=0.1.0; extra == 'all'
Requires-Dist: nirs4all-io>=0.1.0; extra == 'all'
Requires-Dist: nirs4all-methods>=0.98.0; extra == 'all'
Requires-Dist: scikit-learn>=1.3; extra == 'all'
Provides-Extra: dag-ml
Requires-Dist: dag-ml>=0.1.0a0; extra == 'dag-ml'
Provides-Extra: dag-ml-data
Requires-Dist: dag-ml-data>=0.1.0a0; extra == 'dag-ml-data'
Provides-Extra: datasets
Requires-Dist: nirs4all-datasets>=0.2.0a1; extra == 'datasets'
Provides-Extra: everything
Requires-Dist: dag-ml-data>=0.1.0a0; extra == 'everything'
Requires-Dist: dag-ml>=0.1.0a0; extra == 'everything'
Requires-Dist: nirs4all-datasets>=0.2.0a1; extra == 'everything'
Requires-Dist: nirs4all-formats>=0.1.0; extra == 'everything'
Requires-Dist: nirs4all-io>=0.1.0; extra == 'everything'
Requires-Dist: nirs4all-methods>=0.98.0; extra == 'everything'
Requires-Dist: scikit-learn>=1.3; extra == 'everything'
Provides-Extra: formats
Requires-Dist: nirs4all-formats>=0.1.0; extra == 'formats'
Provides-Extra: io
Requires-Dist: nirs4all-io>=0.1.0; extra == 'io'
Provides-Extra: methods
Requires-Dist: nirs4all-methods>=0.98.0; extra == 'methods'
Requires-Dist: scikit-learn>=1.3; extra == 'methods'
Description-Content-Type: text/markdown

# Python Binding

Distribution name: `nirs4all-lite`

Import name: `nirs4all_lite`

This binding intentionally avoids the `nirs4all` import name so it can be
installed next to the full Python `nirs4all` package during parity checks.

## Portable Execution

`nirs4all_lite.run_portable_pipeline(source, dataset)` executes the shared
portable JSON/YAML subset through the `nirs4all-methods` Python bindings:

- `KennardStoneSplitter`
- `StandardNormalVariate` / `SNV`
- `SavitzkyGolay`
- `sklearn.cross_decomposition.PLSRegression`
- `_range_` sweeps over `n_components`

Savitzky-Golay defaults to `mode="interp"` for full Python nirs4all parity and
preserves explicit methods-backed modes (`mirror`, `constant`, `nearest`,
`wrap`, `interp`) plus `cval`.

The aggregate does not implement numerical kernels. Install the optional
methods extra, or make `n4m` and `pls4all` importable, before calling it:

```bash
python -m pip install "nirs4all-lite[methods]"
```

The strict local parity gate compares all shared fixtures against the full
Python `nirs4all` oracle and reports max prediction/RMSE deltas on failure:

```bash
PYTHONPATH=bindings/python/src:/path/to/nirs4all-methods/bindings/python/src \
PLS4ALL_LIB_PATH=/path/to/libn4m.so \
NIRS4ALL_LITE_REQUIRE_METHODS_PARITY=1 \
python -m unittest bindings/python/tests/test_execution_parity.py -v
```
