Installation¶
nirs4all-formats is one Rust core with thin bindings. Pick the surface you need — they all decode through the same readers.
Version:
0.1.0-alpha.1. The project is in active alpha; APIs are stable in shape but may still change. Tagged releases publish Python wheels to PyPI and attach C ABI archives to the GitHub release (seeRELEASE.md).
Python¶
Requires Python 3.10+.
pip install nirs4all-formats
The wheel ships the native extension — no Rust toolchain needed. Optional projections pull their own dependencies via extras:
pip install "nirs4all-formats[numpy,pandas,sklearn,torch]"
to_polars() needs polars, to_xarray() needs xarray, and
to_spectrodataset() needs nirs4all; install those alongside as needed.
From source (for the latest main or local development):
pip install maturin
cd bindings/python && maturin develop --release
Rust¶
Add the facade crate to your Cargo.toml:
[dependencies]
nirs4all-formats = "0.1.0-alpha.1"
Default features bundle the HDF5, MATLAB and Parquet readers. Build a leaner
core, or target wasm32, by turning them off:
cargo build -p nirs4all-formats --no-default-features # core readers only
cargo build -p nirs4all-formats --no-default-features \
--features fmt-hdf5 # add one back
Feature |
Default |
Adds |
|---|---|---|
|
on |
HDF5, NetCDF, Allotrope ADF, FGI XML+HDF5 (pure-Rust HDF5 stack) |
|
on |
MATLAB v5 / v7.3 and prospectr RData (requires |
|
on |
Arrow / Parquet tables |
Command-line tool¶
The CLI binary is nirs4all-formats:
cargo install --path crates/nirs4all-formats-cli
# or, without installing:
cargo run -p nirs4all-formats-cli -- probe path/to/file
See the usage guide and CLI contract for commands.
R¶
The package is nirs4allformats. With a Rust toolchain present, R CMD INSTALL
builds the native extendr library; without one, it falls back to the
nirs4all-formats CLI transport.
R CMD INSTALL bindings/r/nirs4allformats
If you use the CLI fallback, point NIRS4ALL_FORMATS_CLI at a prebuilt binary, or
run from a source checkout where cargo run -p nirs4all-formats-cli is available.
WebAssembly / JavaScript¶
Built with wasm-pack. The WASM build compiles fmt-hdf5, fmt-matlab and
fmt-parquet on — the core uses a pure-Rust HDF5 stack and
browser-compatible compression, so every reader family is available in the
browser. Check features() at runtime to confirm.
# Browser (ES modules)
wasm-pack build bindings/wasm --target web --release
# Node.js / Bun
wasm-pack build bindings/wasm --target nodejs --release --out-dir pkg-node
This produces the nirs4all-formats-wasm package (JS glue + .wasm + TypeScript
typings) under bindings/wasm/pkg*.
C ABI¶
A small, additive C ABI for embedding or building further bindings:
cargo build -p nirs4all-formats-capi --release
build.rs regenerates crates/nirs4all-formats-capi/include/nirs4all_formats.h via
cbindgen. Tagged releases also ship per-OS archives bundling the static/shared
library, the header and the license. See the C ABI page.