33
44import numpy as np
55import pandas as pd
6+ import scanpy as sc
67import tqdm
78from pynndescent import NNDescent
89from scipy import sparse
@@ -52,8 +53,6 @@ def build_nn( # noqa: D103
5253 ref ,
5354 query = None ,
5455 k = 100 ,
55- weight : Literal ["unweighted" , "dist" , "gaussian_kernel" ] = "unweighted" ,
56- sigma = None ,
5756 use_rapids : bool = False ,
5857):
5958 if query is None :
@@ -108,9 +107,9 @@ def random_walk_with_restart(init, transition_prob, alpha=0.5, num_rounds=100):
108107
109108
110109def get_wknn (
111- ref ,
112- query ,
113- ref2 = None ,
110+ ref : np . ndarray ,
111+ query : np . ndarray ,
112+ ref2 : np . ndarray | None = None ,
114113 k : int = 100 ,
115114 query2ref : bool = True ,
116115 ref2query : bool = False ,
@@ -123,23 +122,23 @@ def get_wknn(
123122
124123 Parameters
125124 ----------
126- ref : np.ndarray
125+ ref
127126 The reference representation to build ref-query neighbor graph
128- query : np.ndarray
127+ query
129128 The query representation to build ref-query neighbor graph
130- ref2 : np.ndarray
129+ ref2
131130 The reference representation to build ref-ref neighbor graph
132- k : int
131+ k
133132 Number of neighbors per cell
134- query2ref : bool
133+ query2ref
135134 Consider query-to-ref neighbors
136- ref2query : bool
135+ ref2query
137136 Consider ref-to-query neighbors
138- weighting_scheme : str
137+ weighting_scheme
139138 How to weight edges in the ref-query neighbor graph
140- top_n : int
139+ top_n
141140 The number of top neighbors to consider
142- return_adjs : bool
141+ return_adjs
143142 Whether to return the adjacency matrices of ref-query, query-ref, ref-ref, and ref-ref for weighting
144143 """
145144 adj_q2r = build_nn (ref = ref , query = query , k = k )
@@ -186,26 +185,26 @@ def get_wknn(
186185 return wknn
187186
188187
189- def estimate_presence_score ( # noqa: D103
190- ref_adata ,
191- query_adata ,
188+ def estimate_presence_score (
189+ ref_adata : sc . AnnData ,
190+ query_adata : sc . AnnData ,
192191 wknn = None ,
193- use_rep_ref_wknn = "X_latent" ,
194- use_rep_query_wknn = "X_latent" ,
195- k_wknn = 100 ,
196- query2ref_wknn = True ,
197- ref2query_wknn = False ,
198- weighting_scheme_wknn = "jaccard_square" ,
192+ use_rep_ref_wknn : str = "X_latent" ,
193+ use_rep_query_wknn : str = "X_latent" ,
194+ k_wknn : int = 100 ,
195+ query2ref_wknn : bool = True ,
196+ ref2query_wknn : bool = False ,
197+ weighting_scheme_wknn : str = "jaccard_square" ,
199198 ref_trans_prop = None ,
200199 use_rep_ref_trans_prop = None ,
201- k_ref_trans_prop = 50 ,
202- symm_ref_trans_prop = True ,
200+ k_ref_trans_prop : int = 50 ,
203201 split_by = None ,
204- do_random_walk = True ,
205- alpha_random_walk = 0.1 ,
206- num_rounds_random_walk = 100 ,
202+ do_random_walk : bool = True ,
203+ alpha_random_walk : float = 0.1 ,
204+ num_rounds_random_walk : int = 100 ,
207205 log = True ,
208206):
207+ """Estimate presence score of query cells in reference dataset."""
209208 if wknn is None :
210209 ref = ref_adata .obsm [use_rep_ref_wknn ]
211210 query = query_adata .obsm [use_rep_query_wknn ]
@@ -271,7 +270,7 @@ def estimate_presence_score( # noqa: D103
271270 }
272271
273272
274- def transfer_labels (ref_adata , query_adata , wknn , label_key = "celltype" ):
273+ def transfer_labels (ref_adata : sc . AnnData , query_adata : sc . AnnData , wknn , label_key : str = "celltype" ):
275274 """Transfer labels from reference to query data."""
276275 scores = pd .DataFrame (
277276 wknn @ pd .get_dummies (ref_adata .obs [label_key ]),
0 commit comments