Repository navigation
Releases: scverse/liana
Releases · scverse/liana
Release list
v2.1.0
Immutable
release. Only release title and notes can be modified.
Removed
- Breaking:
li.mt.lric(pair_chunk=...)is removed, after being deprecated and ignored in 2.0.0. - Breaking:
li.mt.lric(transform_fn=...)is removed. Its default, mean-normalising each gene to 1, was redundant: after introducing analytical normalisation for the area of interest, any per-gene rescaling cancels exactly in every LRIC ratio (g,g_expr). To weight by a nonlinear transform of expression, store it as a layer and pass it -- e.g.adata.layers["sqrt"] = np.sqrt(adata.X), thenli.mt.lric(..., layer="sqrt"). Unliketransform_fn, a layer goes through the non-negativity check.
Changed
- Permutation-based methods now reject
n_permsvalues that are0, negative or not integers with a clearValueError;Noneskips permutations. - The permutation statistics behind
cellphonedb,cellchat,geometric_meanandrank_aggregatep-values are gathered and reduced a block of permutations at a time instead of as one(2, n_perms, n_interactions)tensor, so their peak memory no longer scales withn_perms(#282, by @pwwang). P-values are bit-identical for a given seed. Peak RSS / wall time,cellphonedb, MacBook Pro M3, 24 GB: 462k interactions, 1000 permutations 14.7 GB / 27 s -> 1.6 GB / 9 s; 4.2M interactions, 300 permutations 15.2 GB (memory-bound) / 510 s -> 3.7 GB / 35 s. Up to ~15% slower when the whole tensor fits in memory. Internally, the pipeline now owns the permutation test: a permutation-based method only declares how it combines ligand and receptor statistics (MethodMeta(combine=...)), plus an optional observed-only adjustment (observed_fn=, CellPhoneDB's zero mask), instead of each method re-implementing proximity weighting and p-value counting.
Fixed
- Explicit zeros stored in a sparse
Xno longer count as expressing cells inligand_props/receptor_props(and thusexpr_prop).li.pp.zi_minmaxnow prunes its sub-cutoff zeros, so with it asx_transform/y_transformfar fewer interactions passexpr_prop. - MISTy raises if a view's
obs_namesdiffer from the intra-view's; views were paired by row position, so a reordered view gave silently wrong results. li.mt.lric/li.mt.cross_pcf: pairs exactly on a radius-tile edge (e.g. gridded spots withradius_stepequal to the spacing) no longer drift into the neighbouring tile; the number of annuli isfloor(max_radius / radius_step), so float steps no longer add a spurious annulus (e.g. 0.3 / 0.1) andmax_radius < radius_stepraises.li.mt.get_lric_aucnormalises by the radial width it actually integrates, so an empty interior bin no longer pulls the score toward 0.- Docs build with
sphinx-autodoc-typehints>=3.17(thealias_typehintsshim is removed); README and decision-tree links point toliana.readthedocs.io(#283). - The pyCrossTalkeR tutorial runs in CI again; the
tutorialsextra requirespycrosstalker>=2.1.8(#271).
v2.0.0
Immutable
release. Only release title and notes can be modified.
What's Changed
- API + Tutorial Re-org / scverse Move prep by @dbdimitrov in #254
- build: sync with cookiecutter-scverse template, adopt mypy by @Zethson in #255
- Bump the pre-commit group with 2 updates by @dependabot[bot] in #257
- Bump the actions-deps group with 4 updates by @dependabot[bot] in #256
- Fetch the datasets from exampledata.scverse.org by @Zethson in #262
- Remove bumpversion by @Zethson in #263
- Redesign the documentation by @Zethson in #264
- Run the tutorial notebooks in CI by @Zethson in #265
- Fix spatial weighting, compile the hot loops, tidy the API by @Zethson in #266
- Sort LRIC's edges by counting sort, drop two pieces of dead weight by @Zethson in #267
- Ban
pyplot.showin the library by @Zethson in #268 - Retrieve the downloaded resources with pooch by @Zethson in #269
- Skill; Standardize props; versioning by @dbdimitrov in #261
- V2.0.0 by @dbdimitrov in #273
New Contributors
- @Zethson made their first contribution in #255
- @dependabot[bot] made their first contribution in #257
Full Changelog: v1.10.0...V2.0.0
1.10.0
What's Changed
- LRIC analytical by @AtheerAS in #250
- API and Edge-case improvements by @dbdimitrov
Full Changelog: v1.9.0...v1.10.0
1.9.0
What's Changed
- v1.9.0 by @dbdimitrov in #251
- fix: drop MAML2-NOTCH entries from the consensus resource by @TemRevil in #247
- fix: raise a clear error when log2FC has no cells to compare against by @TemRevil in #248
New Contributors
Full Changelog: v1.8.1...v1.9.0
1.8.1
1.8.1 (15.07.2026)
Added
li.ut.expand_coordinates— utility that lays out the spatial coordinates of multiple samples side-by-side on a non-overlapping grid, enabling multi-sample spatial analyses (e.g. a jointspatial_neighborsgraph) without cross-sample coordinate overlap. Exposed inli.utand the API reference. (#238)- MOFA-Flex inflow tutorial (
inflow_mofaflex.ipynb) showing how to combine the inflow score with MOFA-Flex to extract spatially-resolved, single-cell-derived cell-cell communication programs.
Changed
- LRIC / cross-PCF memory & performance refactor (#245, by @AtheerAS).
li.mt.lricandli.mt.cross_pcfnow route preprocessing throughprep_check_adata, build per-annulus sparse scale matrices and multiply them against the weight matrices in chunked (pair_chunk) column slices — bounding peak memory to a few hundred MB on large datasets — and use SciPysparse_distance_matrix/searchsortedfor distance binning. This also fixes a.raw-subsetting bug in feature extraction, which slightly changes LRIC output values (test reference values updated accordingly). The LRIC tutorial was re-run to reflect the new numerics.
Fixed
MistyDatanow preserves more than.unsonMuDataround-trips (#242). Converting aMuDataback toMistyDatapreviously dropped.uns, breaking downstream plots such asli.pl.contributions; the conversion now carries overuns,obsm,varm,obspandvarp.rank_aggregate/by_sampledependency compatibility (#244). The AnnDatadtype=removal (AnnData ≥0.11) is handled in preprocessing. pandas 3.0 additionally breaks the consensus path — Copy-on-Write turns a chainedinplacefillna into a no-op, and string-typed columns coerce an internalNone-labelled score column to'nan'— sopandas<3is pinned until liana gains full pandas-3.0 support.
v1.8.0
What's Changed
- wPCF notebook & functions by @AtheerAS in #234
- Add LRIC & cross-PCF spatial methods + pyCrossTalkeR integration (1.8.0) by @dbdimitrov in #240
Full Changelog: 1.7.3...v1.8.0
1.7.3
v1.7.1
v1.7.0
What's Changed
- Address code review feedback: fix formatting, typos, and imports by @Copilot in #226
- v1.7.0 by @dbdimitrov in #225
- Feature/inflow score by @AtheerAS in #221
- Spatial weighting for sc liana methods by @dbdimitrov in #222
New Contributors
Full Changelog: 1.6.1...v1.7.0