def notch(f_data, z_data, progress_bar, var_col=0, f_col=1, z_col=2): #progress bar progress_bar.setMaximum(5) i_progress = 0 progress_bar.setValue(i_progress) QApplication.processEvents() #calibration delay, amp_norm, alpha, fr, Qr, A2, frcal = rtx.do_calibration( f_data, z_data[0], ignoreslope=True) i_progress += 1 progress_bar.setValue(i_progress) QApplication.processEvents() #normalization z_norm = rtx.do_normalization(f_data, z_data, delay, amp_norm, alpha, A2, frcal) i_progress += 1 progress_bar.setValue(i_progress) QApplication.processEvents() #circlefit parameters = map( lambda x: rtx.circlefit(f_data, z_norm[x], calc_errors=True), xrange(len(z_norm))) i_progress += 1 progress_bar.setValue(i_progress) QApplication.processEvents() #simulation z_data_sim = np.array( map( lambda p: to.S21(f_data, fr=p["fr"], Qr=p["Qr"], Qc=p["absQc"], phi=p["phi0"], a=amp_norm, alpha=alpha, delay=delay), parameters)) #residual values residual_amp = np.absolute(z_norm) - np.absolute(z_data_sim) residual_phase = np.angle(z_norm) - np.angle(z_data_sim) i_progress += 1 progress_bar.setValue(i_progress) QApplication.processEvents() return { "z_sim": z_data_sim, "res_amp": residual_amp, "res_phase": residual_phase, "parameters": parameters, "amp_norm": amp_norm, "alpha": alpha, "delay": delay }
def notch(f_data,z_data,progress_bar,var_col=0,f_col=1,z_col=2): #progress bar progress_bar.setMaximum(5) i_progress=0 progress_bar.setValue(i_progress) QApplication.processEvents() #calibration delay,amp_norm,alpha,fr,Qr,A2,frcal=rtx.do_calibration(f_data,z_data[0],ignoreslope=True) i_progress+=1 progress_bar.setValue(i_progress) QApplication.processEvents() #normalization z_norm = rtx.do_normalization(f_data,z_data,delay,amp_norm,alpha,A2,frcal) i_progress+=1 progress_bar.setValue(i_progress) QApplication.processEvents() #circlefit parameters = map(lambda x: rtx.circlefit(f_data,z_norm[x],calc_errors=True), xrange(len(z_norm))) i_progress+=1 progress_bar.setValue(i_progress) QApplication.processEvents() #simulation z_data_sim = np.array(map(lambda p: to.S21(f_data,fr=p["fr"],Qr=p["Qr"],Qc=p["absQc"], phi=p["phi0"],a=amp_norm,alpha=alpha,delay=delay), parameters)) #residual values residual_amp = np.absolute(z_norm) - np.absolute(z_data_sim) residual_phase = np.angle(z_norm) - np.angle(z_data_sim) i_progress+=1 progress_bar.setValue(i_progress) QApplication.processEvents() return {"z_sim":z_data_sim, "res_amp":residual_amp, "res_phase":residual_phase,"parameters":parameters, "amp_norm":amp_norm,"alpha":alpha, "delay":delay}
##prepare data (remove delay, and normalize) # step2# z_data = rtx.do_normalization(f_data, z_data_raw, delay, amp_norm, alpha, A2, frcal) print "Step 2: normalization finished" # ----# ## optional plotting # rtx.plot(f_data,z_data,'logamp') # rtx.plot(f_data,z_data,'phase') # rtx.plot(f_data,z_data,'circle') ##calculate Q values etc. # step3# (function assumes normalized data without cable delay or phase offsets, use step 1 and 2 to remove these) # results = rtx.circlefit(f_data,z_data,fr,Qr,refine_results=False,calc_errors=True) # use this for calculation with errors results = rtx.circlefit( f_data, z_data, fr, Qr, refine_results=False, calc_errors=True ) # calculation without errors (faster) print "Step 3: circlefit finished" # ----# # optional data output (more available, see source) print "Fit results:" print results # optional: least square fit of the entire model (slow) # you have to give start values # results2 = rtx.fit_S21data(f_data,z_data_raw,amp_norm,alpha,delay,Qr,absQc,phi0,fr,maxiter=0) # optinal: plot function with fitted parameters z_data_sim = np.array(