def metric_details_by_lickwell(path, timeshift): lick_id_details, lick_id_details_k = get_metric_details( path + "output/", timeshift) fractions_decoded_2, std_2, n_2 = return_fraction_decoded_and_std( lick_id_details=lick_id_details, lick_id_details_k=lick_id_details_k, parameter=lick_id_details.licks_decoded, filter=lick_id_details.next_well_licked_2) fractions_decoded_3, std_3, n_3 = return_fraction_decoded_and_std( lick_id_details=lick_id_details, lick_id_details_k=lick_id_details_k, parameter=lick_id_details.licks_decoded, filter=lick_id_details.next_well_licked_3) fractions_decoded_4, std_4, n_4 = return_fraction_decoded_and_std( lick_id_details=lick_id_details, lick_id_details_k=lick_id_details_k, parameter=lick_id_details.licks_decoded, filter=lick_id_details.next_well_licked_4) fractions_decoded_5, std_5, n_5 = return_fraction_decoded_and_std( lick_id_details=lick_id_details, lick_id_details_k=lick_id_details_k, parameter=lick_id_details.licks_decoded, filter=lick_id_details.next_well_licked_5) bar_values = [ fractions_decoded_2, fractions_decoded_3, fractions_decoded_4, fractions_decoded_5 ] std_well = [std_2, std_3, std_4, std_5] n_well = [n_2, n_3, n_4, n_5] # so error bars show up correctly std_lower, std_upper = get_corrected_std(bar_values, std_well) return bar_values, std_lower, std_upper, n_well
from src.metrics import print_metric_details, get_metric_details from random import seed import numpy as np if __name__ == '__main__': # Removes a portion of the lick events and checks if performance changes model_path = "C:/Users/NN/Desktop/Master/experiments/Lickwell_prediction/" path_hc = "C:/Users/NN/Desktop/Master/experiments/Lickwell_prediction/MLP_PFC/output/" path_pfc = model_path + "MLP_PFC_tleave/output/" save_path = model_path barcolor = "darkviolet" add_trial_numbers = True # load fraction and std data lick_id_details, lick_id_details_k = get_metric_details(path_hc, 1) # return_sample_count_by_lick_id(lick_id_details_k_1) x_1, std_1, n_1 = get_accuracy_for_comparison_2(lick_id_details, lick_id_details_k) std_lower_1, std_upper_1 = get_corrected_std(x_1, std_1) lick_id_details, lick_id_details_k = get_metric_details(path_hc, -1) # return_sample_count_by_lick_id(lick_id_details_k_1) x_2, std_2, n_2 = get_accuracy_for_comparison_2(lick_id_details, lick_id_details_k) std_lower_2, std_upper_2 = get_corrected_std(x_2, std_2) shift = -1 lick_id_details, lick_id_details_k = get_metric_details(path_pfc, 1) # return_sample_count_by_lick_id(lick_id_details_k_1) x_3, std_3, n_3 = get_accuracy_for_comparison_2(lick_id_details,
# c = "goldenrod" # ax.plot(ie,color=c,marker="X") # y = [] # # ax.plot(total_fraction,color="r") # plt.show() y_list = [] n_list = [] for shift in [1,-1]: # TODO for path in model_path_list: y_n = [] n_n = [] for i in plotrange: lick_id_details, lick_id_details_k = get_metric_details(path+"output/", shift,pathname_metadata="_"+str(i)) y,std,n = return_fraction_decoded_and_std(lick_id_details=lick_id_details, lick_id_details_k=lick_id_details_k, parameter=lick_id_details.fraction_decoded, filter=lick_id_details.valid_licks) y_n.append(y) n_n.append(np.sum(n)) y_list.append(y_n) n_list.append(n_n)# y_list_1 = y_list[0] n_list_1 = n_list[0] y_list_2 = y_list[1] n_list_2 = n_list[1] y_list_3 = y_list[2] n_list_3 = n_list[2] y_list_4 = y_list[3]
if __name__ == '__main__': # Removes a portion of the lick events and checks if performance changes model_path = "C:/Users/NN/Desktop/Master/experiments/Lickwell_prediction/MLP_HC/" save_path=model_path+"images/approximate_accuracy.png" barcolor = "darkviolet" add_trial_numbers = True shift = -1 # load fraction and std data path_hc = model_path + "output/" lick_id_details, lick_id_details_k = get_metric_details(path_hc, shift) x_1, std_1, n_1 = get_accuracy(lick_id_details, lick_id_details_k) x_2, std_2, n_2 = get_accuracy(lick_id_details, lick_id_details_k, d=1) x_3, std_3, n_3 = get_accuracy(lick_id_details, lick_id_details_k, d=2) path_pfc = "C:/Users/NN/Desktop/Master/experiments/Lickwell_prediction/MLP_PFC/output/" lick_id_details, lick_id_details_k = get_metric_details(path_pfc, shift) x_4, std_4, n_4 = get_accuracy(lick_id_details, lick_id_details_k) x_5, std_5, n_5 = get_accuracy(lick_id_details, lick_id_details_k,d=1) x_6, std_6, n_6 = get_accuracy(lick_id_details, lick_id_details_k,d=2) std_lower_1, std_upper_1 = get_corrected_std(x_1, std_1) std_lower_2, std_upper_2 = get_corrected_std(x_2, std_2) std_lower_3, std_upper_3 = get_corrected_std(x_3, std_3) std_lower_4, std_upper_4 = get_corrected_std(x_4, std_4) std_lower_5, std_upper_5 = get_corrected_std(x_5, std_5) std_lower_6, std_upper_6 = get_corrected_std(x_6, std_6)
def plot_performance_comparison(path_1, shift_1, path_2, shift_2, title_1, title_2, save_path, barcolor="darkviolet", add_trial_numbers=False): # load fraction and std data lick_id_details_1, lick_id_details_k_1 = get_metric_details( path_1, shift_1) # return_sample_count_by_lick_id(lick_id_details_k_1) x_1, std_1, n_1 = get_accuracy_for_comparison(lick_id_details_1, lick_id_details_k_1) lick_id_details_2, lick_id_details_k_2 = get_metric_details( path_2, shift_2) x_2, std_2, n_2 = get_accuracy_for_comparison(lick_id_details_2, lick_id_details_k_2) std_lower_1, std_upper_1 = get_corrected_std(x_1, std_1) std_lower_2, std_upper_2 = get_corrected_std(x_2, std_2) # plot bar charts width = 0.75 fontsize = 12 font = {'family': 'normal', 'size': 12} matplotlib.rc('font', **font) matplotlib.rc('xtick', labelsize=fontsize - 3) ind = np.arange(5) # the x locations for the groups fig, (ax1, ax2) = plt.subplots(2) ax1.set_ylim(0, 1.0) ax2.set_ylim(0, 1.0) ax_b1 = ax1.twinx() ax_b2 = ax2.twinx() error_kw = {'capsize': 5, 'capthick': 1, 'ecolor': 'black'} ax1.bar(ind, x_1, color=barcolor, yerr=[std_lower_1, std_upper_1], error_kw=error_kw, align='center') ax1.set_xticks(ind) ax1.set_xticklabels([ 'all licks', 'target correct', 'target false', 'prior switch', 'after switch' ]) ax_b1.set_ylim(0, 1.0) ax1.set_title(title_1) ax1.set_ylabel("fraction decoded correctly", fontsize=fontsize) if add_trial_numbers is True: for i, j in zip(ind, x_1): if j < 0.2: offset = 0.1 else: offset = -0.1 ax1.annotate(int(n_1[i]), xy=(i - 0.1, j + offset)) ax2.bar(ind, x_2, color=barcolor, yerr=[std_lower_2, std_upper_2], error_kw=error_kw, align='center') ax2.set_xticks(ind) ax2.set_xticklabels([ 'all licks', 'target correct', 'target false', 'prior switch', 'after switch' ]) ax_b2.set_ylim(0, 1.0) ax2.set_title(title_2) ax2.set_ylabel("fraction decoded correctly", fontsize=fontsize) if add_trial_numbers is True: for i, j in zip(ind, x_2): if j < 0.2: offset = 0.1 else: offset = -0.1 ax2.annotate(int(n_2[i]), xy=(i - 0.1, j + offset)) plt.tight_layout(pad=0.1, w_pad=0.5, h_pad=0) plt.savefig(save_path) pass
from src.metrics import print_metric_details, get_metric_details from random import seed import numpy as np if __name__ == '__main__': # Removes a portion of the lick events and checks if performance changes model_path = "C:/Users/NN/Desktop/Master/experiments/Lickwell_prediction/MLP_HC_prior_post/" path = model_path + "output/" save_path = model_path + "images/" barcolor = "darkviolet" # load fraction and std data shift = 1 lick_id_details, lick_id_details_k = get_metric_details( path, shift, pathname_metadata="_prior") # return_sample_count_by_lick_id(lick_id_details_k_1) x_1, std_1, n_1 = get_accuracy_for_comparison_2(lick_id_details, lick_id_details_k) std_lower_1, std_upper_1 = get_corrected_std(x_1, std_1) lick_id_details, lick_id_details_k = get_metric_details( path, shift, pathname_metadata="_post") # return_sample_count_by_lick_id(lick_id_details_k_1) x_2, std_2, n_2 = get_accuracy_for_comparison_2(lick_id_details, lick_id_details_k) std_lower_2, std_upper_2 = get_corrected_std(x_2, std_2) shift = -1 lick_id_details, lick_id_details_k = get_metric_details( path, shift, pathname_metadata="_prior") # return_sample_count_by_lick_id(lick_id_details_k_1)