Overview

  • Application : feelpp_toolbox_heat

  • Use_Case : ThermalBridgesENISO10211

  • Machine : gaya

from numpy import nan
from feelpp.benchmarking.report.base.controller import Controller
from feelpp.benchmarking.report.base.model import AggregationModel
from feelpp.benchmarking.report.base.view import View

model=AggregationModel.fromDataframe({'performance_variable': {0: '', 1: '', 2: '', 3: ''}, 'value': {0: None, 1: None, 2: None, 3: None}, 'unit': {0: '', 1: '', 2: '', 3: ''}, 'reference': {0: None, 1: None, 2: None, 3: None}, 'thres_lower': {0: None, 1: None, 2: None, 3: None}, 'thres_upper': {0: None, 1: None, 2: None, 3: None}, 'status': {0: None, 1: None, 2: None, 3: None}, 'absolute_error': {0: None, 1: None, 2: None, 3: None}, 'testcase_time_run': {0: 10.292098760604858, 1: 19.568920135498047, 2: 28.26854634284973, 3: 25.485793590545654}, 'environment': {0: 'hpcx', 1: 'hpcx', 2: 'hpcx', 3: 'hpcx'}, 'platform': {0: 'apptainer', 1: 'apptainer', 2: 'apptainer', 3: 'apptainer'}, 'nb_tasks': {0: {'tasks': 512, 'tasks_per_node': 128, 'exclusive_access': True}, 1: {'tasks': 384, 'tasks_per_node': 128, 'exclusive_access': True}, 2: {'tasks': 256, 'tasks_per_node': 128, 'exclusive_access': True}, 3: {'tasks': 128, 'tasks_per_node': 128, 'exclusive_access': True}}, 'meshes': {0: 'M1', 1: 'M1', 2: 'M1', 3: 'M1'}, 'discretization': {0: 'P1', 1: 'P1', 2: 'P1', 3: 'P1'}, 'solver': {0: 'gamg', 1: 'gamg', 2: 'gamg', 3: 'gamg'}, 'date': {0: '2024-12-13T13:29:34+0100', 1: '2024-12-13T13:29:34+0100', 2: '2024-12-13T13:29:34+0100', 3: '2024-12-13T13:29:34+0100'}})
view=View([{'title': 'Execution by use case', 'plot_types': ['scatter'], 'transformation': 'performance', 'names': ['performance'], 'xaxis': {'parameter': 'date', 'label': 'Date'}, 'secondary_axis': {'parameter': 'hsize', 'label': 'h size'}, 'color_axis': {'parameter': 'nb_tasks.tasks', 'label': 'Tasks'}, 'yaxis': {'label': 'Execution time (s)'}, 'aggregations': [{'column': 'performance_variable', 'agg': 'sum'}], 'variables': []}, {'title': 'Execution by environment (latest benchmarks)', 'plot_types': ['stacked_bar'], 'transformation': 'performance', 'names': ['performance'], 'xaxis': {'parameter': 'nb_tasks.tasks', 'label': 'Tasks'}, 'secondary_axis': {'parameter': 'environment', 'label': 'Environment'}, 'color_axis': {'parameter': 'performance_variable', 'label': 'Step'}, 'yaxis': {'label': 'Execution time (s)'}, 'aggregations': [{'column': 'date', 'agg': 'max'}], 'variables': []}])
controller=Controller(model,view)

for fig in controller.generateAll():
    fig.show()
---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
File :1
----> 1 for fig in controller.generateAll():
      2     import sys; fig.write_html(file=sys.stdout, include_plotlyjs=False)

File /opt/build/repo/.venv/lib/python3.8/site-packages/feelpp/benchmarking/report/base/controller.py:20, in Controller.generateAll(self)
     18 for plot_config in self.view.plots_config:
     19     for plot in FigureFactory.create(plot_config):
---> 20         yield plot.createFigure(self.model.master_df)

File /opt/build/repo/.venv/lib/python3.8/site-packages/feelpp/benchmarking/report/figureFactory.py:107, in ScatterFigure.createFigure(self, df)
    100 def createFigure(self,df):
    101     """ Creates a scatter plot from the master dataframe
    102     Args:
    103         df (pd.DataFrame). The master dataframe containing all reframe test data
    104     Returns:
    105         go.Figure: Plotly figure corresponding to the Scatter type
    106     """
--> 107     df = self.transformation_strategy.calculate(df)
    109     if isinstance(df.index,MultiIndex):
    110         return self.createAnimation(df)

File /opt/build/repo/.venv/lib/python3.8/site-packages/feelpp/benchmarking/report/strategies.py:48, in PerformanceStrategy.calculate(self, df)
     46                 pivot = pivot[pivot[aggregation.column].astype(str) == aggregation.agg.split(":")[-1]]
     47             else:
---> 48                 pivot = pivot.groupby(agg_columns)["value"].agg(aggregation.agg).reset_index()
     50 return pivot.pivot(index=index,values="value",columns=self.dimensions["color_axis"])

File /opt/build/repo/.venv/lib/python3.8/site-packages/pandas/core/frame.py:8252, in DataFrame.groupby(self, by, axis, level, as_index, sort, group_keys, observed, dropna)
   8249     raise TypeError("You have to supply one of 'by' and 'level'")
   8250 axis = self._get_axis_number(axis)
-> 8252 return DataFrameGroupBy(
   8253     obj=self,
   8254     keys=by,
   8255     axis=axis,
   8256     level=level,
   8257     as_index=as_index,
   8258     sort=sort,
   8259     group_keys=group_keys,
   8260     observed=observed,
   8261     dropna=dropna,
   8262 )

File /opt/build/repo/.venv/lib/python3.8/site-packages/pandas/core/groupby/groupby.py:931, in GroupBy.__init__(self, obj, keys, axis, level, grouper, exclusions, selection, as_index, sort, group_keys, observed, dropna)
    928 self.dropna = dropna
    930 if grouper is None:
--> 931     grouper, exclusions, obj = get_grouper(
    932         obj,
    933         keys,
    934         axis=axis,
    935         level=level,
    936         sort=sort,
    937         observed=observed,
    938         dropna=self.dropna,
    939     )
    941 self.obj = obj
    942 self.axis = obj._get_axis_number(axis)

File /opt/build/repo/.venv/lib/python3.8/site-packages/pandas/core/groupby/grouper.py:985, in get_grouper(obj, key, axis, level, sort, observed, validate, dropna)
    983         in_axis, level, gpr = False, gpr, None
    984     else:
--> 985         raise KeyError(gpr)
    986 elif isinstance(gpr, Grouper) and gpr.key is not None:
    987     # Add key to exclusions
    988     exclusions.add(gpr.key)

KeyError: 'nb_tasks.tasks'