Skip to content

Commit 706d4ef

Browse files
lazappiivirshupflying-sheep
authored
Add layer argument to score_genes() (#2921)
Co-authored-by: Isaac Virshup <[email protected]> Co-authored-by: Philipp A <[email protected]>
1 parent 21aecd9 commit 706d4ef

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

docs/release-notes/1.11.0.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
```{rubric} Features
44
```
55

6+
* Add layer argument to {func}`scanpy.tl.score_genes` and {func}`scanpy.tl.score_genes_cell_cycle` {pr}`2921` {smaller}`L Zappia`
7+
68
```{rubric} Docs
79
```
810

scanpy/tests/test_score_genes.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,23 @@ def test_use_raw_None():
239239
sc.tl.score_genes(adata, adata_raw.var_names[:3], use_raw=None)
240240

241241

242+
def test_layer():
243+
adata = _create_adata(100, 1000, p_zero=0, p_nan=0)
244+
245+
sc.pp.normalize_per_cell(adata, counts_per_cell_after=1e4)
246+
sc.pp.log1p(adata)
247+
248+
# score X
249+
gene_set = adata.var_names[:10]
250+
sc.tl.score_genes(adata, gene_set, score_name="X_score")
251+
# score layer (`del` makes sure it actually uses the layer)
252+
adata.layers["test"] = adata.X.copy()
253+
del adata.X
254+
sc.tl.score_genes(adata, gene_set, score_name="test_score", layer="test")
255+
256+
np.testing.assert_array_equal(adata.obs["X_score"], adata.obs["test_score"])
257+
258+
242259
@pytest.mark.parametrize("gene_pool", [[], ["foo", "bar"]])
243260
def test_invalid_gene_pool(gene_pool):
244261
adata = _create_adata(100, 1000, p_zero=0, p_nan=0)

scanpy/tools/_score_genes.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ def score_genes(
6666
random_state: AnyRandom = 0,
6767
copy: bool = False,
6868
use_raw: bool | None = None,
69+
layer: str | None = None,
6970
) -> AnnData | None:
7071
"""\
7172
Score a set of genes :cite:p:`Satija2015`.
@@ -101,6 +102,8 @@ def score_genes(
101102
102103
.. versionchanged:: 1.4.5
103104
Default value changed from `False` to `None`.
105+
layer
106+
Key from `adata.layers` whose value will be used to perform tests on.
104107
105108
Returns
106109
-------
@@ -145,7 +148,7 @@ def score_genes(
145148
# interval of expression.
146149

147150
def get_subset(genes: pd.Index[str]):
148-
x = _get_obs_rep(adata, use_raw=use_raw)
151+
x = _get_obs_rep(adata, use_raw=use_raw, layer=layer)
149152
if len(genes) == len(var_names):
150153
return x
151154
idx = var_names.get_indexer(genes)

0 commit comments

Comments
 (0)