Changeset cf3b781 in sasview for park_integration/ParkFitting.py


Ignore:
Timestamp:
Jul 7, 2008 6:37:27 PM (16 years ago)
Author:
Gervaise Alina <gervyh@…>
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
Message:

need more tests.but usecase 3 implemented

File:
1 edited

Legend:

Unmodified
Added
Removed
  • park_integration/ParkFitting.py

    r9e85792 rcf3b781  
    77from park import fit,fitresult 
    88from park import assembly 
     9from park.fitmc import FitSimplex, FitMC 
    910 
    1011from sans.guitools.plottables import Data1D 
     
    6768        x,y,dy = [numpy.asarray(v) for v in (self.x,self.y,self.dy)] 
    6869        if self.qmin==None and self.qmax==None:  
     70            self.fx = fn(x) 
    6971            return (y - fn(x))/dy 
    7072         
    7173        else: 
     74            self.fx = fn(x[idx]) 
    7275            idx = x>=self.qmin & x <= self.qmax 
    7376            return (y[idx] - fn(x[idx]))/dy[idx] 
     
    115118        if data in self.dList: 
    116119            self.dList.remove(data) 
     120    def remove_model(self): 
     121        """ Remove model """ 
     122        model=None 
     123    def remove_datalist(self): 
     124        self.dList=[] 
    117125             
    118126class ParkFit: 
     
    160168            mylist.append(couple) 
    161169        #print mylist 
    162         return mylist 
     170        self.problem =  park.Assembly(mylist) 
    163171        #return model,data 
    164172     
     
    167175             Do the fit  
    168176        """ 
    169      
     177 
     178        self.createProblem(pars) 
    170179        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() 
    174183        print "About to call eval",pars 
    175184        print "initial",[p.value for p in pars] 
    176         problem.eval() 
     185        self.problem.eval() 
    177186        #print "M2.B",problem.parameterset['M2.B'].expression,problem.parameterset['M2.B'].value 
    178187        #print "problem :",problem[0].parameterset,problem[0].parameterset.fitted 
     
    180189        #problem[0].parameterset['A'].set([0,1000]) 
    181190        #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 
    184203     
    185204    def set_model(self,model,Uid): 
     
    219238        return parameters 
    220239     
    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.constraint 
    228     
    229     def set_constraint(self,constraint): 
    230         """  
    231             receive a string as a constraint 
    232             @param constraint: a string used to constraint some parameters to get a  
    233                 specific value 
    234         """ 
    235         self.constraint= constraint 
     240    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                 
    236255    def _concatenateData(self, listdata=[]): 
    237256        """ concatenate each fields of all Data contains ins listdata 
     
    287306     
    288307 
    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     
    307310    
    308311     
    309     
    310      
Note: See TracChangeset for help on using the changeset viewer.