Hi folks!
We are pleased to announce that Scikit-Longitudinal is now available as 0.1.9 π
PyPI: https://pypi.org/project/Scikit-longitudinal/0.1.9/
β In a nutshell, what's new in 0.1.9?
A brand-new algorithm β Time-Penalised Trees (TpT). Thanks to the long-awaited external contribution by @MathiasValla (#80, paired with scikit-lexicographical-trees#1), Sklong now ships TpTDecisionTreeClassifier: a depth-first, Gini-criterion tree-based learner aware of time-varying covariates, with its own Cython splitter aligned with the existing tree stack.
β Long β Wide on LongitudinalDataset. Long-to-wide and wide-to-long reshaping are now a class feature of LongitudinalDataset (#88, closing #64). This removes the temporary in-tree path that TpT was carrying, yet motivated this #88 very much to be honest, and comes with edge-case test coverage, andwith a full Long β Wide reshape tutorial walkthrough.
β Multi-class everywhere. 0.1.9 (well, since 0.1.8 strictly speaking) brings end-to-end multi-class support across the Sklong stack (#83, closing #75): Lexicographical Decision Tree / Random Forest / Deep Forest / Gradient Boosting classifiers, Nested Trees, and the SepWav voting and stacking meta-learners. Alongside this, we expose a true AUPRC metric with multi-class support in scikit_longitudinal.metrics, and a new Binary vs. Multiclass tutorial.
β Goodbye mkdocs-material, hello Zensical. The whole documentation stack has been migrated to Zensical: a new zensical.toml at the repo root (no more mkdocs.yml), reorganised guides and API reference, dedicated estimator reference pages for trees and ensembles, refreshed homepage interactions, refreshed branding/badges/banner assets, FAQ rewritten as collapsible guidance, Read the Docs config aligned with Zensical, and tutorials animated with Manim-rendered light/dark AVIFs (#89). Zensical was needed, it's a miles away improvement on Material for MKDocs in our humble opinions.
β Python 3.10 β 3.13. Since v0.1.0 we extended the supported Python range to 3.10β3.13 (#74, #76), with a dedicated 3.13 publish CI job. Python 3.13 was made possible thanks to deep_forest_py310#2, and Python 3.13 was suggested by @manuelmenendezgonzalez from @Fundacion-de-Neurociencias β thank you for that!
β Sample-weight & class-weight propagation. Sample weights now flow correctly through Sklong primitives, including SepWav and the CFS transform handler (#67, #68), and class_weight is propagated through estimators and SepWav meta-learners (#69, #70, #71).
β OSS hygiene. Refreshed MIT LICENSE, brand-new Code of Conduct, Contributing & Security policies (#79), and a switch from Markdown to YAML issue templates.
Note
β Open-Source Contribution, More Than Welcome! β
A massive thanks to @MathiasValla for landing TpT; after myself being quite long at reviewing it all! this is exactly the kind of external, literature-backed estimator that we want Sklong to attract more of. New primitives are very welcome from external contributors: please open an issue first to discuss, and we will help you wire it through the templates / discovery / docs.
β I guess it's now time for tech-ish changelog!
[v0.1.9] - 2026-04-22 - Time-Penalised Trees, Multi-class, Long β Wide, and the Zensical migration
Added
- TpT Decision Tree Classifier and supporting Cython splitter / depth-first builder β #80, thanks to @MathiasValla.
- Long β Wide reshape API on
LongitudinalDatasetβ #88, closing #64. - True multi-class AUPRC metric (
auprc_score) β #83. AggrFuncpipeline transform handler.- Multi-class support in: Lexico tree / forest / deep-forest / gradient-boosting classifiers, Nested Trees, SepWav voting & stacking β #83, closing #75.
- Sample-weight propagation through
Sklongprimitives, including SepWav and CFS transform handler β #67, #68. - Class-weight propagation through estimators and SepWav meta-learners β #69, #70, #71.
- Python 3.13 support, including a 3.13 publish CI workflow β #76.
- Python 3.10+ range officially supported, with optional Ray parallelisation module β #74.
- Open-source best practices: MIT LICENSE refresh, Code of Conduct, Contributing & Security policies β #79.
- New API reference landing pages and per-estimator reference pages for trees and ensembles β #87.
- New tutorials: Advanced temporal features-group setup (#82), Long β Wide reshape, Binary vs. Multiclass.
- Multi-language podcast player on the homepage and Atlas of Longitudinal Datasets in related projects.
- Manim-rendered light/dark AVIFs for tutorial animations β #89.
Enhanced
- Documentation: full migration to Zensical (
zensical.tomlreplacesmkdocs.yml), refreshed homepage / navbar / search bar / theme (#84), MathJax integration, refreshed README branding and visuals, refreshed community hub pages, getting-started flow rewritten for0.1.8+, FAQ rewritten as collapsible guidance, troubleshooting moved into developer docs (#78). - Templates: documented public
fit/predict/transformwrappers, clarified the_fit/_predict/_transformoverrides expected on subclasses. - Estimator and data-preparation docstrings tidied and unified across the codebase; CFS / CFS-per-group docstrings trimmed.
- Discovery: TpT estimators registered in the allow-lists.
- Build: pinned
setuptools<81, refresheduv.lock, removedpylintfrom dev tooling, switched issue templates from Markdown to YAML, inlined coverage config, dropped legacy mkdocs / RTD overrides, RTD custom-jobs install dependencies. - TpT: removed the temporary in-tree long-to-wide preprocessing path now that
LongitudinalDatasetowns it. - CI: added the Python 3.13 publish job; tests are still triggered via the
[cd tests]commit-message marker. - Upgraded Zensical to
0.0.33andscikit-lexicographical-treesto its latest fork release.
Resolved
- SepWav sample-weight not passing through wrapper decorators β #68.
- Pipelines now correctly support resampling transformers and SepWav handling.
- Multi-class regressions previously blocking #75.
- Docs: removed the
automax_featuresoption from the tuning tutorial, fixed broken hyperlinks, normalised the document-dates cache, fixed Read the Docs build Python version, MkDocStrings option-rule fixes prior to the Zensical migration.
Removed / Migrated
mkdocs.ymlandmkdocs-materialconfiguration (replaced byzensical.toml).experiments/folder (work now lives in dedicated branches for reproducibility).- Legacy Getting Started page and unused image assets.
β Versions folded into this release
These were published to PyPI between v0.1.0 and 0.1.9 without a GitHub release of their own. We are summarising them here for completeness:
| Version | Theme | Key PRs |
|---|---|---|
0.1.1 |
Sample-weight support | #67 |
0.1.2 |
Sample-weight pass-through fix | #68 |
0.1.3 |
class_weight propagation |
#69 |
0.1.4 |
SepWav class_weight propagation |
#70 |
0.1.5 |
SepWav meta-learner class_weight propagation |
#71 |
0.1.6 |
Python 3.10+ support, optional Ray module | #74 |
0.1.7 |
Python 3.13 support | #76 |
0.1.8 |
Multi-class everywhere, new tutorials, new homepage UI / navbar / search bar, MathJax | #82, #83, #84 |
0.1.9 |
TpT, Long β Wide, Zensical migration, refreshed API reference, animated tutorials | #80, #87, #88, #89 |
Cheers! π