Ignore:
Timestamp:
Oct 9, 2008 2:41:05 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:
126a761
Parents:
385d464
Message:

working on fitting data 2 D

File:
1 edited

Legend:

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

    r948add7 r6f73a08  
    140140        # flag to check if the user has selected a new model in the combox box 
    141141        self.model_hasChanged=False 
    142         #flag to check if the user has selected a new data 
    143         self.data_hasChanged=False 
     142         
    144143        #dictionary of model name and model class 
    145144        self.model_list_box={} 
    146         # Data1D to make a deep comparison between 2 Data1D for checking data 
    147         #change 
    148         from sans.guitools.plottables import Data1D 
    149         self.prevData = Data1D(x=[], y=[],dx=None, dy=None) 
    150         self.prevData.name= None 
     145        #  comparison between 2 group_id for checking data changes 
     146        self.prev_group_id= None 
    151147         
    152148        self.data=None 
     
    191187                self.GrandParent.GetSizer().Layout() 
    192188                 
    193                  
    194     def copy_data(self,dataset): 
    195         """ 
    196              copy a select data in the panel to compared with the previous selected data 
    197              @param dataset: the data selected 
    198              @note : everything a data is selected, the panel check is it is different  
    199              from the previous selected data 
    200         """ 
    201         try: 
    202             if dataset !=None: 
    203                 self.prevData.x= copy.deepcopy(dataset.x) 
    204                 self.prevData.y= copy.deepcopy(dataset.y) 
    205                 self.prevData.name=dataset.name 
    206                 if dataset.dy==None: 
    207                     self.prevData.dy= copy.deepcopy(dataset.dy) 
    208         except: 
    209             raise ValueError, " copy_data: cannot copy data"  
    210          
     189   
    211190         
    212191    def onClose(self,event): 
     
    224203                qmin = float(self.xmin.GetValue()) 
    225204                qmax = float(self.xmax.GetValue()) 
    226                 x,y,dy = [numpy.asarray(v) for v in (self.data.x,self.data.y,self.data.dy)] 
    227                 if qmin==None and qmax==None:  
    228                     fx =numpy.asarray([self.model.run(v) for v in x]) 
    229                     res=(y - fx)/dy 
    230                 else: 
    231                     idx = (x>= qmin) & (x <=qmax) 
    232                     fx = numpy.asarray([self.model.run(item)for item in x[idx ]]) 
    233                     res= (y[idx] - fx)/dy[idx]   
     205                #x,y,dy = [numpy.asarray(v) for v in (self.data.x,self.data.y,self.data.dy)] 
     206                #if qmin==None and qmax==None:  
     207                #    fx =numpy.asarray([self.model.run(v) for v in x]) 
     208                #    res=(y - fx)/dy 
     209                #else: 
     210                #    idx = (x>= qmin) & (x <=qmax) 
     211                #    fx = numpy.asarray([self.model.run(item)for item in x[idx ]]) 
     212                #    res= (y[idx] - fx)/dy[idx]   
     213                self.data.setFitRange(qmin,qmax) 
     214                res=self.data.residuals(self.model.runXY) 
    234215                sum=0 
    235216                for item in res: 
     
    304285            flag=self.checkFitRange() 
    305286            if flag==True and self.model!=None: 
    306                  self.manager.redraw_model(float(self.xmin.GetValue())\ 
     287                print"fit page",self.xmin.GetValue(),self.xmax.GetValue() 
     288                self.manager.redraw_model(float(self.xmin.GetValue())\ 
    307289                                               ,float(self.xmax.GetValue())) 
    308             
    309290        except: 
     291 
    310292            wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 
    311293                            "Drawing  Error:wrong value entered %s"% sys.exc_value)) 
     
    322304        valueMax = self.xmax.GetValue() 
    323305        # Check for possible values entered 
    324          
     306        print "fitpage: checkfitrange:",valueMin,valueMax 
    325307        try: 
    326308            if (float(valueMax)> float(valueMin)): 
     
    340322        return flag 
    341323     
    342     def check_data_change(self,dataset): 
    343         """ 
    344              check if data selected has changed and set flag self.data_hasChanged 
    345              has true is changed or false is unchanged 
    346              @param dataset: data selected 
    347         """ 
    348         self.data_hasChanged=False 
    349         if self.prevData.__class__ !=dataset.__class__: 
    350             self.data_hasChanged=True 
    351              
    352         elif self.prevData.name != dataset.name: 
    353             self.data_hasChanged=True 
    354              
    355         elif len(self.prevData.x) != len(self.prevData.y): 
    356             self.data_hasChanged=True 
    357              
    358         else: 
    359             for i in range(len(dataset.x)): 
    360                 if self.prevData.x[i] !=dataset.x[i]: 
    361                     self.data_hasChanged=True 
    362                     break 
    363                  
    364                 if self.prevData.y[i] !=dataset.y[i]: 
    365                     self.data_hasChanged=True 
    366                     break 
    367                  
    368                 if dataset.dy !=None: 
    369                     if self.prevData.dy[i] !=dataset.dy[i]: 
    370                         self.data_hasChanged=True 
    371                         break 
    372                      
     324    
    373325                     
    374326    def set_data_name(self,dataset): 
     
    379331            for xmin and xmax range sizer 
    380332        """ 
    381         self.check_data_change(dataset) 
    382         if self.data_hasChanged==True: 
     333         
     334        if self.prev_group_id !=dataset.data.group_id: 
    383335            self._DataNameEnter() 
    384         self.data=dataset 
    385         self.copy_data(dataset) 
     336        self.data = dataset 
     337        self.prev_group_id=dataset.data.group_id 
    386338        #Displaying Data information 
    387         self.DataSource.SetValue(str(dataset.name)) 
    388         self._xaxis,self._xunit=dataset.get_xaxis() 
     339        self.DataSource.SetValue(str(dataset.data.name)) 
     340        self._xaxis,self._xunit=dataset.data.get_xaxis() 
    389341        self.text4_3.SetLabel(self._xaxis+"["+self._xunit+"]") 
    390342        self.text4_1.Show() 
    391343        self.text4_2.Show() 
    392344        self.text4_3.Show() 
    393          
    394         self.xmin.SetValue(format_number(min(dataset.x))) 
    395         self.xmin.Show() 
    396  
    397         self.xmax.SetValue(format_number(max(dataset.x))) 
    398         self.xmax.Show() 
    399          
     345        if not dataset.data.__class__.__name__=='Data2D': 
     346            self.xmin.SetValue(format_number(min(dataset.data.x))) 
     347            self.xmin.Show() 
     348            self.xmax.SetValue(format_number(max(dataset.data.x))) 
     349            self.xmax.Show() 
     350        else: 
     351            self.xmin.SetValue(format_number(numpy.min(dataset.data.image))) 
     352            self.xmin.Show() 
     353            self.xmax.SetValue(format_number(numpy.max(dataset.data.image))) 
     354            self.xmax.Show() 
    400355        if ((len(self.param_toFit ) >0) and self.DataSource.GetValue()and \ 
    401356            self.modelbox.GetValue() and (self.model_hasChanged ==False)): 
Note: See TracChangeset for help on using the changeset viewer.