Changeset fd6b789 in sasview for park_integration/AbstractFitEngine.py
- Timestamp:
- Nov 16, 2009 12:50:50 PM (15 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:
- 464fce54
- Parents:
- 4026380
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
park_integration/AbstractFitEngine.py
r12b76cf rfd6b789 365 365 self.model.setParams(self.paramlist,params) 366 366 self.res= self.data.residuals(self.model.eval) 367 #if self.curr_thread != None :368 #try:369 #self.curr_thread.isquit()370 #except:371 #raise FitAbort,"stop leastsqr optimizer"367 if self.curr_thread != None : 368 try: 369 self.curr_thread.isquit() 370 except: 371 raise FitAbort,"stop leastsqr optimizer" 372 372 return self.res 373 373 … … 435 435 436 436 437 def set_model(self,model,Uid,pars=[] ):437 def set_model(self,model,Uid,pars=[], constraints=[]): 438 438 """ 439 439 set a model on a given uid in the fit engine. 440 @param model: the model to fit440 @param model: sans.models type 441 441 @param Uid :is the key of the fitArrange dictionnary where model is saved as a value 442 442 @param pars: the list of parameters to fit 443 @param constraints: list of 444 tuple (name of parameter, value of parameters) 445 the value of parameter must be a string to constraint 2 different 446 parameters. 447 Example: 448 we want to fit 2 model M1 and M2 both have parameters A and B. 449 constraints can be: 450 constraints = [(M1.A, M2.B+2), (M1.B= M2.A *5),...,] 443 451 @note : pars must contains only name of existing model's paramaters 444 452 """ 453 if model == None: 454 raise ValueError, "AbstractFitEngine: Need to set model to fit" 455 456 new_model= model 457 if not issubclass(model.__class__, Model): 458 new_model= Model(model) 459 460 if len(constraints)>0: 461 for constraint in constraints: 462 name, value = constraint 463 try: 464 new_model.parameterset[ str(name)].set( str(value) ) 465 except: 466 msg= "Fit Engine: Error occurs when setting the constraint" 467 msg += " %s for parameter %s "%(value, name) 468 raise ValueError, msg 469 445 470 if len(pars) >0: 446 if model==None:447 raise ValueError, "AbstractFitEngine: Specify parameters to fit"448 else:449 temp=[]450 for item in pars:451 if item in model.model.getParamList():452 temp.append(item)453 self.paramList.append(item)454 else:455 raise ValueError,"wrong paramter %s used to set model %s. Choose\456 parameter name within %s"%(item, model.model.name,str(model.model.getParamList()))457 return471 temp=[] 472 for item in pars: 473 if item in new_model.model.getParamList(): 474 temp.append(item) 475 self.paramList.append(item) 476 else: 477 478 msg = "wrong parameter %s used"%str(item) 479 msg += "to set model %s. Choose"%str(new_model.model.name) 480 msg += "parameter name within %s"%str(new_model.model.getParamList()) 481 raise ValueError,msg 482 458 483 #A fitArrange is already created but contains dList only at Uid 459 484 if self.fitArrangeDict.has_key(Uid): 460 self.fitArrangeDict[Uid].set_model( model)485 self.fitArrangeDict[Uid].set_model(new_model) 461 486 self.fitArrangeDict[Uid].pars= pars 462 487 else: 463 488 #no fitArrange object has been create with this Uid 464 489 fitproblem = FitArrange() 465 fitproblem.set_model( model)490 fitproblem.set_model(new_model) 466 491 fitproblem.pars= pars 467 492 self.fitArrangeDict[Uid] = fitproblem
Note: See TracChangeset
for help on using the changeset viewer.