Skip to content

Releases: scverse/liana

v2.1.0

Choose a tag to compare

@dbdimitrov dbdimitrov released this 31 Oct 13:23
Immutable release. Only release title and notes can be modified.
3140d5c

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), then li.mt.lric(..., layer="sqrt"). Unlike transform_fn, a layer goes through the non-negativity check.

Changed

  • Permutation-based methods now reject n_perms values that are 0, negative or not integers with a clear ValueError; None skips permutations.
  • The permutation statistics behind cellphonedb, cellchat, geometric_mean and rank_aggregate p-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 with n_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 X no longer count as expressing cells in ligand_props/receptor_props (and thus expr_prop). li.pp.zi_minmax now prunes its sub-cutoff zeros, so with it as x_transform/y_transform far fewer interactions pass expr_prop.
  • MISTy raises if a view's obs_names differ 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 with radius_step equal to the spacing) no longer drift into the neighbouring tile; the number of annuli is floor(max_radius / radius_step), so float steps no longer add a spurious annulus (e.g. 0.3 / 0.1) and max_radius < radius_step raises.
  • li.mt.get_lric_auc normalises 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 (the alias_typehints shim is removed); README and decision-tree links point to liana.readthedocs.io (#283).
  • The pyCrossTalkeR tutorial runs in CI again; the tutorials extra requires pycrosstalker>=2.1.8 (#271).

v2.0.0

Choose a tag to compare

@dbdimitrov dbdimitrov released this 13 Sep 06:56
Immutable release. Only release title and notes can be modified.
c59472c

What's Changed

New Contributors

Full Changelog: v1.10.0...V2.0.0

1.10.0

Choose a tag to compare

@dbdimitrov dbdimitrov released this 27 Aug 09:23
f45f7ef

What's Changed

Full Changelog: v1.9.0...v1.10.0

1.9.0

Choose a tag to compare

@dbdimitrov dbdimitrov released this 20 Aug 07:42
3f7b4d9

What's Changed

New Contributors

Full Changelog: v1.8.1...v1.9.0

1.8.1

Choose a tag to compare

@dbdimitrov dbdimitrov released this 16 Jul 13:45

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 joint spatial_neighbors graph) without cross-sample coordinate overlap. Exposed in li.ut and 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.lric and li.mt.cross_pcf now route preprocessing through prep_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 SciPy sparse_distance_matrix / searchsorted for 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

  • MistyData now preserves more than .uns on MuData round-trips (#242). Converting a MuData back to MistyData previously dropped .uns, breaking downstream plots such as li.pl.contributions; the conversion now carries over uns, obsm, varm, obsp and varp.
  • rank_aggregate / by_sample dependency compatibility (#244). The AnnData dtype= removal (AnnData ≥0.11) is handled in preprocessing. pandas 3.0 additionally breaks the consensus path — Copy-on-Write turns a chained inplace fillna into a no-op, and string-typed columns coerce an internal None-labelled score column to 'nan' — so pandas<3 is pinned until liana gains full pandas-3.0 support.

v1.8.0

Choose a tag to compare

@dbdimitrov dbdimitrov released this 29 Jun 12:43

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

Choose a tag to compare

@dbdimitrov dbdimitrov released this 26 May 16:53

See CHANGELOG.md

v1.7.1

Choose a tag to compare

@dbdimitrov dbdimitrov released this 24 Jan 11:36

What's Changed

Full Changelog: v1.7.0...1.7.1

v1.7.0

Choose a tag to compare

@dbdimitrov dbdimitrov released this 11 Jan 09:39

What's Changed

New Contributors

  • @Copilot made their first contribution in #226
  • @AtheerAS made their first contribution in #221

Full Changelog: 1.6.1...v1.7.0

metalinksdb-v1.0

Choose a tag to compare

@dbdimitrov dbdimitrov released this 24 Jan 10:40
simplify