Skip to main content

Slim PLS-focused Python binding for the libn4m C ABI from nirs4all-methods.

Project description

pls4all

pls4all is the slim, PLS-only subset of nirs4all-methods — a thin Python binding over the portable libn4m C ABI (a C++17 PLS / NIRS engine). The wheel bundles the libn4m shared library, so pip install pls4all is self-contained; no separate native build is required. For the full method surface (preprocessing, selectors, diagnostics, augmenters, …) install the nirs4all-methods package instead and import it as n4m — both load the same libn4m.

The binding loads libn4m with ctypes.CDLL (so the GIL is released during native calls) and exposes:

  • version() / abi_version() introspection,
  • a Pythonic Context and Config (RAII lifecycle wrappers),
  • the PLS fit/predict surface and a scikit-learn-compatible pls4all.sklearn.PLSRegression (and the other PLS-family estimators),
  • a typed Pls4allError raised on any non-OK status, carrying the context's last_error message.

Quick start

import numpy as np
import pls4all
from pls4all.sklearn import PLSRegression

print(pls4all.version())      # e.g. "1.0.3+abi.2.0.0"
print(pls4all.abi_version())  # (2, 0, 0)

rng = np.random.default_rng(0)
X = rng.standard_normal((40, 12))
y = X @ rng.standard_normal(12)

model = PLSRegression(n_components=5).fit(X, y)
print(model.predict(X).shape)  # (40,)

Low-level lifecycle, if you need it:

with pls4all.Context() as ctx, pls4all.Config() as cfg:
    cfg.algorithm = pls4all.Algorithm.PLS_REGRESSION
    cfg.solver = pls4all.Solver.SIMPLS
    cfg.n_components = 5
    # ... drive a fit through the C ABI ...

scikit-learn is an optional dependency (only pls4all.sklearn needs it); the core import pls4all works with NumPy alone.

Loading libn4m

The bundled wheel ships libn4m inside pls4all/lib/, found automatically. For development against a local build the loader searches, in order:

  1. $PLS4ALL_LIB_PATH — explicit path to libn4m for this package,
  2. $N4M_LIB_PATH — shared libn4m override honoured by both pls4all and n4m,
  3. pls4all/lib/libn4m* next to the installed package (wheel layout),
  4. <repo-root>/build/dev-release/cpp/src/libn4m* (developer convenience),
  5. the standard system search path (LD_LIBRARY_PATH, macOS rpath, Windows PATH).

Building libn4m from source (developers)

cmake --preset dev-release
cmake --build --preset dev-release --parallel

This produces build/dev-release/cpp/src/libn4m.so (.dylib / .dll on macOS / Windows), which the loader rules above pick up.

See https://github.com/GBeurier/nirs4all-methods for the full project.

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

pls4all-1.0.6.tar.gz (131.4 kB view details)

Uploaded Source

Built Distributions

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

pls4all-1.0.6-py3-none-win_amd64.whl (1.3 MB view details)

Uploaded Python 3Windows x86-64

pls4all-1.0.6-py3-none-musllinux_1_2_x86_64.whl (4.7 MB view details)

Uploaded Python 3musllinux: musl 1.2+ x86-64

pls4all-1.0.6-py3-none-musllinux_1_2_aarch64.whl (4.1 MB view details)

Uploaded Python 3musllinux: musl 1.2+ ARM64

