""" Utilities to handle different operations """ import os import pandas as pd import great_tables as gt from collections import OrderedDict import tomli import numpy as np with open(os.path.abspath("../../config/config.toml"), "rb") as file_config: config = tomli.load(file_config) def get_greattable_as_html(df: pd.DataFrame) -> gt.GT: """ Get the great_table as HTML from Pandas dataframe. Args: df (pd.DataFrame): Dataframe to rendera as a table. Returns: gt.GT: Table in HTML format. """ table_great_table = gt.GT(data=df) return table_great_table.as_raw_html() def populate_summary_table_ARL0_k(summary_table_df_ARL0_k: pd.DataFrame, h) -> gt.GT: """ Populate ARLTheoretical.summary_table_df_ARL0_k. Args: summary_table_df_ARL0_k (pd.DataFrame): Dataframe of ARL0 and its respective values of k. h (float): Normalized threshold. Returns: gt.GT: Table of ARL0 and k in HTML format. """ table_great_table_ARL0_k = ( gt.GT(summary_table_df_ARL0_k) .tab_header( title=gt.html( f"Reference Values for an intended ARL0 with normalized threshold, h = {h}" ) ) .data_color( palette=[ config["color"]["blue_005"], config["color"]["blue_020"], config["color"]["blue_040"], ] ) ) if config["control"]["save_figure"] == "true": table_great_table_ARL0_k.save( os.path.abspath( os.path.join( "../../", config["path_output"]["path_figure"], "fig_table_h_arl0_k.png" ) ), scale=3, window_size=(1200, 1600), ) print( "Created", os.path.abspath( os.path.join( "../../", config["path_output"]["path_figure"], "fig_table_h_arl0_k.png" ) ), ) return table_great_table_ARL0_k.as_raw_html() def populate_summary_table_ARL1_k( summary_table_df_ARL1_k: pd.DataFrame, dict_ARL0_k: OrderedDict, h ) -> gt.GT: """ Populate Multiindex table specific for ARLTheoretical.summary_table_df_ARL1_k Args: summary_table_df_ARL1_k (pd.DataFrame): Dataframe with ARL1 and k values. dict_ARL0_k (OrderedDict): Data Dictionary with the mapping between ARL0 and k. h (float): Normalized threshold. Returns: gt.GT: Table for ARL1 and k in HTML format. """ list_ARL_0 = [str(ARL_0) for ARL_0 in dict_ARL0_k.keys()] list_k = ["{:.2f}".format(k) for k in dict_ARL0_k.values()] format_k_ARL_0 = lambda k, ARL_0: gt.html(str(k) + "
" + "(" + str(ARL_0) + ")") column_label_dict = { ARL_0: format_k_ARL_0(k, ARL_0) for ARL_0, k in zip(list_ARL_0, list_k) } table_great_table_ARL1_k = ( gt.GT(summary_table_df_ARL1_k) .tab_header( title=gt.html( f"Estimate of steady state ARL (ARL1) based on the computed reference values and intended zero-state ARL (ARL0) with normalized threshold, h = {h})" ) ) .tab_stubhead(label="Shift in mean") .tab_spanner( label=gt.html("Reference Values
(Intended ARL0)"), columns=list_ARL_0, ) .cols_move_to_start(columns=["Shift in mean"]) .cols_label(**column_label_dict) .data_color( palette=[ config["color"]["blue_005"], config["color"]["blue_020"], config["color"]["blue_040"], ] ) ) if config["control"]["save_figure"] == "true": table_great_table_ARL1_k.save( os.path.abspath( os.path.join( "../../", config["path_output"]["path_figure"], "fig_table_h_k_arl1.png" ) ), scale=3, window_size=(1200, 1600), ) print( "Created", os.path.abspath( os.path.join( "../../", config["path_output"]["path_figure"], "fig_table_h_k_arl1.png" ) ), ) return table_great_table_ARL1_k.as_raw_html()