Skip to content

Commit 180c6d2

Browse files
authored
v1.7.0
v1.7.0
2 parents ea90b75 + 59a3546 commit 180c6d2

35 files changed

+4138
-203
lines changed

.bumpversion.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[bumpversion]
2-
current_version = 1.6.1
2+
current_version = 1.7.0
33
commit = True
44
tag = True
55

CHANGELOG.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,18 @@
11
# Changelog
22

3+
## 1.7.0 (07.01.2026)
4+
5+
- Inflow implementation and tutorial #221 by @AtheerAS
6+
- Global specificity calculation #221 by @AtheerAS
7+
- The integration of spatial proximity weighting into scoring and permutation-based p-value calculations, new user-facing parameters for spatial analysis, and enhancements to the documentation to reflect these features. #222. The main cell-cell communication pipeline (`liana_pipe`) and scoring methods now support spatial proximity weighting. This includes new arguments (`spatial_key`, `spatial_kwargs`) and logic to compute and merge spatial proximity scores into LR (ligand-receptor) results, and to adjust permutation-based p-value calculations accordingly. (`src/liana/method/sc/_liana_pipe.py`)
8+
- Expanded docstrings and parameter documentation to cover new spatial analysis arguments, including detailed descriptions of spatial proximity options and kernel/bandwidth settings.
9+
- Updated the notebook index and documentation to reference new spatial analysis notebooks, such as `inflow_score.ipynb`.
10+
- Bumped the package version to 1.7.0 across configuration files, and updated dependencies for `decoupler`.
11+
- Added Python 3.13 support in classifiers. #216
12+
- Added Installation instructions in `installation.md`. #217
13+
- Properly check if a passed (cell type) labels in plotting are a string #220
14+
- Fixed an issue where MetalinksDB download would fail due to User-Agent restrictions.
15+
316
## 1.6.1 (28.09.2025)
417

518
- Comply with AnnData CSR matrix changes

docs/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
:hidden: true
77
:maxdepth: 2
88
9+
installation.md
910
api.md
1011
changelog.md
1112
contributing.md

docs/installation.md

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Installation
2+
3+
## Basic Installation
4+
5+
Install LIANA using pip:
6+
7+
```bash
8+
pip install liana
9+
```
10+
11+
## Conda Installation
12+
13+
```bash
14+
conda install bioconda::liana
15+
```
16+
17+
## Installation with Extras
18+
19+
LIANA offers optional dependencies for extended functionality:
20+
21+
### All Extras
22+
23+
Install all optional dependencies:
24+
25+
```bash
26+
pip install 'liana[extras]'
27+
```
28+
29+
This includes additional packages for:
30+
- Multi-view analysis (decoupler, muon, mofax, mofapy2)
31+
- Database access (omnipath)
32+
- Differential expression (pydeseq2)
33+
- Pathway analysis (gseapy)
34+
- Optimization (corneto, cvxpy-base, PySCIPOpt)
35+
- And more (cell2cell, kneed)
36+
37+
### Development Installation From Source
38+
39+
```bash
40+
git clone https://github.com/saezlab/liana-py.git
41+
cd liana-py
42+
pip install -e '.[dev]'
43+
```
44+
45+
## Requirements
46+
47+
- Python 3.10 or higher (up to 3.13)
48+
- Core dependencies: anndata, mudata, scanpy, numba, pandas, and others are installed automatically

docs/notebooks/basic_usage.ipynb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -494,6 +494,7 @@
494494
},
495495
{
496496
"cell_type": "markdown",
497+
"id": "804d2c01",
497498
"metadata": {},
498499
"source": [
499500
"## By default, LIANA+ uses **human gene symbols**. See the documentation and the [Prior Knowledge vignette](https://liana-py.readthedocs.io/en/latest/notebooks/prior_knowledge.html) for details and instructions for homology conversion.\n"
@@ -1737,7 +1738,7 @@
17371738
],
17381739
"metadata": {
17391740
"kernelspec": {
1740-
"display_name": "liana311",
1741+
"display_name": "liana_squidpy",
17411742
"language": "python",
17421743
"name": "python3"
17431744
},
@@ -1751,7 +1752,7 @@
17511752
"name": "python",
17521753
"nbconvert_exporter": "python",
17531754
"pygments_lexer": "ipython3",
1754-
"version": "3.11.13"
1755+
"version": "3.10.15"
17551756
}
17561757
},
17571758
"nbformat": 4,