pls4all-1.0.6-py3-none-manylinux_2_28_x86_64.whl (4.7 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ x86-64

pls4all-1.0.6-py3-none-manylinux_2_28_aarch64.whl (3.6 MB view details)

Uploaded Python 3manylinux: glibc 2.28+ ARM64

pls4all-1.0.6-py3-none-macosx_11_0_universal2.whl (7.2 MB view details)

Uploaded Python 3macOS 11.0+ universal2 (ARM64, x86-64)

File details

Details for the file pls4all-1.0.6.tar.gz.

File metadata

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

File hashes

Hashes for pls4all-1.0.6.tar.gz
Algorithm Hash digest
SHA256 bbf80a2d574965c9928d0904fc86d8450ecf4d36fb5e1ce5b6b5d529723eacb8
MD5 f2e1eaa76f7b0333bd8322555c28959e
BLAKE2b-256 ba2bb4556fb74fd898cc8337567575c279ee49f867e5a4bff25ee3e820385582

See more details on using hashes here.

Provenance

The following attestation bundles were made for pls4all-1.0.6.tar.gz:

Publisher: release-python.yml on GBeurier/nirs4all-methods

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

File details

Details for the file pls4all-1.0.6-py3-none-win_amd64.whl.

File metadata

  • Download URL: pls4all-1.0.6-py3-none-win_amd64.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for pls4all-1.0.6-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 76a5b4c5f7327d8a42d99267df2065080eb7167746d58a3617562b2b0ff53c4f
MD5 7f6e67ab10f6add80a7395752a9100ae
BLAKE2b-256 0c53da9560e1a80d2e2a04fe3cb62285db703b9dba1226544aa1cb2d37ab9ca3

See more details on using hashes here.

Provenance

The following attestation bundles were made for pls4all-1.0.6-py3-none-win_amd64.whl:

Publisher: release-python.yml on GBeurier/nirs4all-methods

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

File details

Details for the file pls4all-1.0.6-py3-none-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pls4all-1.0.6-py3-none-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 25870af732b1ceccedf615a0ab452c8e7de39a2b6b8b87f92434098acb06e17d
MD5 3860143856d58e7c5cc5f3ea03266dcd
BLAKE2b-256 4c45e95d22c7953021eb1942832d89ee9b4c56f61ef608c0b0a7b40f1fd375f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pls4all-1.0.6-py3-none-musllinux_1_2_x86_64.whl:

Publisher: release-python.yml on GBeurier/nirs4all-methods

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

File details

Details for the file pls4all-1.0.6-py3-none-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pls4all-1.0.6-py3-none-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 162281762fef3868d8474868ec452b99322550a6530c90a8170782a1b6f39afd
MD5 e149688a431c1a65e229827fe17f29f8
BLAKE2b-256 8da47904440686b4b772410670de7842cd73408d30ec5803d0b52ce36306cd99

See more details on using hashes here.

Provenance

The following attestation bundles were made for pls4all-1.0.6-py3-none-musllinux_1_2_aarch64.whl:

Publisher: release-python.yml on GBeurier/nirs4all-methods

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

File details

Details for the file pls4all-1.0.6-py3-none-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for pls4all-1.0.6-py3-none-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 476b733515fc7671c537b0dd1efa5bebb0e607103475ac462a2969e6fd496e9f
MD5 338fb6308cb9becc844698ef929e6337
BLAKE2b-256 cd78fb6b5656c510a01405519138bb0923cbc87b2626265e820951ef631e7f94

See more details on using hashes here.

Provenance

The following attestation bundles were made for pls4all-1.0.6-py3-none-manylinux_2_28_x86_64.whl:

Publisher: release-python.yml on GBeurier/nirs4all-methods

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

File details

Details for the file pls4all-1.0.6-py3-none-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pls4all-1.0.6-py3-none-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2f5b004f60134da0c2bd6c0a003beff1d856721f779377f48973a93c5c1de85e
MD5 8e76477cc73fc383a3470ea2989bdab7
BLAKE2b-256 d439e220e51421bb20ff9f2949582272ab022107bc22a285f33335aa98d997ad

See more details on using hashes here.

Provenance

The following attestation bundles were made for pls4all-1.0.6-py3-none-manylinux_2_28_aarch64.whl:

Publisher: release-python.yml on GBeurier/nirs4all-methods

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

File details

Details for the file pls4all-1.0.6-py3-none-macosx_11_0_universal2.whl.

File metadata

File hashes

Hashes for pls4all-1.0.6-py3-none-macosx_11_0_universal2.whl
Algorithm Hash digest
SHA256 998563a673e80b3c776a062e288e052968470927459bd9a0f8caea7ae8f55862
MD5 b3d4e599fbd75678f222b37b4a82161a
BLAKE2b-256 483ebf194b430033a85510fdb8825f60c15836d1223fd491a08aa93442c83857

See more details on using hashes here.

Provenance

The following attestation bundles were made for pls4all-1.0.6-py3-none-macosx_11_0_universal2.whl:

Publisher: release-python.yml on GBeurier/nirs4all-methods

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