Ignore:
Timestamp:
Oct 17, 2008 4:25:40 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:
d4f7262
Parents:
49815a2
Message:

2 d fit working better still not plotting all data

File:
1 edited

Legend:

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

    re1a310f r9d31a8b  
    3939     
    4040     
    41     def __init__(self, parent, *args, **kwargs): 
     41    def __init__(self, parent,data, *args, **kwargs): 
    4242        wx.Panel.__init__(self, parent, *args, **kwargs) 
    4343        """  
     
    5454        self.sizer1 = wx.GridBagSizer(5,5) 
    5555        self.DataSource      = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 
     56        self.DataSource.SetValue(str(data.name)) 
    5657        self.DataSource.SetToolTipString("name of data to fit") 
    5758        self.modelbox = wx.ComboBox(self, -1) 
     
    8384        ix += 1 
    8485        self.sizer3.Add(self.modelbox,(iy,ix),(1,1),  wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    85         ix = 1 
     86         
     87        ix = 0 
    8688        iy = 1 
     89        #set maximum range for x in linear scale 
     90        self.text4_3 = wx.StaticText(self, -1, 'Maximum Data\n Range (Linear)', style=wx.ALIGN_LEFT) 
     91        self.sizer4.Add(self.text4_3,(iy,ix),(1,1),\ 
     92                   wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     93        ix += 1 
    8794        self.text4_1 = wx.StaticText(self, -1, 'Min') 
    8895        self.sizer4.Add(self.text4_1,(iy, ix),(1,1),\ 
     
    94101                            wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    95102        #self.text4_2.Hide() 
     103        
     104        #self.text4_3.Hide() 
    96105        ix = 0 
    97106        iy += 1 
    98         #set maximum range for x in linear scale 
    99         self.text4_3 = wx.StaticText(self, -1, 'Maximum Data\n Range (Linear)', style=wx.ALIGN_LEFT) 
    100         self.sizer4.Add(self.text4_3,(iy,ix),(1,1),\ 
    101                    wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    102         #self.text4_3.Hide() 
     107        self.text4_4 = wx.StaticText(self, -1, 'x range') 
     108        self.sizer4.Add(self.text4_4,(iy, ix),(1,1),\ 
     109                            wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    103110        ix += 1 
    104111        self.xmin    = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 
     112        self.xmin.SetValue(format_number(data.xmin)) 
    105113        self.xmin.SetToolTipString("Minimun value of x in linear scale.") 
    106114        self.sizer4.Add(self.xmin,(iy, ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     
    110118        ix += 2 
    111119        self.xmax    = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 
     120        self.xmax.SetValue(format_number(data.xmax)) 
    112121        self.xmax.SetToolTipString("Maximum value of x in linear scale.") 
    113122        self.sizer4.Add(self.xmax,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     
    116125         
    117126        iy +=1 
    118         ix = 1 
     127        ix = 0 
     128        self.text4_5 = wx.StaticText(self, -1, 'y range') 
     129        self.sizer4.Add(self.text4_5,(iy, ix),(1,1),\ 
     130                            wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     131        ix += 1 
    119132        self.ymin    = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 
     133        self.ymin.SetValue(format_number(data.ymin)) 
    120134        self.ymin.SetToolTipString("Minimun value of y in linear scale.") 
    121135        self.sizer4.Add(self.ymin,(iy, ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     
    125139        ix += 2 
    126140        self.ymax    = wx.TextCtrl(self, -1,size=(_BOX_WIDTH,20)) 
     141        self.ymax.SetValue(format_number(data.ymax)) 
    127142        self.ymax.SetToolTipString("Maximum value of y in linear scale.") 
    128143        self.sizer4.Add(self.ymax,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     
    152167        self.model=None 
    153168        # preview selected model name 
    154         self.prevmodel_name=None 
    155         # flag to check if the user has selected a new model in the combox box 
    156         self.model_hasChanged=False 
     169        
    157170         
    158171        #dictionary of model name and model class 
    159172        self.model_list_box={} 
    160         #  comparison between 2 group_id for checking data changes 
    161         self.prev_group_id= None 
    162          
    163         self.data=None 
     173        
     174        self.data = data 
    164175        self.vbox.Layout() 
    165176        self.vbox.Fit(self)  
     
    183194        self.manager = manager 
    184195  
    185           
    186     def _DataNameEnter(self): 
    187         """ 
    188             reset the panel when a new data is selected 
    189         """ 
    190         if len(self.parameters )>0: 
    191             for item in self.parameters: 
    192                 item[0].SetValue(False) 
    193                 wx.EVT_CHECKBOX(self, item[0].GetId(), self.select_param) 
    194                 item[2].Hide() 
    195                 item[3].Clear() 
    196                 item[3].Hide() 
    197                 self.xmax.Disable() 
    198                 self.xmin.Disable() 
    199                 self.text1_1.Hide() 
    200                 self.tcChi.Clear() 
    201                 self.vbox.Layout()  
    202                 self.GrandParent.GetSizer().Layout() 
    203                  
    204    
    205196         
    206197    def onClose(self,event): 
     
    214205        """ 
    215206        flag=self.checkFitRange() 
     207        res=[] 
    216208        if flag== True: 
    217209            try: 
    218                 qmin = float(self.xmin.GetValue()) 
    219                 qmax = float(self.xmax.GetValue()) 
    220                 res=[] 
    221                 if qmin==None and qmax==None:  
    222                     for i in range(len(self.data.x_bins)): 
    223                         res.append( (self.data.image[i][i]- fn([self.data.x_bins[i],self.data.y_bins[i]]))\ 
    224                                     /self.data.err_image[i][i] ) 
    225                 else: 
    226                     for i in range(len(self.data.x_bins)): 
    227                         res.append( (self.data.image[i][i]- fn([self.data.x_bins[i],self.data.y_bins[i]]))\ 
    228                                     /self.data.err_image[i][i] ) 
     210                xmin = float(self.xmin.GetValue()) 
     211                xmax = float(self.xmax.GetValue()) 
     212                ymin = float(self.ymin.GetValue()) 
     213                ymax = float(self.ymax.GetValue()) 
     214                
     215                for i in range(len(self.data.y_bins)): 
     216                    if self.data.y_bins[i]>= ymin and self.data.y_bins[i]<= ymax: 
     217                        for j in range(len(self.data.x_bins)): 
     218                            if self.data.x_bins[j]>= xmin and self.data.x_bins[j]<= xmax: 
     219                                res.append( (self.data.image[j][i]- self.model.runXY(\ 
     220                                 [self.data.x_bins[j],self.data.y_bins[i]]))\ 
     221                                    /self.data.err_image[j][i] ) 
    229222                sum=0 
     223                
    230224                for item in res: 
    231225                    if numpy.isfinite(item): 
     
    335329        return flag 
    336330     
    337     
    338                      
    339     def set_data_name(self,dataset): 
    340         """  
    341             set data's name.if data has changed reset the panel and xmin and xmax 
    342             @param name: data 's name 
    343             @attention:  still  haven't find a better way to display Q name and unit 
    344             for xmin and xmax range sizer 
    345         """ 
    346          
    347         #if self.prev_group_id !=dataset.group_id: 
    348         #    self._DataNameEnter() 
    349         self.data = dataset 
    350         self.prev_group_id=dataset.group_id 
    351         #Displaying Data information 
    352         self.DataSource.SetValue(str(dataset.name)) 
    353         self.text4_3.SetLabel(self.data._xaxis+"["+self.data._xunit+"]") 
    354         self.text4_1.Show() 
    355         self.text4_2.Show() 
    356         self.text4_3.Show() 
    357          
    358         self.xmin.SetValue(format_number(dataset.xmin)) 
    359         self.xmax.SetValue(format_number(dataset.xmax)) 
    360         self.ymin.SetValue(format_number(dataset.ymin)) 
    361         self.ymax.SetValue(format_number(dataset.ymax)) 
    362         if ((len(self.param_toFit ) >0) and self.DataSource.GetValue()and \ 
    363             self.modelbox.GetValue() and (self.model_hasChanged ==False)): 
    364             self.xmin.Enable() 
    365             self.xmax.Enable() 
    366             self.ymin.Enable() 
    367             self.ymax.Enable() 
    368         else: 
    369             self.xmin.Disable() 
    370             self.xmax.Disable() 
    371             self.ymin.Disable() 
    372             self.ymax.Disable() 
    373              
    374         self.vbox.Layout() 
    375         self.GrandParent.GetSizer().Layout() 
    376          
    377          
    378     def set_model_name(self,name): 
    379         """  
    380             set model name. set also self.model_hasChanged to true is the model  
    381             type has changed or false if it didn't 
    382             @param name: model 's name 
    383         """ 
    384         self.model_hasChanged=False 
    385         if (name != self.prevmodel_name): 
    386             self.model_hasChanged=True 
    387         self.tcChi.Clear() 
    388         #self.modelbox.SetValue(str(name)) 
    389         self.prevmodel_name=self.modelbox.GetValue() 
    390         
    391              
     331   
    392332    def get_model_box(self):  
    393333        """ return reference to combox box self.model""" 
     
    540480                    list= [item[0],item[1],item[2],item[3]] 
    541481                    self.param_toFit.append(list ) 
    542                 if (self.modelbox.GetValue() and self.DataSource.GetValue()): 
    543                     if not (len(self.param_toFit ) >0): 
    544                         self.xmin.Disable() 
    545                         self.xmax.Disable() 
    546                         self.ymin.Disable() 
    547                         self.ymax.Disable() 
    548                     else: 
    549                         self.xmin.Enable() 
    550                         self.xmax.Enable() 
    551                         self.ymin.Enable() 
    552                         self.ymax.Enable() 
     482                
     483                if not (len(self.param_toFit ) >0): 
     484                    self.xmin.Disable() 
     485                    self.xmax.Disable() 
     486                    self.ymin.Disable() 
     487                    self.ymax.Disable() 
     488                else: 
     489                    self.xmin.Enable() 
     490                    self.xmax.Enable() 
     491                    self.ymin.Enable() 
     492                    self.ymax.Enable() 
    553493            else: 
    554494                for item in self.parameters: 
     
    579519        else: 
    580520            self.cb1.SetValue(False) 
    581         if (self.modelbox.GetValue() and self.DataSource.GetValue()): 
    582             if not (len(self.param_toFit ) >0): 
    583                 self.xmin.Disable() 
    584                 self.xmax.Disable() 
    585                 self.ymin.Disable() 
    586                 self.ymax.Disable() 
    587             else: 
    588                 self.xmin.Enable() 
    589                 self.xmax.Enable() 
    590                 self.ymin.Enable() 
    591                 self.ymax.Enable() 
    592         else: 
     521        
     522        if not (len(self.param_toFit ) >0): 
    593523            self.xmin.Disable() 
    594524            self.xmax.Disable() 
    595525            self.ymin.Disable() 
    596526            self.ymax.Disable() 
     527        else: 
     528            self.xmin.Enable() 
     529            self.xmax.Enable() 
     530            self.ymin.Enable() 
     531            self.ymax.Enable() 
     532       
    597533    
    598534        
Note: See TracChangeset for help on using the changeset viewer.