diff --git a/aaanalysis/__init__.py b/aaanalysis/__init__.py index 4fc1edee..f1ef1db6 100644 --- a/aaanalysis/__init__.py +++ b/aaanalysis/__init__.py @@ -9,7 +9,8 @@ from .explainable_ai import TreeModel from .protein_design import AAMut, AAMutPlot, SeqMut, SeqMutPlot, SeqOpt, SeqOptPlot from .plotting import (plot_get_clist, plot_get_cmap, plot_get_cdict, - plot_settings, plot_legend, plot_gcfs, plot_rank) + plot_settings, plot_legend, plot_gcfs, plot_rank, + plot_eval_heatmap) from .metrics import (comp_auc_adjusted, comp_bic_score, comp_kld, comp_per_protein_ap, comp_detection_metrics, comp_bootstrap_ci, comp_smooth_scores) @@ -65,6 +66,7 @@ "plot_legend", "plot_gcfs", "plot_rank", + "plot_eval_heatmap", "comp_auc_adjusted", "comp_bic_score", "comp_kld", diff --git a/aaanalysis/plotting/__init__.py b/aaanalysis/plotting/__init__.py index df692aad..6a3db90d 100644 --- a/aaanalysis/plotting/__init__.py +++ b/aaanalysis/plotting/__init__.py @@ -2,7 +2,7 @@ Plotting utilities: shared styling, colors, and legends for every ``*Plot`` class. Public objects: plot_get_clist, plot_get_cmap, plot_get_cdict, plot_settings, -plot_legend, plot_gcfs, plot_rank. +plot_legend, plot_gcfs, plot_rank, plot_eval_heatmap. A cross-cutting subpackage (not a pipeline stage): ``plot_settings`` sets the house rcParams, the ``plot_get_*`` helpers supply the color list / map / dict, and ``plot_legend`` / ``plot_gcfs`` / ``plot_rank`` are reused by the paired plot classes @@ -18,6 +18,7 @@ from ._plot_gcfs import plot_gcfs from ._plot_legend import plot_legend from ._plot_rank import plot_rank +from ._plot_eval_heatmap import plot_eval_heatmap __all__ = [ @@ -28,4 +29,5 @@ "plot_legend", "plot_gcfs", "plot_rank", + "plot_eval_heatmap", ] diff --git a/aaanalysis/plotting/_plot_eval_heatmap.py b/aaanalysis/plotting/_plot_eval_heatmap.py new file mode 100644 index 00000000..e0987a21 --- /dev/null +++ b/aaanalysis/plotting/_plot_eval_heatmap.py @@ -0,0 +1,123 @@ +""" +This is a script for the frontend of the plot_eval_heatmap function — a house-preset +annotated evaluation heatmap for a static score grid. +""" +from typing import Optional, Union, Tuple +import pandas as pd +import seaborn as sns +from matplotlib import pyplot as plt +from matplotlib.axes import Axes + +from aaanalysis import utils as ut + + +# I Helper Functions + + +# II Main Functions +def plot_eval_heatmap(df_eval: pd.DataFrame, + xlabel: Optional[str] = None, + ylabel: Optional[str] = None, + vmin: Union[int, float] = 50, + vmax: Union[int, float] = 100, + cbar_label: Optional[str] = "Balanced accuracy [%]", + xtick_rotation: Union[int, float] = 0, + ytick_rotation: Union[int, float] = 0, + square: bool = True, + figsize: Optional[Tuple[Union[int, float], Union[int, float]]] = None, + ax: Optional[Axes] = None, + ) -> Axes: + """ + Plot a house-preset annotated evaluation heatmap from a static score grid. + + Renders ``df_eval`` (rows × columns of evaluation scores, e.g. balanced accuracy in + percent) as a ``viridis`` heatmap with integer annotations, fixed ``[vmin, vmax]`` + color limits, and a labeled colorbar — collapsing the hand-built seaborn block that is + otherwise copied for every sweep result into a single call. Left/bottom ticks are + removed for the package look; tick labels are horizontal by default and can be rotated + (e.g. for long column labels) via ``xtick_rotation`` / ``ytick_rotation``. + + .. versionadded:: 1.1.0 + + Parameters + ---------- + df_eval : pd.DataFrame, shape (n_rows, n_cols) + Numeric score grid. Each cell holds the score for one row × column configuration + (the ``index`` becomes the y-axis levels, the ``columns`` the x-axis levels). + xlabel : str, optional + Label for the x-axis. If ``None``, seaborn's default (the ``columns`` name, if any) + is kept. + ylabel : str, optional + Label for the y-axis. If ``None``, seaborn's default (the ``index`` name, if any) + is kept. + vmin : int or float, default=50 + Lower bound of the color scale (and colorbar). + vmax : int or float, default=100 + Upper bound of the color scale (and colorbar). Must be greater than ``vmin``. + cbar_label : str, optional + Label drawn next to the colorbar. If ``None``, no colorbar label is set. + xtick_rotation : int or float, default=0 + Rotation (degrees) of the x-axis tick labels. Non-zero values are right-aligned to + keep long column labels legible without overlap. + ytick_rotation : int or float, default=0 + Rotation (degrees) of the y-axis tick labels. + square : bool, default=True + If ``True``, force each heatmap cell to be equal in width and height (a square grid), + the convention for an evaluation map. Set ``False`` to let the cells stretch to fill + the axes/figure. + figsize : tuple, optional + Figure ``(width, height)`` used when ``ax`` is ``None``. If ``None``, matplotlib's + default figure size is used. + ax : matplotlib.axes.Axes, optional + Axes to draw on. If ``None``, a new figure and axes are created. + + Returns + ------- + ax : matplotlib.axes.Axes + The axes with the annotated heatmap. + + See Also + -------- + * :func:`aaanalysis.pipe.plot_eval` is the adaptive sibling: it inspects a + ``find_features`` sweep table and lays out one or more panels automatically. + ``plot_eval_heatmap`` is the simple **static** entry point — hand it a ready-made + score grid and it applies the house preset, with no axis selection or multi-panel + logic. + + Examples + -------- + .. include:: examples/plot_eval_heatmap.rst + """ + # Check input + ut.check_df(name="df_eval", df=df_eval, accept_none=False) + if df_eval.empty: + raise ValueError(f"'df_eval' (shape {df_eval.shape}) should contain at least one " + f"row and one column.") + non_numeric = df_eval.select_dtypes(exclude="number").columns.tolist() + if non_numeric: + raise ValueError(f"'df_eval' should be all-numeric; non-numeric columns: {non_numeric}.") + ut.check_str(name="xlabel", val=xlabel, accept_none=True) + ut.check_str(name="ylabel", val=ylabel, accept_none=True) + ut.check_vmin_vmax(vmin=vmin, vmax=vmax) + ut.check_str(name="cbar_label", val=cbar_label, accept_none=True) + ut.check_number_val(name="xtick_rotation", val=xtick_rotation, just_int=False) + ut.check_number_val(name="ytick_rotation", val=ytick_rotation, just_int=False) + ut.check_bool(name="square", val=square) + ut.check_figsize(figsize=figsize, accept_none=True) + ut.check_ax(ax=ax, accept_none=True) + + # Draw + if ax is None: + _, ax = plt.subplots(figsize=figsize) + cbar_kws = dict(label=cbar_label) if cbar_label is not None else None + sns.heatmap(df_eval, ax=ax, vmin=vmin, vmax=vmax, cmap="viridis", annot=True, + fmt=".0f", linewidths=0.1, square=square, cbar_kws=cbar_kws) + ax.tick_params(left=False, bottom=False) + x_ha = "right" if xtick_rotation % 360 != 0 else "center" + ax.set_yticklabels(ax.get_yticklabels(), rotation=ytick_rotation) + ax.set_xticklabels(ax.get_xticklabels(), rotation=xtick_rotation, ha=x_ha) + if xlabel is not None: + ax.set_xlabel(xlabel) + if ylabel is not None: + ax.set_ylabel(ylabel) + return ax diff --git a/docs/_cheatsheet/content.py b/docs/_cheatsheet/content.py index 801adc7f..c983ae61 100644 --- a/docs/_cheatsheet/content.py +++ b/docs/_cheatsheet/content.py @@ -230,6 +230,7 @@ ("BIC score · KL divergence", "comp_bic_score(X, labels) · comp_kld", None), ("Per-protein / detection (v1.1)", "comp_per_protein_ap · comp_detection_metrics", None), ("Plot style, fonts & standalone legend", "plot_settings(font_scale) · plot_legend(ax)", None), + ("Evaluation score grid heatmap (v1.1)", "plot_eval_heatmap(df_eval)", None), ]}, {"name": "Protein Design", "tag": "mutations · design", "under_construction": True, diff --git a/docs/source/api.rst b/docs/source/api.rst index 6b8adb47..cbc04fca 100755 --- a/docs/source/api.rst +++ b/docs/source/api.rst @@ -124,6 +124,7 @@ Utility Functions comp_smooth_scores display_df options + plot_eval_heatmap plot_gcfs plot_get_cdict plot_get_clist diff --git a/docs/source/index/release_notes.rst b/docs/source/index/release_notes.rst index 89fa7d74..c91c9207 100644 --- a/docs/source/index/release_notes.rst +++ b/docs/source/index/release_notes.rst @@ -191,6 +191,10 @@ Added - :func:`~aaanalysis.plot_rank`: Standalone per-protein max-score-vs-rank scatter with group coloring and optional threshold lines (pairs with the new ``aa.metrics`` functions). +- **plot_eval_heatmap**: House-preset annotated evaluation heatmap (``viridis``, fixed + ``[vmin, vmax]`` color limits, integer annotations, labeled colorbar) for a static score + grid. Collapses the hand-built seaborn block previously copied for every sweep result + into one call; the simple static sibling of the adaptive ``aap.plot_eval``. **Golden Pipelines** diff --git a/examples/plotting/plot_eval_heatmap.ipynb b/examples/plotting/plot_eval_heatmap.ipynb new file mode 100644 index 00000000..c51391e9 --- /dev/null +++ b/examples/plotting/plot_eval_heatmap.ipynb @@ -0,0 +1,127 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "intro-md", + "metadata": {}, + "source": [ + "The ``aa.plot_eval_heatmap()`` function renders a static evaluation score grid (e.g. balanced accuracy in percent across part sets and scale sets) as an annotated ``viridis`` heatmap with the package house preset: fixed ``[vmin, vmax]`` color limits, integer cell annotations, horizontal tick labels, and a labeled colorbar. It collapses the hand-built seaborn block that is otherwise copied for every sweep result into one call. It is the simple **static** sibling of ``aap.plot_eval`` (which adaptively summarizes a full ``find_features`` sweep): hand ``plot_eval_heatmap`` a ready-made grid and it applies the look; reach for ``aap.plot_eval`` when you want axis selection and multi-panel layout from a sweep table." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "example-code", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-01T02:52:45.686886Z", + "iopub.status.busy": "2026-07-01T02:52:45.686789Z", + "iopub.status.idle": "2026-07-01T02:52:47.344958Z", + "shell.execute_reply": "2026-07-01T02:52:47.344675Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import aaanalysis as aa\n", + "\n", + "aa.options[\"verbose\"] = False\n", + "aa.plot_settings(weight_bold=False, font_scale=0.9)\n", + "\n", + "# A small Parts x Scales balanced-accuracy grid (as in the gamma-secretase use case).\n", + "df_eval = pd.DataFrame(\n", + " [[71, 70, 72, 73, 74],\n", + " [61, 60, 64, 68, 75],\n", + " [66, 69, 78, 84, 90]],\n", + " index=[\"TMD\", \"TMD-JMD\", \"TMD+JMD_N+JMD_C\"],\n", + " columns=[f\"Set {i + 1}\" for i in range(5)],\n", + ")\n", + "ax = aa.plot_eval_heatmap(df_eval=df_eval, xlabel=\"Scales\", ylabel=\"Parts\")\n", + "plt.tight_layout()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "further-params-md", + "metadata": {}, + "source": [ + "**Further parameters.** ``plot_eval_heatmap`` also accepts: ``vmin`` / ``vmax`` — lower / upper bounds of the color scale and colorbar (defaults ``50`` / ``100``); ``cbar_label`` — label drawn next to the colorbar (default ``\"Balanced accuracy [%]\"``, set ``None`` to omit); ``xlabel`` / ``ylabel`` — axis labels (kept as seaborn's default when ``None``); ``xtick_rotation`` / ``ytick_rotation`` — tick-label rotation in degrees (rotate the x labels to keep long column names from overlapping); ``figsize`` — figure size when a new figure is created; ``ax`` — an existing ``Axes`` to draw on (a new figure is created when ``None``)." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "custom-code", + "metadata": { + "execution": { + "iopub.execute_input": "2026-07-01T02:52:47.346320Z", + "iopub.status.busy": "2026-07-01T02:52:47.346176Z", + "iopub.status.idle": "2026-07-01T02:52:47.406052Z", + "shell.execute_reply": "2026-07-01T02:52:47.405835Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# A different metric range with long column labels: rotate the x ticks and size the\n", + "# figure through the function itself (no pre-built Axes needed).\n", + "rng = np.random.default_rng(42)\n", + "df_eval2 = pd.DataFrame(\n", + " rng.uniform(40, 95, size=(4, 4)).round(1),\n", + " index=[f\"{n} negatives\" for n in (10, 20, 30, 40)],\n", + " columns=[f\"{n} features\" for n in (25, 50, 100, 150)],\n", + ")\n", + "ax = aa.plot_eval_heatmap(df_eval=df_eval2, vmin=40, vmax=100,\n", + " cbar_label=\"Balanced accuracy [%]\",\n", + " xtick_rotation=30, figsize=(6, 4))\n", + "plt.tight_layout()\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/tests/unit/plotting_tests/test_plot_eval_heatmap.py b/tests/unit/plotting_tests/test_plot_eval_heatmap.py new file mode 100644 index 00000000..fc2ada79 --- /dev/null +++ b/tests/unit/plotting_tests/test_plot_eval_heatmap.py @@ -0,0 +1,207 @@ +"""This is a script to test the plot_eval_heatmap() house-preset evaluation heatmap (#310).""" +import matplotlib +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import seaborn as sns +import pytest + +import aaanalysis as aa +from aaanalysis.plotting import plot_eval_heatmap + +aa.options["verbose"] = False + + +# Helper functions +def _df(n_rows=2, n_cols=3, seed=0): + rng = np.random.default_rng(seed) + vals = rng.uniform(55, 95, size=(n_rows, n_cols)) + return pd.DataFrame(vals, + index=[f"row{i}" for i in range(n_rows)], + columns=[f"col{j}" for j in range(n_cols)]) + + +@pytest.fixture(autouse=True) +def _close_figs(): + yield + plt.close("all") + + +class TestPlotEvalHeatmap: + """Normal cases for plot_eval_heatmap.""" + + def test_returns_ax(self): + ax = plot_eval_heatmap(df_eval=_df()) + assert isinstance(ax, plt.Axes) + + def test_is_public_export(self): + assert "plot_eval_heatmap" in aa.__all__ + assert aa.plot_eval_heatmap is plot_eval_heatmap + + def test_draws_on_passed_ax(self): + fig0, ax0 = plt.subplots() + ax = plot_eval_heatmap(df_eval=_df(), ax=ax0) + assert ax is ax0 + + def test_vmin_vmax_respected(self): + ax = plot_eval_heatmap(df_eval=_df(), vmin=40, vmax=90) + assert ax.collections[0].get_clim() == (40.0, 90.0) + + def test_default_vmin_vmax(self): + ax = plot_eval_heatmap(df_eval=_df()) + assert ax.collections[0].get_clim() == (50.0, 100.0) + + def test_xlabel_ylabel_set(self): + ax = plot_eval_heatmap(df_eval=_df(), xlabel="Scales", ylabel="Parts") + assert ax.get_xlabel() == "Scales" and ax.get_ylabel() == "Parts" + + def test_labels_default_none_keeps_seaborn(self): + # With unnamed axes and xlabel/ylabel=None, no custom label is forced. + ax = plot_eval_heatmap(df_eval=_df()) + assert ax.get_xlabel() == "" and ax.get_ylabel() == "" + + def test_cbar_label_default(self): + ax = plot_eval_heatmap(df_eval=_df()) + # The colorbar lives on a sibling axes of the same figure. + cbar_axes = [a for a in ax.figure.axes if a is not ax] + assert any(a.get_ylabel() == "Balanced accuracy [%]" for a in cbar_axes) + + def test_cbar_label_custom(self): + ax = plot_eval_heatmap(df_eval=_df(), cbar_label="F1 [%]") + cbar_axes = [a for a in ax.figure.axes if a is not ax] + assert any(a.get_ylabel() == "F1 [%]" for a in cbar_axes) + + def test_cbar_label_none_no_colorbar_label(self): + ax = plot_eval_heatmap(df_eval=_df(), cbar_label=None) + cbar_axes = [a for a in ax.figure.axes if a is not ax] + assert all(a.get_ylabel() == "" for a in cbar_axes) + + def test_annotation_count_matches_cells(self): + df = _df(n_rows=2, n_cols=3) + ax = plot_eval_heatmap(df_eval=df) + assert len(ax.texts) == df.size + + def test_ticklabels_horizontal(self): + ax = plot_eval_heatmap(df_eval=_df()) + assert all(t.get_rotation() == 0 for t in ax.get_xticklabels()) + assert all(t.get_rotation() == 0 for t in ax.get_yticklabels()) + + def test_single_cell(self): + ax = plot_eval_heatmap(df_eval=pd.DataFrame([[88.0]])) + assert isinstance(ax, plt.Axes) and len(ax.texts) == 1 + + def test_xtick_rotation(self): + ax = plot_eval_heatmap(df_eval=_df(), xtick_rotation=45) + assert all(t.get_rotation() == 45 for t in ax.get_xticklabels()) + assert all(t.get_ha() == "right" for t in ax.get_xticklabels()) + + def test_ytick_rotation(self): + ax = plot_eval_heatmap(df_eval=_df(), ytick_rotation=90) + assert all(t.get_rotation() == 90 for t in ax.get_yticklabels()) + + def test_figsize_respected(self): + ax = plot_eval_heatmap(df_eval=_df(), figsize=(8, 3)) + assert tuple(ax.figure.get_size_inches()) == (8.0, 3.0) + + def test_nan_cells_render_gracefully(self): + # A sweep table can carry NaN for a config that failed; NaN cells stay blank + # (not annotated) and the call must not raise. + df = pd.DataFrame([[88.0, np.nan], [70.0, 62.0]], + index=["a", "b"], columns=["x", "y"]) + ax = plot_eval_heatmap(df_eval=df) + assert isinstance(ax, plt.Axes) + assert len(ax.texts) == 3 # only the three non-NaN cells are annotated + + def test_integer_grid_accepted(self): + ax = plot_eval_heatmap(df_eval=pd.DataFrame([[88, 70], [60, 90]])) + assert isinstance(ax, plt.Axes) and len(ax.texts) == 4 + + +class TestPlotEvalHeatmapEquivalence: + """KPI #310: equivalent to the hand-built seaborn block it consolidates.""" + + def test_matches_raw_seaborn_block(self): + # The exact block duplicated in gamma-secretase notebook cells 12/25. + df = _df() + fig_raw, ax_raw = plt.subplots() + sns.heatmap(df, ax=ax_raw, vmin=50, vmax=100, cmap="viridis", annot=True, + fmt=".0f", linewidth=0.1, cbar_kws=dict(label="Balanced accuracy [%]")) + ax_raw.tick_params(left=False, bottom=False) + ax_new = plot_eval_heatmap(df_eval=df) + # Same heatmap data, color limits, colormap, and annotations. + raw_mesh, new_mesh = ax_raw.collections[0], ax_new.collections[0] + assert np.allclose(raw_mesh.get_array(), new_mesh.get_array()) + assert raw_mesh.get_clim() == new_mesh.get_clim() + assert raw_mesh.get_cmap().name == new_mesh.get_cmap().name == "viridis" + assert ([t.get_text() for t in ax_raw.texts] + == [t.get_text() for t in ax_new.texts]) + + +class TestPlotEvalHeatmapErrors: + """Negative cases — bad input raises ValueError.""" + + def test_not_a_dataframe(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval="not a frame") + + def test_none_df(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=None) + + def test_empty_df(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=pd.DataFrame()) + + def test_non_numeric_df(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=pd.DataFrame({"a": ["x", "y"], "b": ["u", "v"]})) + + def test_vmin_not_below_vmax(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=_df(), vmin=100, vmax=50) + + def test_bad_xlabel_type(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=_df(), xlabel=123) + + def test_bad_ylabel_type(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=_df(), ylabel=123) + + def test_bad_cbar_label_type(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=_df(), cbar_label=123) + + def test_bad_ytick_rotation_type(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=_df(), ytick_rotation="sideways") + + def test_bad_ax_type(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=_df(), ax="not an ax") + + def test_bad_xtick_rotation_type(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=_df(), xtick_rotation="sideways") + + def test_bad_figsize_type(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=_df(), figsize="wide") + + +class TestPlotEvalHeatmapSquare: + """`square` — evaluation-map cells are equal width and height by default.""" + + def test_square_default_equal_aspect(self): + ax = plot_eval_heatmap(df_eval=_df()) + # square=True makes seaborn force a box (data) aspect of 1.0 -> equal cells. + assert ax.get_aspect() in (1.0, "equal") + + def test_square_false_not_forced(self): + ax = plot_eval_heatmap(df_eval=_df(), square=False) + assert ax.get_aspect() not in (1.0, "equal") + + def test_square_bad_type(self): + with pytest.raises(ValueError): + plot_eval_heatmap(df_eval=_df(), square="yes")