File size: 1,128 Bytes
4e2940e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
"""Neighbor graph computation (thin scanpy wrapper)."""

from __future__ import annotations

from anndata import AnnData

from .._constants import DEFAULT_N_NEIGHBORS
from .._utils import log_params


def neighbors(
    adata: AnnData,
    n_neighbors: int = DEFAULT_N_NEIGHBORS,
    use_rep: str | None = None,
    **kwargs,
) -> None:
    """Compute a kNN graph using scanpy.

    Wrapper around :func:`scanpy.pp.neighbors` that logs parameters
    to ``adata.uns['scptr']``.

    Parameters
    ----------
    adata
        Annotated data matrix. If ``X_pca`` is not present, PCA is
        computed automatically by scanpy.
    n_neighbors
        Number of nearest neighbors.
    use_rep
        Representation to use. Passed to scanpy.
    **kwargs
        Additional keyword arguments passed to ``scanpy.pp.neighbors``.
    """
    import scanpy as sc

    if use_rep is None and "X_pca" not in adata.obsm:
        sc.tl.pca(adata)

    sc.pp.neighbors(adata, n_neighbors=n_neighbors, use_rep=use_rep, **kwargs)

    log_params(adata, "neighbors", {
        "n_neighbors": n_neighbors,
        "use_rep": use_rep,
    })