def params_Lorentzian(x, y): mod = LorentzianModel() params = mod.guess(y, x) print(params) out = mod.fit(y, params, x=x) print(out.fit_report(min_correl=0.3)) init = mod.eval(params, x=x) plt.figure(2) plt.plot(x, y, 'b') plt.plot(x, init, 'k--') plt.plot(x, out.best_fit, 'r-')
T = nm_per_px y = projection yf = scipy.fftpack.fft(y) xf = np.linspace(0.0, 1.0/(2.0*T), N/2) fig1, ax = plt.subplots(1) thegraphy = 2.0/N * np.abs(yf[:N//2]) fromj = 9 toj = 17 ax.plot(xf[:50], thegraphy[:50], '-o') y = thegraphy[fromj:toj] x = xf[fromj:toj] pars = mod.guess(y, x=x) out = mod.fit(y, pars, x=x) x2 = np.linspace(np.min(x), np.max(x), 300) y2 = mod.eval(out.params, x=x2) plt.plot(x2, y2, '--', alpha=1) print(out.fit_report(min_correl=0.25)) fromj = 18 toj = 25 y = thegraphy[fromj:toj] x = xf[fromj:toj] pars = mod.guess(y, x=x) out = mod.fit(y, pars, x=x) x2 = np.linspace(np.min(x), np.max(x), 300) params2 = out.params # params2['center'] = 0.15390835*1.3 y2 = mod.eval(params2, x=x2) plt.plot(x2, y2, '--', alpha=1) print(out.fit_report(min_correl=0.25))
xls = pd.ExcelFile(Matrix_results_name) sheets = xls.sheet_names ## for sh in sheets: Matrix_results = pd.read_excel(Matrix_results_name, sheet_name=sh) df = Matrix_results.iloc[:180, :] ### just the quadrant df=pd.DataFrame(df) for TR in df.columns: data=df[TR] X=data.index.values Y=data.values mod = LorentzianModel() #mod =GaussianModel() pars = mod.guess(Y, x=X) out = mod.fit(Y, pars, x=X) Y_lorenz = mod.eval(pars, x=X) #print(out.fit_report(min_correl=0.25)) #plt.plot(X, Y_lorenz, 'k--', label='Lorentzian') #dec_angle_lorenz = (90-np.where(Y_lorenz==max(Y_lorenz))[0][0])/2 #out.params['center'].value / 2 #error = abs( (90-np.where(Y_lorenz==max(Y_lorenz))[0][0])/2 ) #round(ref_angle - dec_angle_lorenz, 3) error = (90-np.where(Y_lorenz==max(Y_lorenz))[0][0])/2 #round(ref_angle - dec_angle_lorenz, 3) results.append( [error, TR, CONDITION, SUBJECT_USE_ANALYSIS, sh[-1], brain_region]) df = pd.DataFrame(np.array(results)) df.columns = ['error', 'TR', 'CONDITION', 'subject', 'session', 'ROI'] df['TR'] = df.TR.astype(float) df['TR'] = df['TR'] * 2
def residuals(force_pickrange=False): datafolder = filedialog.askopenfilenames( initialdir="C:\\Users\Josh\IdeaProjects\OpticalPumping", title="Select data for bulk plotting") for filename in datafolder: if 'data' in filename: global dat3 name_ext = filename.split('/')[-1] name_no_ending = name_ext.split('.csv')[0] parts = name_no_ending.split('_') print(parts) dat1 = read_csv( "C:\\Users\\Josh\\IdeaProjects\\OpticalPumping\\Sweep_dat\\{}". format(name_ext), names=['xdat', 'ydat']) dat1 = dat1[np.abs(dat1['xdat'] - dat1['xdat'].mean()) <= ( 3 * dat1['xdat'].std())] xdat = np.array(dat1['xdat']) ydat = np.array(dat1['ydat']) if force_pickrange: fig1, ax1 = plt.subplots() plt.title('Pick Ranges for Exponential decay fit') Figure1, = ax1.plot(xdat, ydat, '.') print(xdat[5], xdat[-5]) plt.xlim([xdat[5], xdat[-5]]) Sel3 = RangeTool(xdat, ydat, Figure1, ax1, name_no_ending) fullscreen() plt.show() dat3 = Sel3.return_range() if not force_pickrange: try: dat3 = read_csv( "C:\\Users\\Josh\\IdeaProjects\\OpticalPumping\\Sweep_ranges\\{}" .format(name_ext), names=[ 'Lower Bound', 'LowerIndex', 'Upper Bound', 'UpperIndex' ]) except FileNotFoundError or force_pickrange: fig1, ax1 = plt.subplots() plt.title('Pick Ranges for Exponential decay fit') Figure1, = ax1.plot(xdat, ydat, '.') print(xdat[5], xdat[-5]) plt.xlim([xdat[5], xdat[-5]]) Sel3 = RangeTool(xdat, ydat, Figure1, ax1, name_no_ending) fullscreen() plt.show() dat3 = Sel3.return_range() mdl = LorentzianModel() try: lowerindex = int(dat3.at[0, 'LowerIndex']) upperindex = int(dat3.at[0, 'UpperIndex']) except ValueError: pass try: params = mdl.guess(data=ydat[lowerindex:upperindex], x=xdat[lowerindex:upperindex]) result = mdl.fit(ydat[lowerindex:upperindex], params, x=xdat[lowerindex:upperindex]) resultdata = mdl.eval(x=xdat[lowerindex:upperindex], params=result.params) # print(result.fit_report()) MultiPlot(xdat[lowerindex:upperindex], ydat[lowerindex:upperindex], resultdata, xdat, ydat, name_no_ending, parts[1]) except UnboundLocalError: pass