| @@ -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) | |||