Changeset cf3b781 in sasview for park_integration/ParkFitting.py
- Timestamp:
- Jul 7, 2008 6:37:27 PM (16 years ago)
- Branches:
- master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 1b0b3ca
- Parents:
- 672c44da
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
park_integration/ParkFitting.py
r9e85792 rcf3b781 7 7 from park import fit,fitresult 8 8 from park import assembly 9 from park.fitmc import FitSimplex, FitMC 9 10 10 11 from sans.guitools.plottables import Data1D … … 67 68 x,y,dy = [numpy.asarray(v) for v in (self.x,self.y,self.dy)] 68 69 if self.qmin==None and self.qmax==None: 70 self.fx = fn(x) 69 71 return (y - fn(x))/dy 70 72 71 73 else: 74 self.fx = fn(x[idx]) 72 75 idx = x>=self.qmin & x <= self.qmax 73 76 return (y[idx] - fn(x[idx]))/dy[idx] … … 115 118 if data in self.dList: 116 119 self.dList.remove(data) 120 def remove_model(self): 121 """ Remove model """ 122 model=None 123 def remove_datalist(self): 124 self.dList=[] 117 125 118 126 class ParkFit: … … 160 168 mylist.append(couple) 161 169 #print mylist 162 return mylist170 self.problem = park.Assembly(mylist) 163 171 #return model,data 164 172 … … 167 175 Do the fit 168 176 """ 169 177 178 self.createProblem(pars) 170 179 print "starting ParkFit.fit()" 171 modelList=self.createProblem()172 problem = park.Assembly(modelList)173 pars= problem.fit_parameters()180 #problem[0].model.parameterset['A'].set([1,5]) 181 #problem[0].model.parameterset['B'].set([1,5]) 182 pars=self.problem.fit_parameters() 174 183 print "About to call eval",pars 175 184 print "initial",[p.value for p in pars] 176 problem.eval()185 self.problem.eval() 177 186 #print "M2.B",problem.parameterset['M2.B'].expression,problem.parameterset['M2.B'].value 178 187 #print "problem :",problem[0].parameterset,problem[0].parameterset.fitted … … 180 189 #problem[0].parameterset['A'].set([0,1000]) 181 190 #print "problem :",problem[0].parameterset,problem[0].parameterset.fitted 182 fit.fit(problem, handler= fitresult.ConsoleUpdate(improvement_delta=0.1)) 183 191 192 localfit = FitSimplex() 193 localfit.ftol = 1e-8 194 fitter = FitMC(localfit=localfit) 195 196 result = fit.fit(self.problem, 197 fitter=fitter, 198 handler= fitresult.ConsoleUpdate(improvement_delta=0.1)) 199 pvec = result.pvec 200 cov = self.problem.cov(pvec) 201 return result.fitness,pvec,numpy.sqrt(numpy.diag(cov)) 202 184 203 185 204 def set_model(self,model,Uid): … … 219 238 return parameters 220 239 221 def add_constraint(self, constraint):222 """ User specify contraint to fit"""223 self.constraint = str(constraint)224 225 def get_constraint(self):226 """ return the contraint value """227 return self.constraint228 229 def set_constraint(self,constraint):230 """231 receive a string as a constraint232 @param constraint: a string used to constraint some parameters to get a233 specific value234 """235 self.constraint= constraint240 def remove_data(self,Uid,data=None): 241 """ remove one or all data""" 242 if data==None:# remove all element in data list 243 if self.fitArrangeList.has_key(Uid): 244 self.fitArrangeList[Uid].remove_datalist() 245 else: 246 if self.fitArrangeList.has_key(Uid): 247 self.fitArrangeList[Uid].remove_data(data) 248 249 def remove_model(self,Uid): 250 """ remove model """ 251 if self.fitArrangeList.has_key(Uid): 252 self.fitArrangeList[Uid].remove_model() 253 254 236 255 def _concatenateData(self, listdata=[]): 237 256 """ concatenate each fields of all Data contains ins listdata … … 287 306 288 307 289 290 if __name__ == "__main__": 291 load= Load() 292 293 # test fit one data set one model 294 load.set_filename("testdata_line.txt") 295 load.set_values() 296 data1 = Data1D(x=[], y=[], dx=None,dy=None) 297 data1.name = "data1" 298 load.load_data(data1) 299 fitter =ParkFit() 300 301 from sans.guitools.LineModel import LineModel 302 model = LineModel() 303 fitter.set_model(model,1) 304 fitter.set_data(data1,1) 305 306 print"PARK fit result",fitter.fit({'A':2,'B':1},None,None) 308 309 307 310 308 311 309 310
Note: See TracChangeset
for help on using the changeset viewer.