New Features
-
LumpingKernelseed parameter (TASK-7.1):LumpingKernelnow accepts aseedargument (integer, passed tonumpy.random.default_rng) for reproducible stochastic runs. In YAML configs, setstochastic.seed: <int>. -
New quality metrics (TASK-5.5/5.6/4.5.1-4.5.3): Two new properties on
Lumping:Lumping.silhouette— sklearn silhouette scoreLumping.calinski_harabasz— sklearn Calinski-Harabasz index
Also adds a
--metricsCLI flag that prints all quality metrics askey=valuepairs. -
sourceconfig key is now optional: Thesourcefield in YAML configs no longer needs to be set. When present, it is resolved relative to the config file.
Bug Fixes
-
Stable sort in
LumpingKernel: Switched tokind='stable'argsort to eliminate non-determinism when states have equal similarity scores. This affected Python 3.13/3.14. -
Sankey diagram scaling: Gap and label threshold are now relative to dataset size.
-
Transition matrix heatmap: Removed spurious
%suffix from annotations. -
Plot font: All plots now use Latin Modern Roman (via
text.usetex=True) for consistent typography.
Potentially Breaking Changes
| Change | Impact |
|---|---|
| Stable-sort algorithm — For systems with tied similarity scores, the lumping tree will differ from v1.0.0 results. Saved Z matrices remain valid for loading, but recomputing from scratch may yield a different tree. | Medium |
source path resolution — Paths are now resolved relative to the config file, not the working directory. Users relying on CWD-relative source paths must update their configs. |
Low |
sklearn now required — silhouette_score and calinski_harabasz_score require scikit-learn. |
Low |
Internal / Non-Breaking
- Python 3.12/3.13/3.14 CI support;
prettypyplotadded as dependency. - All tests reclassified as CORE; stochastic tests now use seeded RNG and are fully deterministic.
- Tutorial notebook added (
docs/tutorial/). - Documentation expanded: quality metrics page, stochastic workflow guide, plot types reference, implied timescales math.