Source code for simba.tools._umap

"""UMAP (Uniform Manifold Approximation and Projection)"""

import umap as umap_learn


[docs] def umap(adata, n_neighbors=15, n_components=2, random_state=2020, layer=None, obsm=None, n_dim=None, **kwargs, ): """perform UMAP Parameters ---------- adata: AnnData Annotated data matrix. n_neighbors: `int`, optional (default: 15) The size of local neighborhood for UMAP n_components: `int`, optional (default: None) The dimension of the space to embed into for UMAP random_state: `int`, optional (default: None) The seed used by the random number generator for UMAP layer: `str`, optional (default: None) The layer used to perform UMAP obsm: `str`, optional (default: None) The multi-dimensional annotation of observations used to perform UMAP n_dim: `str`, optional (default: None) The number of dimensions used in `layer` or `obsm` kwargs: Other keyword arguments are passed down to `umap_learn.UMAP` Returns ------- updates `adata` with the following fields: `.obsm['X_umap']` : `array` UMAP coordinates of samples. """ if sum(list(map(lambda x: x is not None, [layer, obsm]))) == 2: raise ValueError("Only one of `layer` and `obsm` can be used") elif obsm is not None: X = adata.obsm[obsm] elif layer is not None: X = adata.layers[layer] else: X = adata.X if n_dim is not None: X = X[:, :n_dim] reducer = umap_learn.UMAP(n_neighbors=n_neighbors, n_components=n_components, random_state=random_state, **kwargs) reducer.fit(X) adata.obsm['X_umap'] = reducer.embedding_