import numpy as np
import collections, efel, h5py
import matplotlib.pyplot as plt
from statistics import mean 

syn_type = 70

time_list = [-25, 25]
MF_first = 1

for time_step in time_list:
    if MF_first == 0:
        pf_delay = 0
        mf_delay = time_step
    if MF_first == 1:
        pf_delay = time_step
        mf_delay = 0


    fixed_start_1 = 3000
    fixed_start_2 = 6000
    fixed_start_3 = 9000

    fixed_end_1 = 33000
    fixed_end_2 = 36000
    fixed_end_3 = 39000

    slots = [(fixed_start_1*40), fixed_start_2 *40, fixed_start_3*40, fixed_end_1 *40, fixed_end_2 *40, fixed_end_3 *40]


    number_syns = 20

    def read_h5(filename, syn_n, slots_list):
        print('syn_numer', syn_n)
        hf = h5py.File(filename, 'r')
        values = np.array(hf.get('_MF_ampa_' + str(syn_n)))
        total_max = []
        for slots in slots_list:
            check_max = []
            #print(slots)
            for values_internal in range(slots-5000, slots+5000):
                #print(values[values_internal])
                check_max.append(abs(values[values_internal]))
            total_max.append(max(check_max)*1000)

        percent_change = (mean(total_max[3:5]) - mean(total_max[0:2]))/mean(total_max[0:2])*100

        return mean(total_max[0:2]), mean(total_max[3:5]), percent_change

    if pf_delay < 0:
            pf_delay = 'meno' + str(abs(pf_delay))

    if mf_delay < 0:
        mf_delay = 'meno' + str(abs(mf_delay))


    start_current = []
    end_current = []
    syn_number = []
    percent_change = []

    for syn_n in range(0,number_syns):
        data_start, data_end, percent = read_h5(str(syn_type) + '_trace_indiv8_syn_pf_30_del_' + str(pf_delay) + '_mf_' + str(number_syns) + '_del_' + str(mf_delay) + '_aa_0_morfo_1_MF_ampa_' + str(syn_n) + '.h5', syn_n, slots)
        start_current.append(data_start)
        end_current.append(data_end)
        syn_number.append(syn_n)
        percent_change.append(percent)

    first_half_mat = np.column_stack((np.array(syn_number), np.array(start_current)))
    second_half_mat = np.column_stack((np.array(end_current), np.array(percent_change)))
    results_single = np.column_stack((first_half_mat, second_half_mat))
    average_mat = results_single.mean(axis=0)
    average_mat[0] = 100
    results = np.vstack([results_single, average_mat])

    print(results)
    np.savetxt('Simtype_' + str(syn_type) + '_MF_' + str(mf_delay) + '_PF_' + str(pf_delay) + '.csv', results, delimiter = ' ', fmt='%i %1.3f %1.3f %1.3f')