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 noise_reduce 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) cf = noise_reduce(dataset, n = 10) '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 #.T as transition (1,0) -> (0,1) #other variant for transition by reshaping in needed dimension mfreshape = np.reshape(mf, (minimumf, 1)) #as ploting is using the first dimension, number of datapoints has to be in the first treshape = np.reshape(tnew, (minimumf, 1)) #appending data eodf.append(e) deltaf.append(d) stimulusf.append(s) amplitude.append(a) frequency_mean.append(mf) time.append(tnew) ''' '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() ''' 'plotting' '''why does append put in a 3rd dimension? plt.plot(time, frequency_mean) ''' plt.plot(tnew, mf) plt.xlim([-10,200]) #plt.ylim([400, 1000]) plt.xlabel('time [s]') plt.ylabel('frequency [Hz]') plt.show() #evtl. normiert darstellen (frequency / baseline frequency?)? #Zeitkonstante: von sec. 0 bis 63%? relative JAR