|
""" |
|
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() |
|
|