In [ ]:
from predict import load_test_results, TestResults
from validate import join_dict_to_table
import netCDF4
from path import Path
from IPython.display import display
from functools import reduce, partial
from scipy.stats.mstats import gmean
In [ ]:
TESTS_RESULTS_DIR = "/home/shibbiry/Dropbox/documents/msu/clust_top/test_results/"
In [ ]:
def dataset_to_big_table(test_results: TestResults) -> pd.DataFrame:
"""
Returns DataFrame with columns:
msg_len, node1, node2, ping_mean, ping_median, ping_std_dev
"""
tables = (
join_dict_to_table(getattr(test_results, attr)).rename(columns={"value": column})
for attr, column in [
("medians", "ping_median"),
("means", "ping_mean"),
("std_dev", "ping_std_dev")
]
)
return reduce(partial(pd.merge, on=["msg_len", "node1", "node2"]), tables)
In [ ]:
datasets = [load_test_results(dir_) for dir_ in Path(TESTS_RESULTS_DIR).dirs()]
big_tables = [dataset_to_big_table(dataset) for dataset in datasets]
for table in big_tables:
table["ping_rel_std_dev"] = table["ping_std_dev"] / table["ping_mean"]
ping_rel_std_dev_geometric_means = pd.DataFrame(
(gmean(table["ping_rel_std_dev"].dropna()) for table in big_tables),
columns=["geom_mean_of_ping_rel_std_dev"]
) \
.assign(name=[dataset.name for dataset in datasets])
In [ ]:
ping_rel_std_dev_geometric_means
In [ ]:
print(ping_rel_std_dev_geometric_means.set_index("name").sort_index().to_latex())