Source code for proteobench.plotting.plot_generator_base

from abc import ABC, abstractmethod
from typing import Dict, Optional

import pandas as pd
from plotly import graph_objects as go


[docs] class PlotGeneratorBase(ABC): """ Abstract base class for module-specific plot generators. Each module can extend this to define its own in-depth plots. """
[docs] @abstractmethod def generate_in_depth_plots(self, performance_data: pd.DataFrame, **kwargs) -> Dict[str, go.Figure]: """ Generate module-specific plots. Parameters ---------- performance_data : pd.DataFrame The performance data to plot **kwargs : dict Additional module-specific parameters. Common parameters include: - parse_settings: ParseSettings - module-specific parse settings (may be optional for some modules) - metric: str - metric to display (e.g., "Median", "Mean") - mode: str - calculation mode (e.g., "Global", "Species-weighted") - colorblind_mode: bool - whether to use colorblind-friendly visualization Each implementation should document which parameters it accepts. Returns ------- Dict[str, go.Figure] Dictionary mapping plot names to plotly figures Notes ----- Implementations may add parse_settings as an explicit positional parameter for consistency with generic tab code, even if not used by the module. """ pass
[docs] @abstractmethod def get_in_depth_plot_layout(self) -> list: """ Define the layout configuration for displaying plots. Returns ------- list List of plot configurations, e.g.: [ {"plots": ["logfc", "cv"], "columns": 2, "title": "Distribution Plots"}, {"plots": ["ma_plot"], "columns": 1, "title": "MA Plot"} ] """ pass
[docs] @abstractmethod def get_in_depth_plot_descriptions(self) -> Dict[str, str]: """ Get descriptions for each plot. Returns ------- Dict[str, str] Dictionary mapping plot names to their descriptions """ pass
[docs] @abstractmethod def plot_main_metric(self, result_df: pd.DataFrame, hide_annot: bool = False, **kwargs) -> go.Figure: """ Generate the main performance metric plot for the module. Parameters ---------- result_df : pd.DataFrame DataFrame containing the results to plot. hide_annot : bool, optional Whether to hide annotations on the plot (default is False). **kwargs : dict Additional module-specific parameters. Returns ------- go.Figure The generated plotly figure for the main performance metric. """ pass