omicverse 2.4.0 — https://pypi.org/project/omicverse/2.4.0/ · pip install -U omicverse
42 commits since 2.3.2 — a multithreaded C++ backend becomes the default, plus new single-cell, spatial, bulk and imaging features and a round of performance work.
Multithreaded C++ backend (backend='cpp', default)
backend=/ov.settings.backendonqc,normalize_total,highly_variable_genes,preprocess,scale,pca,neighbors,umap,leiden,cosg,find_markers, powered by anndataoom-fast;backend='python'keeps the previous code; results independent of the thread count (#1022)- In memory and out of core: SEA-AD MTG (1.38M cells, 32 threads) standard workflow in 1.5 min with 13 GB peak memory
- Leiden — brisc-style C++ Leiden by default under
cpp(flavor='leidenalg_exact'for an exact leidenalg port); resolution lists in every mode (#1022, #1027) - UMAP — deterministic multithreaded layout; new
ov.pp.localmap/ov.pp.pacmap find_markers(method='cosg')streams from disk for AnnDataOOM (142 s / 105 GB → 2.1 s / 2.1 GB)
GPU mode
- Works with rapids-singlecell 0.11–0.18;
neighbors(method=...)no longer passed as the kNN algorithm (#1028)
Performance
- pseudobulk up to 8.6x (#1026); AUCell 2.4x (#1025);
co_occurrencememory 622 MB → 3.4 MB (#1024); scTenifoldKnk 24% (#1023)
Features
- Single-cell: CellChat in PyTorch (
run_cellchat); unifiedrun_ccc(7 methods); dynamo perturbation backend; Scissor - Spatial: pluggable segmentation backends + seam-free tiling (#1001);
match_cells/register_images(#999); marker-panel annotation (#1004) - Bulk & other: spike-in quantitative ChIP (#1021);
multisite_harmonize(#1003); tumour/normal SNP-panel QC (#1020); pharmacophore-constrained docking (#1018);fit_choice_model(#1006); electrophysiology QC/ERP (#1002); radial cell annotation tree (#1019); ambientmethod='envelope'(#996) - pyedger from PyPI instead of a vendored copy (#986)
Fixes
- ARPACK int32 overflow in UMAP spectral init at ~1.66M–2M cells (#990); TMM before voom in limma paths (#995); PCA no longer fits twice
Full notes: https://github.com/omicverse/omicverse-tutorials/blob/main/docs/Release_notes.md