Release notes:
What's new in v3.0.0
This is a ground-up rewrite focused on simplicity, correctness, and
long-term maintainability.
API changes (breaking)
- Unified sklearn-style interface across all model families —
fit(),transform(),fit_transform(),score(),get_params(),
set_params()work consistently everywhere model.weightsreplaces the old per-model attribute namesJointData(n_views=...).sample()replaces the old data-generation API- Deep models no longer ship built-in encoder architectures — pass your
ownnn.Moduleencoders; this removes the hidden coupling to specific
network shapes - Probabilistic CCA results are now in
model.posterior_samples_
New / improved models
- Gradient linear models:
PLS_EY,CCA_EY,MCCA_EY— Riemannian
gradient descent on the Stiefel manifold with polar retraction - Full multiview support throughout: MCCA, GCCA, TCCA, KGCCA, KTCCA,
DCCA variants, DTCCA
Quality
- Fully typed codebase — passes
mypy --strictwith zero errors - Passes
ruff checkandruff formatwith zero errors - Test suite with correctness/optimality checks (not just "code runs"):
- CCA finds >0.95 correlation on correlated data; perfect on identical views
- MCCA(2 views) == CCA; rCCA(c=0) == CCA; KCCA(linear, c→0) ≈ CCA
- Canonical variates are orthogonal across dimensions
- Gradient methods converge within atol=0.05 of exact eigendecomposition
Documentation
- New MkDocs + Material theme site at
https://jameschapman19.github.io/cca_zoo/ - API reference auto-generated from docstrings
- Five clean example scripts covering all model families
Removed
- Built-in deep encoder architectures (
architectures.py) - Old Sphinx documentation