Source code for dynamo.plot.clustering

import numpy as np
from anndata import AnnData

from .scatters import docstrings, scatters
from .utils import _to_hex

docstrings.delete_params("scatters.parameters", "adata", "basis")


@docstrings.with_indent(4)
def hdbscan(adata: AnnData, basis: str = "umap", color: str = "hdbscan", *args, **kwargs):
    """\
    Scatter plot for hdbscan clustering in selected basis.

    Parameters
    ----------
        adata: :class:`~anndata.AnnData`
            an Annodata object.
        %(scatters.parameters.no_adata|basis)s

    Returns
    -------
        plots hdbscan clustering of the adata object.
    """

    return scatters(adata, basis=basis, color=color, *args, **kwargs)


[docs]@docstrings.with_indent(4) def leiden(adata: AnnData, basis: str = "umap", color: str = "leiden", *args, **kwargs): """\ Scatter plot for leiden community detection in selected basis. Parameters ---------- adata: :class:`~anndata.AnnData` an Annodata object. %(scatters.parameters.no_adata|basis)s Returns ------- plots leiden clustering of the adata object. """ return scatters(adata, basis=basis, color=color, *args, **kwargs)
[docs]@docstrings.with_indent(4) def louvain(adata: AnnData, basis: str = "umap", color: str = "louvain", color_key_cmap="Spectral", *args, **kwargs): """\ Scatter plot for louvain community detection in selected basis. Parameters ---------- adata: :class:`~anndata.AnnData` an Annodata object. %(scatters.parameters.no_adata|basis)s Returns ------- plots louvain clustering of the adata object. """ return scatters(adata, basis=basis, color=color, *args, **kwargs)
[docs]@docstrings.with_indent(4) def infomap(adata: AnnData, basis: str = "umap", color: str = "infomap", *args, **kwargs): """\ Scatter plot for infomap community detection in selected basis. Parameters ---------- adata: :class:`~anndata.AnnData` an Annodata object. %(scatters.parameters.no_adata|basis)s Returns ------- plots leiden clustering of the adata object. """ return scatters(adata, basis=basis, color=color, *args, **kwargs)
[docs]@docstrings.with_indent(4) def streamline_clusters( adata: AnnData, basis: str = "umap", clusters="clusters", color_key_cmap: str = "Spectral", *args, **kwargs ): """\ Scatter plot for visualizing streamline clusters in selected basis. Parameters ---------- adata: :class:`~anndata.AnnData` an Annodata object. %(scatters.parameters.no_adata|basis)s Returns ------- plots leiden clustering of the adata object. """ import matplotlib.pyplot as plt if "streamline_clusters_" + basis not in adata.uns_keys(): from ..vectorfield.clustering import streamline_clusters streamline_clusters(adata, basis=basis) segments = adata.uns["streamline_clusters_" + basis]["segments"] clusters = adata.uns["streamline_clusters_" + basis][clusters].astype(int) clusters[np.isnan(clusters)] = -1 num_labels = len(np.unique(clusters)) color_key = _to_hex(plt.get_cmap(color_key_cmap)(np.linspace(0, 1, num_labels))) fig, ax = plt.subplots(1, 1) for key, values in segments.items(): ax.plot(*values.T, color=color_key[int(clusters[key])]) plt.show()