All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
MultiVAE(losses=None)no longer raisesTypeError: argument of type 'NoneType' is not iterable.losses=None(the documented default, meaning MSE for all modalities) now works correctly in both the model wrapper (_multivae.py) and the torch module (_multivae_torch.py).MultiVAE.load_query_datano longer raisesAttributeErrorwhen the reference model was trained withintegrate_onbut without an nb/zinb loss (i.e.thetaisNone).StratifiedSampler(used whenintegrate_onis set) no longer silently produces zero training batches on small datasets. Training will now always produce at least one batch per group, and raises a clearValueErrorif the batch size is too large for the data.organize_multimodal_anndatasnow preserves.varmetadata from each modality. When the same column name appears in multiple modalities it is suffixed with the modality index (e.g.mean_0,mean_1). Fixes #4.- Defensive
.get("columns", [])in the continuous-covariate registry lookup prevents aKeyErrorwith certain scvi-tools versions. Fixes #45. - Removed deprecated
dtype=argument fromanndata.AnnData()call (anndata 0.12+).
- Requires Python ≥ 3.12 (aligned with scvi-tools 1.4.3 minimum).
- Bumped core dependencies:
scvi-tools>=1.4.3,anndata>=0.12; removednumpy<2andjax<0.6upper-bound pins. - Migrated developer tooling from hatch to native uv. Dependency groups (
dev,test,doc) are now declared via PEP 735[dependency-groups]inpyproject.toml. - CI rewritten to use
uv sync --group test+uv run pytestagainst Python 3.12 and 3.13. - ReadTheDocs build updated to use
uv sync --group doc+uv run sphinx-build. - How the masks for missing modalities are calculated: now assume that the modality is missing when all features are zero instead of the sum over all features being <= 0 previously (only makes a difference when the input can be negative, which doesn't happen with standard single-cell modalities)