def neighbors(adata, n_neighbors=<NUM_LIT:30>, n_pcs=<NUM_LIT:30>, use_rep=None, knn=True, random_state=<NUM_LIT:0>, method='<STR_LIT>',<EOL>metric='<STR_LIT>', metric_kwds={}, copy=False):
logg.info('<STR_LIT>', r=True)<EOL>adata = adata.copy() if copy else adata<EOL>if adata.isview: adata._init_as_actual(adata.copy())<EOL>if (use_rep is None or use_rep is '<STR_LIT>')and ('<STR_LIT>' not in adata.obsm.keys() or n_pcs > adata.obsm['<STR_LIT>'].shape[<NUM_LIT:1>]):<EOL><INDENT>pca(adata, n_comps=n_pcs, svd_solver='<STR_LIT>')<EOL><DEDENT>adata.uns['<STR_LIT>'] = {}<EOL>adata.uns['<STR_LIT>']['<STR_LIT>'] = {'<STR_LIT>': n_neighbors, '<STR_LIT>': method}<EOL>if method is '<STR_LIT>':<EOL><INDENT>from sklearn.neighbors import NearestNeighbors<EOL>neighbors = NearestNeighbors(n_neighbors=n_neighbors)<EOL>neighbors.fit(adata.obsm['<STR_LIT>'] if use_rep is None else adata.obsm[use_rep])<EOL>adata.uns['<STR_LIT>']['<STR_LIT>'] = neighbors.kneighbors_graph(mode='<STR_LIT>')<EOL>adata.uns['<STR_LIT>']['<STR_LIT>'] = neighbors.kneighbors_graph(mode='<STR_LIT>')<EOL><DEDENT>else:<EOL><INDENT>neighbors = Neighbors(adata)<EOL>neighbors.compute_neighbors(n_neighbors=n_neighbors, knn=knn, n_pcs=n_pcs, use_rep=use_rep, method=method,<EOL>metric=metric, metric_kwds=metric_kwds, random_state=random_state, write_knn_indices=True)<EOL>adata.uns['<STR_LIT>']['<STR_LIT>'] = neighbors.distances<EOL>adata.uns['<STR_LIT>']['<STR_LIT>'] = neighbors.connectivities<EOL>adata.uns['<STR_LIT>']['<STR_LIT>'] = neighbors.knn_indices<EOL><DEDENT>logg.info('<STR_LIT>', time=True, end='<STR_LIT:U+0020>' if settings.verbosity > <NUM_LIT:2> else '<STR_LIT:\n>')<EOL>logg.hint(<EOL>'<STR_LIT>'<EOL>'<STR_LIT>'<EOL>'<STR_LIT>')<EOL>return adata if copy else None<EOL>
Compute a neighborhood graph of observations [McInnes18]_.
The neighbor search efficiency of this heavily relies on UMAP [McInnes18]_,
which also provides a method for estimating connectivities of data points -
the connectivity of the manifold (`method=='umap'`). If `method=='diffmap'`,
connectivities are computed according to [Coifman05]_, in the adaption of
[Haghverdi16]_.
Parameters
----------
adata
    Annotated data matrix.
n_neighbors
    The size of local neighborhood (in terms of number of neighboring data
    points) used for manifold approximation. Larger values result in more
    global views of the manifold, while smaller values result in more local
    data being preserved. In general values should be in the range 2 to 100.
    If `knn` is `True`, number of nearest neighbors to be searched. If `knn`
    is `False`, a Gaussian kernel width is set to the distance of the
    `n_neighbors` neighbor.
n_pcs : `int` or `None` (default: None)
    Use this many PCs. If n_pcs==0 use .X if use_rep is None.

use_rep : `None`, `'X'` or any key for `.obsm` (default: None)
    Use the indicated representation. If `None`, the representation is chosen automatically:
    for .n_vars < 50, .X is used, otherwise ‘X_pca’ is used.
knn
    If `True`, use a hard threshold to restrict the number of neighbors to
    `n_neighbors`, that is, consider a knn graph. Otherwise, use a Gaussian
    Kernel to assign low weights to neighbors more distant than the
    `n_neighbors` nearest neighbor.
random_state
    A numpy random seed.
method : {{'umap', 'gauss', `sklearn`, `None`}}  (default: `'umap'`)
    Use 'umap' [McInnes18]_ or 'gauss' (Gauss kernel following [Coifman05]_
    with adaptive width [Haghverdi16]_) for computing connectivities.
metric
    A known metric’s name or a callable that returns a distance.
metric_kwds
    Options for the metric.
copy
    Return a copy instead of writing to adata.
Returns
-------
Depending on `copy`, updates or returns `adata` with the following:
connectivities : sparse matrix (`.uns['neighbors']`, dtype `float32`)
    Weighted adjacency matrix of the neighborhood graph of data
    points. Weights should be interpreted as connectivities.
distances : sparse matrix (`.uns['neighbors']`, dtype `float32`)
    Instead of decaying weights, this stores distances for each pair of
    neighbors.