import matplotlib.pyplot as plt import os import glob import IPython import numpy as np from IPython import embed from jar_functions import parse_dataset from jar_functions import mean_noise_cut datasets = [(os.path.join('D:\\jar_project\\JAR\\2020-06-22-ac\\beats-eod.dat'))] # (os.path.join('D:\\jar_project\\JAR\\2020-06-22-ac\\beats-eod.dat'))] eodf = [] deltaf = [] stimulusf = [] time = [] frequency_mean= [] amplitude = [] start = -10 stop = 200 timespan = 210 for dataset in datasets: #input of the function t, f, a, e, d, s= parse_dataset(dataset) 'times' # same for time in both loops minimumt = min(len(t[0]), len(t[1])) t0 = t[0][:minimumt] t1 = t[1][:minimumt] # new time with wished timespan because it varies for different loops tnew = np.arange(start, stop, timespan / minimumt) # 3rd input is stepspacing: # in case complete measuring time devided by total number of datapoints 'frequencies' # minimum datapoint lenght of both loops of frequencies minimumf = min(len(f[0]), len(f[1])) # new frequencies to minimum for both loops f0 = f[0][:minimumf] # interpolation f0new = np.interp(tnew, t0, f0) f1 = f[1] #[:minimumf] # interpolation f1new = np.interp(tnew, t1, f1) #new array with frequencies of both loops as two lists put together frequency = np.array([f0new, f1new]) #making a mean over both loops with the axis 0 (=averaged in y direction, axis=1 would be over x axis) mf = np.mean(frequency, axis=0) #.T as transition (1,0) -> (0,1) #appending data eodf.append(e) deltaf.append(d) stimulusf.append(s) amplitude.append(a) frequency_mean.append(mf) time.append(tnew) for i in range(len(frequency_mean)): for n in [10, 50, 100, 1000, 10000, 20000, 30000]: cf, ct = mean_noise_cut(frequency_mean[i], time[i], n=n) plt.plot(ct, cf, label='n=%d' % n) 'plotting' plt.xlim([-10,200]) #plt.ylim([400, 1000]) plt.xlabel('time [s]') plt.ylabel('frequency [Hz]') #plt.title('noise_cut_n=100') #plt.savefig('noise_cut_n=100') plt.legend() plt.show() def double_exp(t, a1, a2, tau1, tau2): return a1*np.exp(-t/tau1) # plotten mit manual values for a1, ... # auch mal a1 oder a2 auf Null setzen. #evtl. normiert darstellen (frequency / baseline frequency?)? #Zeitkonstante: von sec. 0 bis 63%? relative JAR ''' 'controll of interpolation' fig=plt.figure() ax=fig.add_subplot(1,1,1) ax.plot(tnew, mf, c = 'r', marker = 'o', ls = 'solid', label = 'new') ax.plot(t0, f0, c = 'b', marker = '+', ls = '-', label = 'loop_0') ax.plot(t1, f1, c= 'g', marker = '+', ls = '-', label = 'loop_1') plt.legend(loc = 'best') #plt.plot(tnew, mf, marker = 'r-o', label = new, t0, f0, marker = 'b-+', label = loop_0, t1, f1, marker = 'g-+', label = loop_1) plt.show() '''