示例#1
0
    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]
示例#2
0
	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]
示例#3
0
	def residual(self, param, x, data,options):
	
		A = equation_(param, x,options)
		residuals = data-A
		return residuals
示例#4
0
    def residual(self, param, x, data, options):

        A = equation_(param, x, options)
        residuals = data - A
        return residuals