Module ml4opf.viz
Visualization utilities (plots & tables)
Sub-modules
ml4opf.viz.plot
ml4opf.viz.report
-
Create a report evaluating a model or comparing multiple models.
ml4opf.viz.table
Functions
def interp_curves(convergence_curves: list['DataFrame'],
column: str,
max_time: int | None = None,
n_time_steps: int = 2000,
kind: str = 'previous',
fill_value: str | None = None) ‑> tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray]-
Interpolate convergence curves to have the same start/end/number of time steps.
Args
convergence_curves
:list[DataFrame]
- List of DataFrames with columns 'time' and
column
column
:str
- Column to interpolate. All convergence_curves must have this column.
max_time
:int
, optional- Maximum time to interpolate to. If None, use the maximum time of all convergence curves. Default: None
n_time_steps
:int
, optional- Number of time steps to interpolate to. Default: 2000
kind
:str
, optional- Interpolation kind. Default: 'previous'
fill_value
:str
, optional- Fill value for time steps before the first point. If None, return None for any time steps before the first point and the last point for any time steps after the last point. Default: None
Returns
tuple[np.ndarray, np.ndarray, np.ndarray]
- Interpolated times, means, and standard deviations
def make_stats_df(data: dict[str, torch.Tensor], round_to: int | None = 5)
-
Make a pandas DataFrame with mean/max/min/std stats.
Args
data
:dict[str, Tensor]
- Each tensor should be of shape [batch, 1]
round_to
:Optional[int]
- Number of decimals to round each Tensor to (default: 5)
Returns
DataFrame
- mean/max/min/std along batch dimension.
When used with
DataFrame.to_latex()
, the output can be copied directly into a LaTeX table. def plot_pca(tensor: torch.Tensor,
label: str,
color_by: torch.Tensor | None = None,
logy: bool = False,
logx: bool = False,
xlim: tuple[float, float] = None,
ylim: tuple[float, float] = None,
subplots_kwargs: dict = None,
scatter_kwargs: dict = None,
show: bool = True)-
Plot PCA of a 2D tensor.
Args
tensor
:Tensor
- Tensor of shape [batch, n_features]
label
:str
- Label for the plot
color_by
:Tensor
, optional- Tensor of shape [batch, 1] to color the points by. Default: None
logy
:bool
, optional- Whether to use a log scale for the y-axis. Default: False
logx
:bool
, optional- Whether to use a log scale for the x-axis. Default: False
xlim
:tuple[float, float]
, optional- X-axis limits. Default: None
ylim
:tuple[float, float]
, optional- Y-axis limits. Default: None
subplots_kwargs
:dict
, optional- Keyword arguments for plt.subplots(). Default: {'figsize':(8,5), 'dpi':300}
scatter_kwargs
:dict
, optional- Keyword arguments for ax.scatter(). Default: {'marker': '.'}
show
:bool
, optional- Whether to show the plot. Default: True
def plot_wrt_total_load(pd: torch.Tensor,
metrics: list[torch.Tensor],
labels: list[str],
title: str,
ylabel: str,
logy: bool = False,
xlim: tuple[float, float] = None,
ylim: tuple[float, float] = None,
subplots_kwargs: dict = None,
plot_kwargs: dict = None,
legend: bool = True,
show: bool = True)-
Plot metrics vs total active load
Args
pd
:Tensor
- Active load tensor of shape [batch, n_loads]. pd.sum(dim=1) becomes the x-axis.
metrics
:list[Tensor]
- List of metrics tensors of shape [batch, 1] <- one number per sample
labels
:list[str]
, optional- List of labels for each metric
title
:str
, optional- Plot title
ylabel
:str
, optional- Y-axis label
logy
:bool
, optional- Whether to use a log scale for the y-axis. Default: False
xlim
:tuple[float, float]
, optional- X-axis limits. Default: None
ylim
:tuple[float, float]
, optional- Y-axis limits. Default: None
subplots_kwargs
:dict
, optional- Keyword arguments for plt.subplots(). Default: {'figsize':(8,5), 'dpi':300}
plot_kwargs
:dict
, optional- Keyword arguments for ax.plot() (same for every metric). Default: {'ls':'', 'marker': '.', 'ms':0.75}
show
:bool
, optional- Whether to show the plot. Default: True