def run_dataset(paras): dataset, sparsity, trade_off, learning_rate, max_iter, epsilon, write_to_dir, tao, num_nodes, deg, normalize = paras if not write_to_dir: logger = logging.getLogger('fei') else: log_fn = '{}_nodes_{}_deg_{}_sparsity_{:d}_trade_{}_lr_{}_{}_parallel.txt'.format( DATASET, num_nodes, deg, sparsity, trade_off, learning_rate, normalize) if os.path.isfile(os.path.join(write_to_dir, log_fn)): print('file exist !!!') return logger = logging.getLogger(log_fn) formatter = logging.Formatter('') file_handler = logging.FileHandler(filename=os.path.join( write_to_dir, log_fn), mode='w') file_handler.setFormatter(formatter) logger.addHandler(file_handler) all_performance = [] logger.debug('-' * 5 + ' setting ' + '-' * 5) logger.debug('sparsity: {:d}'.format(sparsity)) logger.debug('learning rate: {:.5f}'.format(learning_rate)) logger.debug('trade off: {:.5f}'.format(trade_off)) logger.debug('tao: {:d}'.format(tao)) for i, instance in enumerate(dataset): logger.debug('instance: {:d}'.format(i)) # normalize = True if normalize: logger.debug('feature normalized') instance['features'] = instance['features'] / np.max( instance['features']) opt_x, run_time = optimize(instance, sparsity, trade_off, learning_rate, max_iter, epsilon, logger=None, tao=tao) logger.debug('run time: {:.5f}'.format(run_time)) raw_pred_subgraph = np.nonzero(opt_x)[0] prec, rec, fm, iou = evaluate_block(instance['true_subgraph'], raw_pred_subgraph) logger.debug('-' * 5 + ' performance of raw prediction ' + '-' * 5) logger.debug('precision: {:.5f}'.format(prec)) logger.debug('recall : {:.5f}'.format(rec)) logger.debug('f-measure: {:.5f}'.format(fm)) logger.debug('iou : {:.5f}'.format(iou)) refined_pred_subgraph = post_process_block(instance['graph'], raw_pred_subgraph, dataset=DATASET) refined_prec, refined_rec, refined_fm, refined_iou = evaluate_block( instance['true_subgraph'], refined_pred_subgraph) logger.debug('-' * 5 + ' performance of refined prediction ' + '-' * 5) logger.debug('refined precision: {:.5f}'.format(refined_prec)) logger.debug('refined recall : {:.5f}'.format(refined_rec)) logger.debug('refined f-measure: {:.5f}'.format(refined_fm)) logger.debug('refined iou : {:.5f}'.format(refined_iou)) all_performance.append((prec, rec, fm, iou, refined_prec, refined_rec, refined_fm, refined_iou, run_time)) all_performance = np.array(all_performance) avg_performance = np.mean(all_performance, axis=0) logger.debug('-' * 5 + ' average performance ' + '-' * 5) logger.debug('average presision: {:.5f}'.format(avg_performance[0])) logger.debug('average recall : {:.5f}'.format(avg_performance[1])) logger.debug('average f-measure: {:.5f}'.format(avg_performance[2])) logger.debug('average iou : {:.5f}'.format(avg_performance[3])) logger.debug('avg refined prec : {:.5f}'.format(avg_performance[4])) logger.debug('avg refined rec : {:.5f}'.format(avg_performance[5])) logger.debug('avg refined fm : {:.5f}'.format(avg_performance[6])) logger.debug('avg refined iou : {:.5f}'.format(avg_performance[7])) logger.debug('average run time : {:.5f}'.format(avg_performance[8]))
def run_dataset(paras): dataset, sparsity, threshold, trade_off, learning_rate, max_iter, epsilon, write_to_dir = paras # print log setting if not write_to_dir: logger = logging.getLogger('fei') else: log_fn = '{}_sparsity_{:d}_threshold_{}_trade_off_{}_lr_{}.txt'.format( DATASET, sparsity, threshold, trade_off, learning_rate) if os.path.isfile(os.path.join(write_to_dir, log_fn)): print('file exists !!!') return logger = logging.getLogger(log_fn) formatter = logging.Formatter('') file_handler = logging.FileHandler(filename=os.path.join( write_to_dir, log_fn), mode='w') file_handler.setFormatter(formatter) logger.addHandler(file_handler) all_performance = [] logger.debug('-' * 5 + ' setting ' + '-' * 5) logger.debug('sparsity: {:d}'.format(sparsity)) logger.debug('learning rate: {:.5f}'.format(learning_rate)) logger.debug('trade off: {:.5f}'.format(trade_off)) for i, instance in enumerate(dataset): logger.debug('instance: {:d}'.format(i)) opt_x, opt_y, run_time = optimize(instance, sparsity, threshold, trade_off, learning_rate, max_iter, epsilon, logger=logger) logger.debug('run time: {:.5f}'.format(run_time)) second_graph = instance['second_graph'] raw_pred_subgraph_x = np.nonzero(opt_x)[0] x_prec, x_rec, x_fm, x_iou = evaluate_block(instance['true_subgraph'], raw_pred_subgraph_x) logger.debug('-' * 5 + ' performance of x prediction ' + '-' * 5) logger.debug('precision: {:.5f}'.format(x_prec)) logger.debug('recall : {:.5f}'.format(x_rec)) logger.debug('f-measure: {:.5f}'.format(x_fm)) logger.debug('iou : {:.5f}'.format(x_iou)) logger.debug('raw x density second graph: {:.5f}'.format( nx.density(nx.subgraph(second_graph, list(raw_pred_subgraph_x))) )) # note, calculating density is conducted on the second graph raw_pred_subgraph_y = np.nonzero(opt_y)[0] print('length y', len(raw_pred_subgraph_y)) y_prec, y_rec, y_fm, y_iou = evaluate_block(instance['true_subgraph'], raw_pred_subgraph_y) logger.debug('-' * 5 + ' performance of y prediction ' + '-' * 5) logger.debug('precision: {:.5f}'.format(y_prec)) logger.debug('recall : {:.5f}'.format(y_rec)) logger.debug('f-measure: {:.5f}'.format(y_fm)) logger.debug('iou : {:.5f}'.format(y_iou)) logger.debug('raw y density second graph: {:.5f}'.format( nx.density(nx.subgraph(second_graph, list(raw_pred_subgraph_y))))) # connected in first graph connected_pred_subgraph_x = post_process_block( instance['first_graph'], raw_pred_subgraph_x, dataset=DATASET ) # note, connected operation is conducted on the first graph, raw_x is necessarily connected since some entries may be zeros connected_x_prec, connected_x_rec, connected_x_fm, connected_x_iou = evaluate_block( instance['true_subgraph'], connected_pred_subgraph_x) logger.debug('-' * 5 + ' performance of connected x prediction ' + '-' * 5) logger.debug('refined precision: {:.5f}'.format(connected_x_prec)) logger.debug('refined recall : {:.5f}'.format(connected_x_rec)) logger.debug('refined f-measure: {:.5f}'.format(connected_x_fm)) logger.debug('refined iou : {:.5f}'.format(connected_x_iou)) logger.debug('connected x density second graph: {:.5f}'.format( nx.density(nx.subgraph(second_graph, connected_pred_subgraph_x)))) connected_pred_subgraph_y = post_process_block(instance['first_graph'], raw_pred_subgraph_y, dataset=DATASET) connected_y_prec, connected_y_rec, connected_y_fm, connected_y_iou = evaluate_block( instance['true_subgraph'], connected_pred_subgraph_y) logger.debug('-' * 5 + ' performance of connected y prediction ' + '-' * 5) logger.debug('refined precision: {:.5f}'.format(connected_y_prec)) logger.debug('refined recall : {:.5f}'.format(connected_y_rec)) logger.debug('refined f-measure: {:.5f}'.format(connected_y_fm)) logger.debug('refined iou : {:.5f}'.format(connected_y_iou)) logger.debug('refined y density second graph: {:.5f}'.format( nx.density(nx.subgraph(second_graph, connected_pred_subgraph_y)))) # print(type(raw_pred_subgraph_x)) # print(type(raw_pred_subgraph_y)) intersect_pred_subgraph = set(list(raw_pred_subgraph_x)) & set( list(raw_pred_subgraph_y)) intersect_prec, intersect_rec, intersect_fm, intersect_iou = evaluate_block( instance['true_subgraph'], intersect_pred_subgraph) logger.debug('-' * 5 + ' intersect performance of prediction ' + '-' * 5) logger.debug('precision: {:.5f}'.format(intersect_prec)) logger.debug('recall : {:.5f}'.format(intersect_rec)) logger.debug('f-measure: {:.5f}'.format(intersect_fm)) logger.debug('iou : {:.5f}'.format(intersect_iou)) logger.debug('intersect density second graph: {:.5f}'.format( nx.density(nx.subgraph(second_graph, intersect_pred_subgraph)))) connected_intersect_pred_subgraph = post_process_block( instance['first_graph'], intersect_pred_subgraph, dataset=DATASET) connected_intersect_prec, connected_intersect_rec, connected_intersect_fm, connected_intersect_iou = evaluate_block( instance['true_subgraph'], connected_intersect_pred_subgraph) logger.debug('-' * 5 + ' connected intersect performance of prediction ' + '-' * 5) logger.debug('precision: {:.5f}'.format(connected_intersect_prec)) logger.debug('recall : {:.5f}'.format(connected_intersect_rec)) logger.debug('f-measure: {:.5f}'.format(connected_intersect_fm)) logger.debug('iou : {:.5f}'.format(connected_intersect_iou)) logger.debug('connected intersect density second graph: {:.5f}'.format( nx.density( nx.subgraph(second_graph, connected_intersect_pred_subgraph)))) union_pred_subgraph = set(list(raw_pred_subgraph_x)) | set( list(raw_pred_subgraph_y)) union_prec, union_rec, union_fm, union_iou = evaluate_block( instance['true_subgraph'], union_pred_subgraph) logger.debug('-' * 5 + ' union performance of prediction ' + '-' * 5) logger.debug('precision: {:.5f}'.format(union_prec)) logger.debug('recall : {:.5f}'.format(union_rec)) logger.debug('f-measure: {:.5f}'.format(union_fm)) logger.debug('iou : {:.5f}'.format(union_iou)) logger.debug('union density second graph: {:.5f}'.format( nx.density(nx.subgraph(second_graph, union_pred_subgraph)))) connected_union_pred_subgraph = post_process_block( instance['first_graph'], union_pred_subgraph, dataset=DATASET) connected_union_prec, connected_union_rec, connected_union_fm, connected_union_iou = evaluate_block( instance['true_subgraph'], connected_union_pred_subgraph) logger.debug('-' * 5 + ' connected union performance of prediction ' + '-' * 5) logger.debug('precision: {:.5f}'.format(connected_union_prec)) logger.debug('recall : {:.5f}'.format(connected_union_rec)) logger.debug('f-measure: {:.5f}'.format(connected_union_fm)) logger.debug('iou : {:.5f}'.format(connected_union_iou)) logger.debug('connected union density second graph: {:.5f}'.format( nx.density(nx.subgraph(second_graph, connected_union_pred_subgraph))))
def run_dataset(paras): dataset, sparsity, threshold, trade_off, learning_rate, max_iter, epsilon, write_to_dir = paras if not write_to_dir: logger = logging.getLogger('fei') else: log_fn = '{}_sparsity_{:d}_threshold_{}_trade_{}_lr_{}.txt'.format(DATASET, sparsity, threshold, trade_off, learning_rate) if os.path.isfile(os.path.join(write_to_dir, log_fn)): print('file exists !!!') return logger = logging.getLogger(log_fn) formatter = logging.Formatter('') file_handler = logging.FileHandler(filename=os.path.join(write_to_dir, log_fn), mode='w') file_handler.setFormatter(formatter) logger.addHandler(file_handler) all_performance = [] logger.debug('-' * 5 + ' setting ' + '-' * 5) logger.debug('sparsity: {:d}'.format(sparsity)) logger.debug('learning rate: {:.5f}'.format(learning_rate)) logger.debug('trade off: {:.5f}'.format(trade_off)) for i, instance in enumerate(dataset): logger.debug('instance: {:d}'.format(i)) true_subgraph = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14] # if normalize: # logger.debug('feature normalized') # instance['features'] = instance['features'] / np.max(instance['features']) opt_x, opt_y, run_time = optimize(instance, sparsity, threshold, trade_off, learning_rate, max_iter, epsilon, logger=logger) logger.debug('run time: {:.5f}'.format(run_time)) raw_pred_subgraph_x = np.nonzero(opt_x)[0] print('rawx', raw_pred_subgraph_x) # prec, rec, fm, iou = evaluate_block(instance['true_subgraph'], raw_pred_subgraph_x) prec, rec, fm, iou = evaluate_block(true_subgraph, raw_pred_subgraph_x) logger.debug('-' * 5 + ' performance of x prediction ' + '-' * 5) logger.debug('precision: {:.5f}'.format(prec)) logger.debug('recall : {:.5f}'.format(rec)) logger.debug('f-measure: {:.5f}'.format(fm)) logger.debug('iou : {:.5f}'.format(iou)) raw_pred_subgraph_y = np.nonzero(opt_y)[0] print('rawy', raw_pred_subgraph_y) # prec, rec, fm, iou = evaluate_block(instance['true_subgraph'], raw_pred_subgraph_y) prec, rec, fm, iou = evaluate_block(true_subgraph, raw_pred_subgraph_y) logger.debug('-' * 5 + ' performance of y prediction ' + '-' * 5) logger.debug('precision: {:.5f}'.format(prec)) logger.debug('recall : {:.5f}'.format(rec)) logger.debug('f-measure: {:.5f}'.format(fm)) logger.debug('iou : {:.5f}'.format(iou)) # connected in first graph refined_pred_subgraph_x = post_process_block(instance['first_graph'], raw_pred_subgraph_x, dataset=DATASET) # refined_prec, refined_rec, refined_fm, refined_iou = evaluate_block(instance['true_subgraph'], refined_pred_subgraph_x) refined_prec, refined_rec, refined_fm, refined_iou = evaluate_block(true_subgraph, refined_pred_subgraph_x) print('refined x', refined_pred_subgraph_x) logger.debug('-' * 5 + ' performance of refined x prediction ' + '-' * 5) logger.debug('refined precision: {:.5f}'.format(refined_prec)) logger.debug('refined recall : {:.5f}'.format(refined_rec)) logger.debug('refined f-measure: {:.5f}'.format(refined_fm)) logger.debug('refined iou : {:.5f}'.format(refined_iou)) refined_pred_subgraph_y = post_process_block(instance['first_graph'], raw_pred_subgraph_y, dataset=DATASET) # refined_prec, refined_rec, refined_fm, refined_iou = evaluate_block(instance['true_subgraph'], refined_pred_subgraph_y) refined_prec, refined_rec, refined_fm, refined_iou = evaluate_block(true_subgraph, refined_pred_subgraph_y) print('refined y', refined_pred_subgraph_y) logger.debug('-' * 5 + ' performance of refined y prediction ' + '-' * 5) logger.debug('refined precision: {:.5f}'.format(refined_prec)) logger.debug('refined recall : {:.5f}'.format(refined_rec)) logger.debug('refined f-measure: {:.5f}'.format(refined_fm)) logger.debug('refined iou : {:.5f}'.format(refined_iou)) combine_pred_subgraph = raw_pred_subgraph_x & raw_pred_subgraph_y print('combine', combine_pred_subgraph) # combine_prec, combine_rec, combine_fm, combine_iou = evaluate_block(instance['true_subgraph'], raw_pred_subgraph_y) combine_prec, combine_rec, combine_fm, combine_iou = evaluate_block(true_subgraph, raw_pred_subgraph_y) logger.debug('-' * 5 + ' performance of combine prediction ' + '-' * 5) logger.debug('precision: {:.5f}'.format(combine_prec)) logger.debug('recall : {:.5f}'.format(combine_rec)) logger.debug('f-measure: {:.5f}'.format(combine_fm)) logger.debug('iou : {:.5f}'.format(combine_iou)) refined_combine_pred_subgraph = post_process_block(instance['first_graph'], combine_pred_subgraph, dataset=DATASET) print('refined combine', refined_combine_pred_subgraph) # refined_combine_prec, refined_combine_rec, refined_combine_fm, refined_combine_iou = evaluate_block(instance['true_subgraph'], raw_pred_subgraph_y) refined_combine_prec, refined_combine_rec, refined_combine_fm, refined_combine_iou = evaluate_block(true_subgraph, refined_combine_pred_subgraph) logger.debug('-' * 5 + ' performance of y prediction ' + '-' * 5) logger.debug('precision: {:.5f}'.format(refined_combine_prec)) logger.debug('recall : {:.5f}'.format(refined_combine_rec)) logger.debug('f-measure: {:.5f}'.format(refined_combine_fm)) logger.debug('iou : {:.5f}'.format(refined_combine_iou))