docs/notebooks/index.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,5 @@ targeted.ipynb
1313
liana_c2c.ipynb
1414
mofacellular.ipynb
1515
mofatalk.ipynb
16+
inflow_score.ipynb
1617
```

docs/notebooks/inflow_score.ipynb

Lines changed: 2213 additions & 0 deletions
Large diffs are not rendered by default.

pyproject.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ requires = [ "hatchling" ]
44

55
[project]
66
name = "liana"
7-
version = "1.6.1"
7+
version = "1.7.0"
88
description = "LIANA+: a one-stop-shop framework for cell-cell communication"
99
readme = "README.md"
1010
license = { file = "LICENSE" }
@@ -22,14 +22,14 @@ authors = [
2222
{ name = "Jovan Tanevski"},
2323
{ name = "Ricardo Omar Ramirez Flores"},
2424
{ name = "Julio Saez-Rodriguez"},
25-
2625
]
2726
requires-python = ">=3.10,<3.14"
2827
classifiers = [
2928
"Programming Language :: Python :: 3 :: Only",
3029
"Programming Language :: Python :: 3.10",
3130
"Programming Language :: Python :: 3.11",
3231
"Programming Language :: Python :: 3.12",
32+
"Programming Language :: Python :: 3.13",
3333
]
3434
dependencies = [
3535
"anndata>=0.7.4",
@@ -52,7 +52,7 @@ optional-dependencies.dev = [
5252
]
5353

5454
optional-dependencies.extras = [
55-
"decoupler>=1.6.1",
55+
"decoupler>=2.0.0",
5656
"omnipath>=1.0.6",
5757
"pydeseq2>=0.3.5",
5858
"cell2cell",

src/liana/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
__version__ = '1.6.1'
1+
__version__ = '1.7.0'
22

33
from liana import method as mt, plotting as pl, resource as rs, multi as mu, utils as ut, testing
44

src/liana/_docs.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,32 @@
202202
mask_negatives
203203
Whether to mask negative-negative (low-low) or uncategorized interactions."""
204204

205+
_spatial_kwargs = """
206+
spatial_kwargs
207+
Keyword arguments passed to `liana.utils.spatial_pair_proximity()` for computing
208+
spatial proximity weights. Default is None, which uses default values
209+
(bandwidth=250, kernel='gaussian', trim_fraction=0.1)."""
210+
211+
_kernel = """
212+
kernel
213+
Kernel function used to generate connectivity/proximity weights.
214+
It controls the shape of the connectivity weights.
215+
The following options are available: ['gaussian', 'exponential', 'linear', 'misty_rbf']."""
216+
217+
_coordinates = """
218+
coordinates
219+
Spatial coordinates (e.g., in µm) with shape (n_cells, n_dimensions)."""
220+
221+
_bandwidth = """
222+
bandwidth
223+
Denotes signaling length and controls the maximum distance at which two spots/cells are considered.
224+
Corresponds to the units in which spatial coordinates are expressed."""
225+
226+
_contact_bandwidth = """
227+
contact_bandwidth
228+
Bandwidth for contact proximity calculation and distance threshold for contact interactions.
229+
If None, contact proximity is not calculated. Default is None."""
230+
205231

206232
# Plot docstrings
207233
_liana_res = """\
@@ -353,5 +379,10 @@
353379
cmap=_cmap,
354380
figure_size=_figure_size,
355381
return_fig=_return_fig,
382+
spatial_kwargs=_spatial_kwargs,
383+
bandwidth=_bandwidth,
384+
contact_bandwidth=_contact_bandwidth,
385+
kernel=_kernel,
386+
coordinates=_coordinates,
356387

357388
)

0 commit comments

Comments
 (0)