Ignore:
Timestamp:
Sep 30, 2008 2:38:58 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:
8e81af0
Parents:
8bbab51
Message:

perform single fit when selecting one model on simul_page

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansview/perspectives/fitting/fitting.py

    r00561739 r948add7  
    158158                    wx.PostEvent(self.parent, StatusEvent(status="Fitting error: \ 
    159159                    data already Selected ")) 
    160                      
     160    def schedule_for_fit(self,value=0,fitproblem =None):   
     161        """ 
     162         
     163        """    
     164        if fitproblem !=None: 
     165            fitproblem.schedule_tofit(value) 
     166        else: 
     167            current_pg=self.fit_panel.get_current_page()  
     168            for page, val in self.page_finder.iteritems(): 
     169                if page ==current_pg : 
     170                    val.schedule_tofit(value) 
     171                    break 
     172                       
    161173                     
    162174    def get_page_finder(self): 
     
    199211         
    200212         
    201     def _single_fit_completed(self,result,pars,current_pg,qmin,qmax): 
     213    def _single_fit_completed(self,result,pars,cpage,qmin,qmax): 
    202214        """ 
    203215            Display fit result on one page of the notebook. 
     
    211223        try: 
    212224            for page, value in self.page_finder.iteritems(): 
    213                 if page== current_pg: 
     225                if page==cpage : 
    214226                    data = value.get_data() 
    215227                    list = value.get_model() 
     
    229241#            print "fitting result : stderr",result.stderr 
    230242             
    231             current_pg.onsetValues(result.fitness, result.pvec,result.stderr) 
    232             self.plot_helper(currpage=current_pg,qmin=qmin,qmax=qmax) 
     243            cpage.onsetValues(result.fitness, result.pvec,result.stderr) 
     244            self.plot_helper(currpage=cpage,qmin=qmin,qmax=qmax) 
    233245        except: 
    234246            raise 
     
    245257        try: 
    246258            for page, value in self.page_finder.iteritems(): 
    247                 if value.get_scheduled()=='True': 
     259                if value.get_scheduled()==1: 
    248260                    data = value.get_data() 
    249261                    list = value.get_model() 
     
    276288             
    277289        """ 
     290        #print "in single fitting" 
    278291        #set an engine to perform fit 
    279292        from sans.fit.Fitting import Fit 
     
    283296            id=0 
    284297        self.id = id 
     298        page_fitted=None 
     299        fit_problem=None 
    285300        #Get information (model , data) related to the page on  
    286301        #with the fit will be perform 
    287302        current_pg=self.fit_panel.get_current_page()  
     303        simul_pg=self.fit_panel.get_page(0) 
     304             
    288305        for page, value in self.page_finder.iteritems(): 
    289             if page ==current_pg : 
     306            if  value.get_scheduled() ==1 : 
    290307                data = value.get_data() 
    291308                list=value.get_model() 
    292309                model=list[0] 
    293                  
    294310                #Create list of parameters for fitting used 
    295311                pars=[] 
    296312                templist=[] 
    297313                try: 
    298                     templist=current_pg.get_param_list() 
     314                    #templist=current_pg.get_param_list() 
     315                    templist=page.get_param_list() 
     316                    for element in templist: 
     317                        pars.append(str(element[0].GetLabelText())) 
     318                    pars.sort() 
     319                    #Do the single fit 
     320                    self.fitter.set_model(Model(model), self.id, pars)  
     321                    self.fitter.set_data(Data(sans_data=data),self.id,qmin,qmax) 
     322                    self.fitter.select_problem_for_fit(Uid=self.id,value=value.get_scheduled()) 
     323                    page_fitted=page 
     324                    self.id+=1 
     325                    self.schedule_for_fit( 0,value)  
    299326                except: 
    300327                    wx.PostEvent(self.parent, StatusEvent(status="Fitting error: %s" % sys.exc_value)) 
    301328                    return 
    302                
    303                 for element in templist: 
    304                     try: 
    305                        pars.append(str(element[0].GetLabelText())) 
    306                     except: 
    307                         wx.PostEvent(self.parent, StatusEvent(status="Fitting error: %s" % sys.exc_value)) 
    308                         return 
    309329                # make sure to keep an alphabetic order  
    310                 #of parameter names in the list 
    311                 pars.sort() 
    312                 #Do the single fit 
    313                 try: 
    314                     self.fitter.set_model(Model(model), self.id, pars)  
    315                     #print "fitting: data .x",data.x 
    316                     #print "fitting: data .y",data.y 
    317                     #print "fitting: data .dy",data.dy 
    318                     self.fitter.set_data(Data(sans_data=data),self.id,qmin,qmax) 
    319                  
    320                     result=self.fitter.fit() 
    321                     self._single_fit_completed(result,pars,current_pg,qmin,qmax) 
    322                     
    323                 except: 
    324                     raise 
    325                     wx.PostEvent(self.parent, StatusEvent(status="Single Fit error: %s" % sys.exc_value)) 
    326                     return 
     330                #of parameter names in the list       
     331        try: 
     332            result=self.fitter.fit() 
     333            #self._single_fit_completed(result,pars,current_pg,qmin,qmax) 
     334            print "single_fit: result",result.fitness,result.pvec,result.stderr 
     335            #self._single_fit_completed(result,pars,page,qmin,qmax) 
     336            self._single_fit_completed(result,pars,page_fitted,qmin,qmax) 
     337        except: 
     338            wx.PostEvent(self.parent, StatusEvent(status="Single Fit error: %s" % sys.exc_value)) 
     339            return 
    327340          
    328341    def _on_simul_fit(self, id=None,qmin=None,qmax=None): 
     
    346359        for page, value in self.page_finder.iteritems(): 
    347360            try: 
    348                 if value.get_scheduled()=='True': 
     361                if value.get_scheduled()==1: 
    349362                    data = value.get_data() 
    350363                    list = value.get_model() 
     
    363376                    new_model=Model(model) 
    364377                    param_name,param_value=value.get_model_param() 
    365                     print "fitting ",param_name 
    366                     new_model.set( param_name =str(param_value)) 
    367                     #self.fitter.set_model(new_model, self.id, pars)  
     378                    print "fitting ",param_name,value.get_model_param() 
     379                    if param_value !=None: 
     380                        new_model.set( param_name =str(param_value)) 
     381                    self.fitter.set_model(new_model, self.id, pars)  
    368382                    self.fitter.set_data(Data(sans_data=data),self.id,qmin,qmax) 
    369                  
     383                    self.fitter.select_problem_for_fit(Uid=self.id,value=value.get_scheduled()) 
    370384                    self.id += 1  
    371385            except: 
Note: See TracChangeset for help on using the changeset viewer.