Source code for scplotkit._plotter

"""Object-oriented convenience wrapper around the functional plotting API."""

from __future__ import annotations

from pathlib import Path

from . import composition, embeddings, enrichment, markers, overview, pseudobulk, ridgeline, sankey
from ._config import PlotConfig
from ._style import apply_style


[docs] class ScPlotter: """Stateful convenience wrapper that remembers your config and output directory. Every method mirrors a function of the same name in the corresponding ``scplotkit`` submodule (:mod:`~scplotkit.embeddings`, :mod:`~scplotkit.composition`, :mod:`~scplotkit.overview`, :mod:`~scplotkit.markers`, :mod:`~scplotkit.sankey`) and simply forwards to it with ``config`` and ``output_dir`` pre-filled. Prefer calling the module functions directly if you don't need the shared state. Examples -------- >>> plotter = ScPlotter(output_dir="figures") >>> plotter.masked_umap(adata, color_by="cell_type", figure_name="T cells", ... mask_values=["CD4 T", "CD8 T"]) """ def __init__(self, config: PlotConfig | dict | str | Path | None = None, output_dir: str | Path = "figures"): self.config = PlotConfig.load(config) self.output_dir = Path(output_dir) self.output_dir.mkdir(parents=True, exist_ok=True) apply_style(self.config) # -- embeddings ---------------------------------------------------
[docs] def masked_umap(self, adata, **kwargs): return embeddings.masked_umap(adata, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def masked_umap_highlight(self, adata, **kwargs): return embeddings.masked_umap_highlight(adata, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def gene_expression_umap(self, adata, **kwargs): return embeddings.gene_expression_umap(adata, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def gene_coexpression_umap(self, adata, **kwargs): return embeddings.gene_coexpression_umap(adata, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def embedding_density(self, adata, **kwargs): return embeddings.embedding_density(adata, config=self.config, output_dir=self.output_dir, **kwargs)
# -- composition ----------------------------------------------------
[docs] def stacked_barplots(self, adata, **kwargs): return composition.stacked_barplots(adata, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def stacked_barplots_multi_meta(self, adata, **kwargs): return composition.stacked_barplots_multi_meta(adata, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def composition_heatmap(self, adata, **kwargs): return composition.composition_heatmap(adata, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def abundance_bubble_grid(self, adata, **kwargs): return composition.abundance_bubble_grid(adata, config=self.config, output_dir=self.output_dir, **kwargs)
# -- overview ---------------------------------------------------------
[docs] def sample_and_cell_counts_barplot(self, adata, **kwargs): return overview.sample_and_cell_counts_barplot(adata, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def sample_and_cell_counts_barplot_break_axis(self, adata, **kwargs): return overview.sample_and_cell_counts_barplot_break_axis( adata, config=self.config, output_dir=self.output_dir, **kwargs )
[docs] def cells_per_patient_boxplot(self, adata, **kwargs): return overview.cells_per_patient_boxplot(adata, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def cell_abundance_barplot(self, adata, **kwargs): return overview.cell_abundance_barplot(adata, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def compare_cell_abundance_barplot(self, adata1, adata2, **kwargs): return overview.compare_cell_abundance_barplot( adata1, adata2, config=self.config, output_dir=self.output_dir, **kwargs )
[docs] def compare_cell_abundance_boxplot(self, adata1, adata2, **kwargs): return overview.compare_cell_abundance_boxplot( adata1, adata2, config=self.config, output_dir=self.output_dir, **kwargs )
# -- pseudobulk -------------------------------------------------------
[docs] def pseudobulk_boxplot(self, adata, **kwargs): return pseudobulk.pseudobulk_boxplot(adata, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def pseudobulk_multigene_boxplot(self, adata, **kwargs): return pseudobulk.pseudobulk_multigene_boxplot(adata, config=self.config, output_dir=self.output_dir, **kwargs)
# -- markers ------------------------------------------------------------
[docs] def rank_genes_matrix_and_dot(self, adata, groupby_column, **kwargs): return markers.rank_genes_matrix_and_dot( adata, groupby_column, config=self.config, output_dir=self.output_dir, **kwargs )
[docs] def annotation_marker_matrixplot(self, adata, markers_dict, groupby_column, **kwargs): return markers.annotation_marker_matrixplot( adata, markers_dict, groupby_column, config=self.config, output_dir=self.output_dir, **kwargs )
[docs] def annotation_marker_stacked_violin(self, adata, markers_dict, groupby_column, **kwargs): return markers.annotation_marker_stacked_violin( adata, markers_dict, groupby_column, config=self.config, output_dir=self.output_dir, **kwargs )
# -- ridgeline --------------------------------------------------------
[docs] def ridgeline_plot(self, adata, **kwargs): return ridgeline.ridgeline_plot(adata, config=self.config, output_dir=self.output_dir, **kwargs)
# -- enrichment -------------------------------------------------------
[docs] def ora_dotplot(self, csv_path, **kwargs): return enrichment.ora_dotplot(csv_path, config=self.config, output_dir=self.output_dir, **kwargs)
# -- sankey ---------------------------------------------------------
[docs] def sankey_plot(self, adata, levels, **kwargs): return sankey.sankey_plot(adata, levels, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def sunburst_plot(self, adata, levels, **kwargs): return sankey.sunburst_plot(adata, levels, config=self.config, output_dir=self.output_dir, **kwargs)
[docs] def treemap_plot(self, adata, levels, **kwargs): return sankey.treemap_plot(adata, levels, config=self.config, output_dir=self.output_dir, **kwargs)