def update_error_diff()

in benchmarks/dash_app/app.py [0:0]


def update_error_diff(start_date, end_date, funcs):
    if type(funcs) is str:
        funcs = [funcs]
    try:
        filter_df = func_df[func_df["mode"] == "1pc"]
        func_df_cpu = filter_df[filter_df["device"] == "cpu"]
        start_df = func_df_cpu[func_df_cpu["date"] == start_date]
        end_df = func_df_cpu[func_df_cpu["date"] == end_date]
    except KeyError:
        filter_df = pd.DataFrame()

    if filter_df.empty:
        return render_emtpy_figure()

    fig = make_subplots(
        rows=len(funcs), cols=1, specs=[[{"type": "domain"}] for _ in range(len(funcs))]
    )
    for i, func in enumerate(funcs):
        error = end_df[end_df["function"] == func]["total abs error"]
        error_prev = start_df[start_df["function"] == func]["total abs error"]
        func_text = func.capitalize()

        fig.add_trace(
            go.Indicator(
                mode="number+delta",
                value=float(error),
                title={
                    "text": f"{func_text}<br><span style='font-size:0.8em;color:gray'>"
                    + "total abs error</span><br>"
                },
                delta={
                    "reference": float(error_prev),
                    "relative": True,
                    "increasing": {"color": "#ff4236"},
                    "decreasing": {"color": "#008000"},
                },
            ),
            row=i + 1,
            col=1,
        )
    fig.update_layout(height=300 * len(funcs))

    return fig