def fitToParameters(self): #self.parentFn.updateParamFirst() #self.parentFn.updateTableFirst() #self.parentFn.updateParamFirst() #Populate param for lmfit. param = Parameters() #self.def_param.add('A1', value=1.0, min=0,max=1.0, vary=False) for art in self.param: if self.param[art]['to_show'] == True: param.add(art, value=float(self.param[art]['value']), min=float(self.param[art]['minv']), max=float(self.param[art]['maxv']), vary=self.param[art]['vary']) #Find the index of the nearest point in the scale. data = np.array(self.autoNorm).astype(np.float64).reshape(-1) scale = np.array(self.autotime).astype(np.float64).reshape(-1) self.indx_L = int(np.argmin(np.abs(scale - self.parentFn.dr.xpos))) self.indx_R = int(np.argmin(np.abs(scale - self.parentFn.dr1.xpos))) #Run the fitting. res = minimize(self.residual, param, args=(scale[self.indx_L:self.indx_R + 1], data[self.indx_L:self.indx_R + 1], self.parentFn.def_options)) #Repopulate the parameter object. for art in self.param: if self.param[art]['to_show'] == True and self.param[art][ 'calc'] == False: self.param[art]['value'] = param[art].value self.param[art]['stderr'] = float(param[art].stderr) #Extra parameters, which are not fit or inherited. #self.param['N_FCS']['value'] = np.round(1/self.param['GN0']['value'],4) self.residualVar = res.residual output = fit_report(param) print 'residual', res.chisqr if (res.chisqr > 0.05): print 'CAUTION DATA DID NOT FIT WELL CHI^2 >0.05', res.chisqr self.goodFit = False else: self.goodFit = True self.fitted = True self.chisqr = res.chisqr self.localTime = time.asctime(time.localtime(time.time())) #self.parentFn.updateTableFirst(); self.model_autoNorm = equation_(param, scale[self.indx_L:self.indx_R + 1], self.parentFn.def_options) self.model_autotime = scale[self.indx_L:self.indx_R + 1]
def fitToParameters(self): #self.parentFn.updateParamFirst() #self.parentFn.updateTableFirst() #self.parentFn.updateParamFirst() #Populate param for lmfit. param = Parameters() #self.def_param.add('A1', value=1.0, min=0,max=1.0, vary=False) for art in self.param: if self.param[art]['to_show'] == True: param.add(art, value=float(self.param[art]['value']), min=float(self.param[art]['minv']) ,max=float(self.param[art]['maxv']), vary=self.param[art]['vary']); #Find the index of the nearest point in the scale. data = np.array(self.autoNorm).astype(np.float64).reshape(-1) scale = np.array(self.autotime).astype(np.float64).reshape(-1) self.indx_L = int(np.argmin(np.abs(scale - self.parentFn.dr.xpos))) self.indx_R = int(np.argmin(np.abs(scale - self.parentFn.dr1.xpos))) #Run the fitting. res = minimize(self.residual, param, args=(scale[self.indx_L:self.indx_R+1],data[self.indx_L:self.indx_R+1], self.parentFn.def_options)) #Repopulate the parameter object. for art in self.param: if self.param[art]['to_show'] == True and self.param[art]['calc'] == False: self.param[art]['value'] = param[art].value self.param[art]['stderr'] = float(param[art].stderr) #Extra parameters, which are not fit or inherited. #self.param['N_FCS']['value'] = np.round(1/self.param['GN0']['value'],4) self.residualVar = res.residual output = fit_report(param) print 'residual',res.chisqr if(res.chisqr>0.05): print 'CAUTION DATA DID NOT FIT WELL CHI^2 >0.05',res.chisqr self.goodFit = False else: self.goodFit = True self.fitted = True self.chisqr = res.chisqr self.localTime = time.asctime( time.localtime(time.time()) ) #self.parentFn.updateTableFirst(); self.model_autoNorm = equation_(param, scale[self.indx_L:self.indx_R+1],self.parentFn.def_options) self.model_autotime = scale[self.indx_L:self.indx_R+1]
def residual(self, param, x, data,options): A = equation_(param, x,options) residuals = data-A return residuals
def residual(self, param, x, data, options): A = equation_(param, x, options) residuals = data - A return residuals