Ignore:
Timestamp:
Apr 16, 2009 9:20:40 AM (15 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:
847091f
Parents:
d1e0473
Message:

plotting with smearer object fixed

File:
1 edited

Legend:

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

    rd1e0473 r997131a  
    2222from basepage import BasicPage 
    2323from basepage import PageInfoEvent 
    24  
     24from DataLoader.qsmearing import smear_selection 
    2525 
    2626class FitPage(BasicPage): 
     
    4848        self._fill_range_sizer()  
    4949        self._on_select_model(event=None) 
    50      
     50        if self.data !=None: 
     51            self.smearer = smear_selection( self.data ) 
     52             
    5153        ## to update the panel according to the fit engine type selected 
    5254        self.Bind(EVT_FITTER_TYPE,self._on_engine_change) 
     
    452454        self.set_model_param_sizer(self.model) 
    453455        try: 
    454             self.compute_chisqr() 
     456            temp_smear= None 
     457            if self.enable_smearer.GetValue(): 
     458                temp_smear= self.smearer 
     459            self.compute_chisqr(temp_smear) 
    455460        except: 
    456461            ## error occured on chisqr computation 
     
    603608            are compute when fitting 
    604609        """ 
    605         smear =None 
    606         msg="" 
     610         
    607611        if self.enable_smearer.GetValue(): 
    608             from DataLoader.qsmearing import smear_selection 
    609             smear = smear_selection( self.data ) 
     612            msg="" 
     613            temp_smearer= self.smearer 
    610614            if hasattr(self.data,"dxl"): 
    611615                msg= ": Resolution smearing parameters" 
    612616            if hasattr(self.data,"dxw"): 
    613617                msg= ": Slit smearing parameters" 
    614             if smear ==None: 
     618            if self.smearer ==None: 
    615619                wx.PostEvent(self.manager.parent, StatusEvent(status=\ 
    616620                            "Data contains no smearing information")) 
     
    618622                wx.PostEvent(self.manager.parent, StatusEvent(status=\ 
    619623                            "Data contains smearing information %s"%msg)) 
     624        else: 
     625            temp_smearer = None 
    620626        ## set smearing value whether or not the data contain the smearing info 
    621         self.manager.set_smearer(smear, qmin= float(self.qmin_x), 
     627        self.manager.set_smearer(temp_smearer, qmin= float(self.qmin_x), 
    622628                                      qmax= float(self.qmax_x))  
    623629        ##Calculate chi2 
    624         self.compute_chisqr( 
     630        self.compute_chisqr(smearer= temp_smearer 
    625631        ## save the state enable smearing 
    626632        self.save_current_state() 
     
    668674     
    669675         
    670     def compute_chisqr(self): 
     676    def compute_chisqr(self , smearer=None): 
    671677        """  
    672678            compute chi square given a model and data 1D and set the value 
     
    692698                        dy= numpy.asarray(self.data.dy) 
    693699                    dy[dy==0]=1 
     700                     
    694701                    if self.qmin_x==None and self.qmax_x==None:  
    695702                        fx =numpy.asarray([self.model.run(v) for v in x]) 
     703                        if smearer!=None: 
     704                            fx= smearer(fx) 
    696705                        temp=(y - fx)/dy 
    697706                        res= temp*temp 
     
    699708                        idx = (x>= self.qmin_x) & (x <=self.qmax_x) 
    700709                        fx = numpy.asarray([self.model.run(item)for item in x[idx ]]) 
     710                        if smearer!=None: 
     711                            fx= smearer(fx) 
    701712                        temp=(y[idx] - fx)/dy[idx] 
    702713                        res= temp*temp 
     
    708719                    self.tcChi.SetLabel(format_number(math.fabs(sum/ len(res)))) 
    709720            except: 
    710                 wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 
    711                             "Chisqr cannot be compute: %s"% sys.exc_value)) 
    712                 return  
     721                raise 
     722                #wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 
     723                #            "Chisqr cannot be compute: %s"% sys.exc_value)) 
     724                #return  
    713725             
    714726     
Note: See TracChangeset for help on using the changeset viewer.