Skip to content

Commit 281be9d

Browse files
Alekh MekaAlekh Meka
authored andcommitted
Updated to generate results w/ average + standard dev
1 parent 1e6bb81 commit 281be9d

File tree

1 file changed

+38
-9
lines changed

1 file changed

+38
-9
lines changed

artifacts/experiments/RQ4/generateResults.py

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,12 @@
33
import os
44
import datetime
55
import re
6+
7+
import numpy as np
68
import pandas as pd
79

810
BASE_RESULT_DIR = "artifacts/results/"
11+
PROJECTS = ["convex", "jflex", "mph-table"]
912

1013
def obtain_stats_directories(results_directory: str) -> list[str]:
1114
directory_tree = [x for x in os.walk(results_directory)] # os.walk returns a tuple with structure (directory, subdirectories, files)
@@ -39,7 +42,7 @@ def evaluate_directories(project_name: str, results_directory: str, directories:
3942
def retrieve_time_elapsed(directory_path: str, valid_htmls: list[str]) -> dict[str, str]:
4043
times_elapsed_dict = {}
4144
for html_file in valid_htmls:
42-
property_name = "Property - " + html_file.replace(".html", "").replace("#", "")
45+
property_name = html_file.replace(".html", "").replace("#", "-")
4346
file_path = directory_path + html_file
4447
with open(file_path) as f:
4548
contents = f.read()
@@ -49,13 +52,37 @@ def retrieve_time_elapsed(directory_path: str, valid_htmls: list[str]) -> dict[s
4952
times_elapsed_dict[property_name] = round(float(time_elapsed), 2)
5053
return times_elapsed_dict
5154

52-
def generate_report(project_name: str, final_stats: dict[str, pd.Series], final_fixed_stats: dict[str, dict]):
55+
def generate_report_stats(stat_values: dict[str, dict]) -> dict[str, str]:
56+
first_iteration = stat_values[next(iter(stat_values))]
57+
# stage a dictionary to contain an array of times for ea property
58+
property_dict = {}
59+
for key in first_iteration:
60+
property_dict[key] = []
61+
62+
# populate the dictionary with our results
63+
for key, val in stat_values.items():
64+
for prop, time in val.items():
65+
property_array = property_dict.get(prop)
66+
property_array.append(time)
67+
68+
# generate mean, standard deviation and populate our final object
69+
property_stats_dict = {}
70+
for key, val in property_dict.items():
71+
np_array = np.array(val)
72+
mean = round(np_array.mean(), 2)
73+
standard_dev = round(np_array.std(), 2)
74+
property_stats_dict[key] = str(mean) + " \u00B1 " + str(standard_dev)
75+
return property_stats_dict
76+
77+
def generate_report(project_name: str, final_stats: dict[str, str], final_fixed_stats: dict[str, str]):
5378
report_name = "artifacts/output/rq4_" + project_name + ".csv"
54-
tex_file = report_name.replace(".csv", ".tex")
55-
final_stats.update(final_fixed_stats)
56-
df = pd.DataFrame(final_stats)
79+
final_report_dict = {}
80+
final_report_dict[project_name] = final_stats
81+
final_report_dict[project_name + "-fixed"] = final_fixed_stats
82+
df = pd.DataFrame(final_report_dict)
5783
df.to_csv(path_or_buf=report_name)
58-
df.style.to_latex(buf=tex_file)
84+
85+
5986

6087
def main():
6188
if not sys.argv[1]:
@@ -67,14 +94,16 @@ def main():
6794
# vanilla
6895
stats_directories = obtain_stats_directories(results_directory=results_directory)
6996
evaluated_runs = filter_for_recent_results(project_name=project_name, stats_directories=stats_directories)
70-
final_stats = evaluate_directories(project_name=project_name, results_directory=results_directory, directories=evaluated_runs)
97+
raw_stats = evaluate_directories(project_name=project_name, results_directory=results_directory, directories=evaluated_runs)
7198

7299
# fixed
73100
fixed_stats_directories = obtain_stats_directories(results_directory=fixed_results_directory)
74101
evaluated_fixed_runs = filter_for_recent_results(project_name=project_name, stats_directories=fixed_stats_directories)
75-
final_fixed_stats = evaluate_directories(project_name=fixed_project_name, results_directory=fixed_results_directory, directories=evaluated_fixed_runs)
102+
fixed_raw_stats = evaluate_directories(project_name=fixed_project_name, results_directory=fixed_results_directory, directories=evaluated_fixed_runs)
76103

77-
# final report
104+
# obtain mean/st dev
105+
final_stats = generate_report_stats(stat_values=raw_stats)
106+
final_fixed_stats = generate_report_stats(stat_values=fixed_raw_stats)
78107
generate_report(project_name=project_name, final_stats=final_stats, final_fixed_stats=final_fixed_stats)
79108

80109

0 commit comments

Comments
 (0)