| """ |
| 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 ARL<sub>0</sub> 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) + "<br>" + "(" + 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 (ARL<sub>1</sub>) based on the computed reference values and intended zero-state ARL (ARL<sub>0</sub>) with normalized threshold, h = {h})" |
| ) |
| ) |
| .tab_stubhead(label="Shift in mean") |
| .tab_spanner( |
| label=gt.html("Reference Values<br>(Intended ARL<sub>0</sub>)"), |
| 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() |
|
|