Repository navigation
Releases
v0.10.0
This version introduces row normalization for dense and sparse matrices, along
with ordered normalization recipes. To support both axes consistently, I have
reworked the API and taken the opportunity to simplify how matrices store and
expose fitted parameters. This brings several breaking changes to the Rust API:
Normalization,NormalizationParams, andNormalizationStatsare renamed
ColumnNormalization,ColumnNormalizationParams, and
ColumnNormalizationStats. The nameNormalizationParamsnow denotes a trait
shared by fitted column, row, and chain parameters.LazyMatrix<M, F>andEagerMatrix<M, F>now take a fitted parameter type as
their second generic argument. For example, use
LazyMatrix<M, ColumnNormalizationParams<F>>for column normalization or
LazyMatrix<M, RowNormalizationParams<F>>for row normalization.LazyMatrix::from_normalization(data, params)becomes
LazyMatrix::from_parts(data, params). The old
from_parts(data, centers, scales)becomesfrom_column_parts(...), with
from_row_parts(...)available for rows. Thewith_centersandwith_scales
shortcuts are removed.- Both matrix wrappers expose fitted centers and scales through
normalization().centers()andnormalization().scales()instead of
matrix-level accessors. - Both wrappers now return
(data, params)frominto_parts()instead of
(data, centers, scales). - Column and row parameter
into_parts()methods now return
(dimension, centers, scales), preserving the dimension even when both
vectors are absent. Submatrix<'a, O>now borrows a logical parent operator instead of storing
column normalization separately. Read the parent throughas_inner()and
selection bounds throughrow_range()andcolumn_range(). The submatrix's
centers()andscales()accessors are removed; inspect the parent's
normalization()instead.ColumnNormalizationandRowNormalizationare non-exhaustive. Construct
custom recipes withnew(center, scale)instead of struct literals.- Chain fitting now uses public recipe and fitted-parameter bounds, with
fit::<M, P>()andfit_apply::<M, P>()replacing scalar generic arguments.
Normalization recipes can now fit parameters separately with .fit() or fit and
wrap data with .fit_apply(). Fitted parameters can own their vectors or share
them through .view(), so training and validation operators can reuse column
normalization without copying parameters or refitting.
Recipes also compose with .then(), with each stage fitting the output of its
predecessors. For new samples, .for_new_samples() reuses training column
parameters and refits row stages, while .apply_frozen() reapplies all fitted
stages unchanged. Chains containing row stages currently require dense storage.
Breaking changes
- stabilize normalization and submatrix APIs (
d4a63cd) - support sparse row normalization (
8965030) - simplify normalization constructors (
6e72816) - unify normalization operators (
5d12a79) - name column normalization types explicitly (
0fc8486)
Features
- stream row normalization over Zarr chunks (
18b8ba4) - stabilize normalization and submatrix APIs (
d4a63cd) - add optional BLAS support for
ndarray(64133ec) - support sparse row normalization (
8965030) - compose ordered normalization recipes (
ac6d718) - add owned and borrowed parameter application (
c58d6c1) - expose normalization recipe fitting (
e8c71f8) - add dense row normalization (
6bd0e0d) - python: expose normalization methods and parameters (
c416f6d) - add raw indexed row selections (
7d406a2) - support borrowed faer CSC views (
ae3a867)
Bug Fixes
Performance Improvements
python-v0.3.0
v0.9.0
Breaking changes
- support sample standard deviation (
1398bf4)
Features
- add native PyTorch normalization layer (
b1cff22) - add borrowed transpose operator views (
3655898) - support sample standard deviation (
1398bf4) - add named normalization presets (
98826eb) - add median and quantile-range normalization (
d862c8a) - add Zarr and weighted submatrix operations (
646bed8) - add batched matrix products (
82ea2b5) - add borrowed contiguous submatrices (
0f34c0e)
Performance Improvements
python-v0.2.0
v0.8.1
v0.8.0
python-v0.1.1
Dependencies
- updated lazymatrix to v0.8.1
python-v0.1.0
Features
- add Python bindings and coordinated releases (
4e44fa2)
Dependencies
- updated lazymatrix to v0.8.0
Python package releases are versioned independently of the Rust crate.