LCOV - code coverage report
Current view: top level - src/pairinteraction/visualization - colormaps.py (source / functions) Hit Total Coverage
Test: coverage.info Lines: 13 13 100.0 %
Date: 2026-08-14 15:26:44 Functions: 1 1 100.0 %

          Line data    Source code
       1             : # SPDX-FileCopyrightText: 2025 PairInteraction Developers
       2             : # SPDX-License-Identifier: LGPL-3.0-or-later
       3           1 : from __future__ import annotations
       4             : 
       5           1 : from typing import TYPE_CHECKING
       6             : 
       7           1 : import matplotlib.pyplot as plt
       8           1 : import numpy as np
       9           1 : from matplotlib.colors import ListedColormap
      10             : 
      11             : if TYPE_CHECKING:
      12             :     from matplotlib import colors
      13             : 
      14             : 
      15           1 : def _colormap_add_transparency(cmap: colors.Colormap, min_value: float = 1e-4) -> colors.ListedColormap:
      16             :     """Add transparency to a colormap.
      17             : 
      18             :     This function returns a copy of the given colormap to include an alpha channel
      19             :     that represents transparency based on the specified minimum overlap.
      20             : 
      21             :     Args:
      22             :         cmap: The colormap to modify.
      23             :         min_value: Reference value, at which the alpha channel should be 0.
      24             :             This also shifts the alpha channel for larger values.
      25             :             Defaults to 1e-4.
      26             : 
      27             :     Returns:
      28             :         A ListedColormap with transparency applied.
      29             : 
      30             :     """
      31           1 :     cmap_with_alpha = cmap(np.arange(cmap.N))
      32             : 
      33           1 :     values = np.linspace(0, 1, cmap.N)
      34           1 :     alpha = 1 - np.log(values[1:]) / np.log(min_value)
      35           1 :     cmap_with_alpha[0, -1] = 0
      36           1 :     cmap_with_alpha[1:, -1] = np.clip(alpha, 0, 1)
      37             : 
      38           1 :     return ListedColormap(cmap_with_alpha)
      39             : 
      40             : 
      41           1 : alphamagma = _colormap_add_transparency(plt.get_cmap("magma_r"), min_value=1e-4)

Generated by: LCOV version 1.16