Example #1
0
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
Example #2
0
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)
Example #5
0
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)