import matplotlib.pyplot as plt
import numpy as np
import pylab
from IPython import embed
from scipy.optimize import curve_fit
from jar_functions import gain_curve_fit
from jar_functions import avgNestedLists


identifier = [#'2018lepto1',
              #'2018lepto4',
              #'2018lepto5',
              #'2018lepto76',
              '2018lepto98',
              '2019lepto03',
              #'2019lepto24',
              #'2019lepto27',
              #'2019lepto30',
              #'2020lepto04',
              #'2020lepto06',
              '2020lepto16',
              '2020lepto19',
              '2020lepto20'
              ]

tau = []
f_c = []
for ID in identifier:
    print(ID)
    amf = np.load('5Hz_amf_%s.npy' %ID)
    gain = np.load('5Hz_gain_%s.npy' %ID)

    sinv, sinc = curve_fit(gain_curve_fit, amf, gain)
    #print('tau:', sinv[0])
    tau.append(sinv[0])
    f_cutoff = abs(1 / (2*np.pi*sinv[0]))
    print('f_cutoff:', f_cutoff)
    f_c.append(f_cutoff)


amf = [0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1]

all = []

for ident in identifier:
    data = np.load('5Hz_gain_%s.npy' %ident)
    all.append(data)

av = avgNestedLists(all)

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(amf, av, 'o')
ax.set_xscale('log')
ax.set_yscale('log')
ax.set_title('gaincurve_average_allfish_5Hz')
ax.set_ylabel('gain [Hz/(mV/cm)]')
ax.set_xlabel('envelope_frequency [Hz]')
ax.set_ylim(0.0008, )
ax.plot(f_c, np.full((len(identifier)), 0.0015), 'o', label = 'cutoff frequencies')
ax.legend()

plt.show()
embed()