Changeset 9e85792 in sasview for park_integration/ParkFitting.py


Ignore:
Timestamp:
Jul 2, 2008 5:37:38 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:
96510c8
Parents:
c125e0c
Message:

working ont he 3 rd used cases

File:
1 edited

Legend:

Unmodified
Added
Removed
  • park_integration/ParkFitting.py

    r4408fb0 r9e85792  
    1111#from sans.guitools import plottables 
    1212from Loader import Load 
    13  
     13from park import expression 
    1414class SansParameter(park.Parameter): 
    1515    """ 
     
    2020    def __init__(self, name, model): 
    2121         self._model, self._name = model,name 
     22         self.set(model.getParam(name)) 
    2223    def _getvalue(self): return self._model.getParam(self.name) 
    23     def _setvalue(self,value): self._model.setParam(self.name, value) 
     24    def _setvalue(self,value):  
     25        if numpy.isnan(value): 
     26            print "setting %s.%s to"%(self._model.name,self.name),value 
     27        self._model.setParam(self.name, value) 
    2428    value = property(_getvalue,_setvalue) 
    2529    def _getrange(self): 
     
    130134        """ 
    131135        mylist=[] 
     136        listmodel=[] 
    132137        for k,value in self.fitArrangeList.iteritems(): 
    133             couple=() 
    134             model=value.get_model() 
    135             parameters= self.set_param(model, pars) 
    136             model = Model(model) 
     138            #couple=() 
     139            sansmodel=value.get_model() 
     140            
     141            #parameters= self.set_param(model,model.name, pars) 
     142            parkmodel = Model(sansmodel) 
    137143            #print "model created",model.parameterset[0].value,model.parameterset[1].value 
    138144            # Make all parameters fitting parameters 
    139             for p in model.parameterset: 
    140                 p.set([-numpy.inf,numpy.inf]) 
    141                 #p.set([-10,10]) 
     145             
     146             
     147            for p in parkmodel.parameterset: 
     148                #p.range([-numpy.inf,numpy.inf]) 
     149                # Convert parameters with initial values into fitted parameters 
     150                # spanning all possible values.  Parameters which are expressions 
     151                # will remain as expressions. 
     152                if p.isfixed(): 
     153                    p.set([-numpy.inf,numpy.inf]) 
     154                 
    142155            Ldata=value.get_data() 
    143156            data=self._concatenateData(Ldata) 
    144             #print "this data",data 
    145             #print "data.residuals in createProblem",Ldata[0].residuals 
    146             #print "data.residuals in createProblem",data.residuals 
    147             #couple1=(model,Ldata[0]) 
    148             #mylist.append(couple1) 
    149             couple=(model,data) 
     157            data1=Data(data) 
     158            
     159            couple=(parkmodel,data1) 
    150160            mylist.append(couple) 
    151161        #print mylist 
     
    153163        #return model,data 
    154164     
    155     def fit(self,pars, qmin=None, qmax=None): 
     165    def fit(self,pars=None, qmin=None, qmax=None): 
    156166        """ 
    157167             Do the fit  
    158168        """ 
    159          
    160         modelList=self.createProblem(pars) 
    161         #model,data=self.createProblem() 
    162         #fitness=assembly.Fitness(model,data) 
    163          
     169     
     170        print "starting ParkFit.fit()" 
     171        modelList=self.createProblem() 
    164172        problem =  park.Assembly(modelList) 
    165         print "problem :",problem[0].parameterset,problem[0].parameterset.fitted 
     173        pars=problem.fit_parameters() 
     174        print "About to call eval",pars 
     175        print "initial",[p.value for p in pars] 
     176        problem.eval() 
     177        #print "M2.B",problem.parameterset['M2.B'].expression,problem.parameterset['M2.B'].value 
     178        #print "problem :",problem[0].parameterset,problem[0].parameterset.fitted 
     179         
    166180        #problem[0].parameterset['A'].set([0,1000]) 
    167181        #print "problem :",problem[0].parameterset,problem[0].parameterset.fitted 
    168182        fit.fit(problem, handler= fitresult.ConsoleUpdate(improvement_delta=0.1)) 
    169         #fit.fit(problem, handler= fitresult.ConsoleUpdate(improvement_delta=0.1)) 
    170183        
    171184     
     
    182195    def set_data(self,data,Uid): 
    183196        """ Receive plottable and create a list of data to fit""" 
    184         data=Data(data) 
     197         
    185198        if self.fitArrangeList.has_key(Uid): 
    186199            self.fitArrangeList[Uid].add_data(data) 
     
    194207        return self.fitArrangeList[Uid] 
    195208     
    196     def set_param(self,model, pars): 
     209    def set_param(self,model,name, pars): 
    197210        """ Recieve a dictionary of parameter and save it """ 
    198211        parameters=[] 
     
    200213            raise ValueError, "Cannot set parameters for empty model" 
    201214        else: 
    202             #for key ,value in pars: 
     215            model.name=name 
    203216            for key, value in pars.iteritems(): 
    204217                param = Parameter(model, key, value) 
Note: See TracChangeset for help on using the changeset viewer.