| @@ -0,0 +1,91 @@ | |||||
| #!/usr/bin/env python3 | |||||
| # -*- coding: utf-8 -*- | |||||
| """ | |||||
| Created on Tue Apr 14 16:57:18 2020 | |||||
| @author: ljia | |||||
| """ | |||||
| import pandas as pd | |||||
| import numpy as np | |||||
| import os | |||||
| import math | |||||
| def summarize_results_of_random_edit_costs(data_dir, ds_name, gkernel): | |||||
| sod_sm_list = [] | |||||
| sod_gm_list = [] | |||||
| dis_k_sm_list = [] | |||||
| dis_k_gm_list = [] | |||||
| dis_k_min_gi = [] | |||||
| time_total_list = [] | |||||
| mge_dec_order_list = [] | |||||
| mge_inc_order_list = [] | |||||
| # get results from .csv. | |||||
| file_name = data_dir + 'results_summary.' + ds_name + '.' + gkernel + '.csv' | |||||
| try: | |||||
| df = pd.read_csv(file_name) | |||||
| except FileNotFoundError: | |||||
| return | |||||
| for index, row in df.iterrows(): | |||||
| if row['target'] == 'all' and row['fit method'] == 'random': | |||||
| if not math.isnan(float(row['SOD SM'])): | |||||
| sod_sm_list.append(float(row['SOD SM'])) | |||||
| if not math.isnan(float(row['SOD GM'])): | |||||
| sod_gm_list.append(float(row['SOD GM'])) | |||||
| if not math.isnan(float(row['dis_k SM'])): | |||||
| dis_k_sm_list.append(float(row['dis_k SM'])) | |||||
| if not math.isnan(float(row['dis_k GM'])): | |||||
| dis_k_gm_list.append(float(row['dis_k GM'])) | |||||
| if not math.isnan(float(row['min dis_k gi'])): | |||||
| dis_k_min_gi.append(float(row['min dis_k gi'])) | |||||
| if not math.isnan(float(row['time total'])): | |||||
| time_total_list.append(float(row['time total'])) | |||||
| if 'mge num decrease order' in row: | |||||
| mge_dec_order_list.append(int(row['mge num decrease order'])) | |||||
| if 'mge num increase order' in row: | |||||
| mge_inc_order_list.append(int(row['mge num increase order'])) | |||||
| # return if no results. | |||||
| if len(sod_sm_list) == 0: | |||||
| return | |||||
| # construct output results. | |||||
| op = {} | |||||
| op['measure'] = ['max', 'min', 'mean'] | |||||
| op['SOD SM'] = [np.max(sod_sm_list), np.min(sod_sm_list), np.mean(sod_sm_list)] | |||||
| op['SOD GM'] = [np.max(sod_gm_list), np.min(sod_gm_list), np.mean(sod_gm_list)] | |||||
| op['dis_k SM'] = [np.max(dis_k_sm_list), np.min(dis_k_sm_list), np.mean(dis_k_sm_list)] | |||||
| op['dis_k GM'] = [np.max(dis_k_gm_list), np.min(dis_k_gm_list), np.mean(dis_k_gm_list)] | |||||
| op['min dis_k gi'] = [np.max(dis_k_min_gi), np.min(dis_k_min_gi), np.mean(dis_k_min_gi)] | |||||
| op['time total'] = [np.max(time_total_list), np.min(time_total_list), np.mean(time_total_list)] | |||||
| if len(mge_dec_order_list) > 0: | |||||
| op['mge num decrease order'] = [np.max(mge_dec_order_list), np.min(mge_dec_order_list), np.mean(mge_dec_order_list)] | |||||
| if len(mge_inc_order_list) > 0: | |||||
| op['mge num increase order'] = [np.max(mge_inc_order_list), np.min(mge_inc_order_list), np.mean(mge_inc_order_list)] | |||||
| df = pd.DataFrame(data=op) | |||||
| # write results to .csv | |||||
| df.to_csv(data_dir + 'summary_for_random_edit_costs.csv', index=False, header=True) | |||||
| def compute_for_all_experiments(data_dir): | |||||
| dir_list = [i for i in os.listdir(data_dir) if os.path.isdir(data_dir + i)] | |||||
| for dir_name in dir_list: | |||||
| sp_tmp = dir_name.split('.') | |||||
| ds_name = sp_tmp[0].strip('[error]') | |||||
| gkernel = sp_tmp[1] | |||||
| summarize_results_of_random_edit_costs(data_dir + dir_name + '/', | |||||
| ds_name, gkernel) | |||||
| if os.path.exists(data_dir + dir_name + '/update_order/'): | |||||
| summarize_results_of_random_edit_costs(data_dir + dir_name + '/update_order/', | |||||
| ds_name, gkernel) | |||||
| if __name__ == '__main__': | |||||
| # data_dir = '../results/xp_median_preimage.update_order/' | |||||
| root_dir_tnz = '../../results/CRIANN/xp_median_preimage.init10/' | |||||
| root_dir_ntnz = '../../results/CRIANN/xp_median_preimage.init10.no_triangle_rule/' | |||||
| root_dir_tz = '../../results/CRIANN/xp_median_preimage.init10.triangle_rule.allow_zeros/' | |||||
| root_dir_ntz = '../../results/CRIANN/xp_median_preimage.init10.no_triangle_rule.allow_zeros/' | |||||
| data_dirs = [root_dir_tnz, root_dir_ntnz, root_dir_tz, root_dir_ntz] | |||||
| for data_dir in data_dirs: | |||||
| compute_for_all_experiments(data_dir) | |||||