Skip to content
29 changes: 26 additions & 3 deletions src/squidpy/gr/_ligrec.py
Original file line number Diff line number Diff line change
Expand Up @@ -641,7 +641,17 @@ def ligrec(
copy: bool = False,
key_added: str | None = None,
gene_symbols: str | None = None,
**kwargs: Any,
n_perms: int = 1000,
seed: int | None = None,
clusters: Cluster_t | None = None,
alpha: float = 0.05,
numba_parallel: bool | None = None,
n_jobs: int | None = None,
backend: str = "loky",
show_progress_bar: bool = True,
interactions_params: Mapping[str, Any] = MappingProxyType({}),
transmitter_params: Mapping[str, Any] = MappingProxyType({"categories": "ligand"}),
receiver_params: Mapping[str, Any] = MappingProxyType({"categories": "receptor"}),
) -> Mapping[str, pd.DataFrame] | None:
"""
%(PT_test.full_desc)s
Expand All @@ -663,15 +673,28 @@ def ligrec(
with _genesymbols(adata, key=gene_symbols, use_raw=use_raw, make_unique=False):
return ( # type: ignore[no-any-return]
PermutationTest(adata, use_raw=use_raw)
.prepare(interactions, complex_policy=complex_policy, **kwargs)
.prepare(
interactions,
complex_policy=complex_policy,
interactions_params=interactions_params,
transmitter_params=transmitter_params,
receiver_params=receiver_params,
)
.test(
cluster_key=cluster_key,
clusters=clusters,
n_perms=n_perms,
threshold=threshold,
seed=seed,
corr_method=corr_method,
corr_axis=corr_axis,
alpha=alpha,
copy=copy,
key_added=key_added,
**kwargs,
numba_parallel=numba_parallel,
n_jobs=n_jobs,
backend=backend,
show_progress_bar=show_progress_bar,
)
)

Expand Down
Binary file added tests/_data/ligrec_pvalues_reference.pickle
Binary file not shown.
6 changes: 6 additions & 0 deletions tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,12 @@ def ligrec_no_numba() -> Mapping[str, pd.DataFrame]:
return {"means": data[0], "pvalues": data[1], "metadata": data[2]}


@pytest.fixture(scope="session")
def ligrec_pvalues_reference() -> Mapping[str, pd.DataFrame]:
with open("tests/_data/ligrec_pvalues_reference.pickle", "rb") as fin:
return pickle.load(fin)
Comment on lines +268 to +269
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we store this as a zarr file or hdf5 or even just an anndata?



@pytest.fixture(scope="session")
def ligrec_result() -> Mapping[str, pd.DataFrame]:
adata = _adata.copy()
Expand Down
17 changes: 17 additions & 0 deletions tests/graph/test_ligrec.py
Original file line number Diff line number Diff line change
Expand Up @@ -379,6 +379,23 @@ def test_reproducibility_numba_off(
np.testing.assert_allclose(r["pvalues"], ligrec_no_numba["pvalues"])
np.testing.assert_array_equal(np.where(np.isnan(r["pvalues"])), np.where(np.isnan(ligrec_no_numba["pvalues"])))

def test_pvalues_reference(
self, adata: AnnData, interactions: Interactions_t, ligrec_pvalues_reference: Mapping[str, pd.DataFrame]
):
r = ligrec(
adata, _CK, interactions=interactions, n_perms=25, copy=True, show_progress_bar=False, seed=42, n_jobs=1
)
np.testing.assert_array_equal(r["means"].index, ligrec_pvalues_reference["means"].index)
np.testing.assert_array_equal(r["means"].columns, ligrec_pvalues_reference["means"].columns)
np.testing.assert_array_equal(r["pvalues"].index, ligrec_pvalues_reference["pvalues"].index)
np.testing.assert_array_equal(r["pvalues"].columns, ligrec_pvalues_reference["pvalues"].columns)

np.testing.assert_allclose(r["means"], ligrec_pvalues_reference["means"])
np.testing.assert_allclose(r["pvalues"], ligrec_pvalues_reference["pvalues"])
np.testing.assert_array_equal(
np.where(np.isnan(r["pvalues"])), np.where(np.isnan(ligrec_pvalues_reference["pvalues"]))
)

def test_logging(self, adata: AnnData, interactions: Interactions_t, capsys):
s.logfile = sys.stderr
s.verbosity = 4
Expand Down
Loading