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/fitting.py

    r57f3320 r6f73a08  
    44 
    55from copy import deepcopy  
    6 from sans.guitools.plottables import Data1D, Theory1D 
    7 from sans.guitools.PlotPanel import PlotPanel 
     6#from sans.guitools.plottables import Data1D, Theory1D 
     7#from sans.guitools.PlotPanel import PlotPanel 
     8from danse.common.plottools.plottables import Data1D, Theory1D, Data2D 
     9from danse.common.plottools.PlotPanel import PlotPanel 
    810from sans.guicomm.events import NewPlotEvent, StatusEvent   
    9 from sans.fit.AbstractFitEngine import Model,Data 
     11from sans.fit.AbstractFitEngine import Model,Data,FitData1D,FitData2D 
    1012from fitproblem import FitProblem 
    1113from fitpanel import FitPanel 
     
    8284        self.graph=graph 
    8385        for item in graph.plottables: 
    84             if item.name==graph.selected_plottable and item.__class__.__name__ is not "Theory1D": 
    85                 return [["Select Data", "Dialog with fitting parameters ", self._onSelect]]  
     86            if item.__class__.__name__ is "Data2D": 
     87                return [["Fit Data2D", "Dialog with fitting parameters ", self._onSelect]]  
     88            else: 
     89                if item.name==graph.selected_plottable and item.__class__.__name__ is not "Theory1D": 
     90                    return [["Select Data", "Dialog with fitting parameters ", self._onSelect]]  
    8691        return []    
    8792 
     
    138143        self.panel = event.GetEventObject() 
    139144        for item in self.panel.graph.plottables: 
    140             if item.name == self.panel.graph.selected_plottable: 
     145            if item.name == self.panel.graph.selected_plottable or item.__class__.__name__ is "Data2D": 
    141146                #find a name for the page created for notebook 
    142147                try: 
     
    147152                    page = self.fit_panel.add_fit_page(name) 
    148153                    # add data associated to the page created 
    149                     page.set_data_name(item) 
    150                     #create a fitproblem storing all link to data,model,page creation 
    151                     self.page_finder[page]= FitProblem() 
    152                     #data_for_park= Data(sans_data=item) 
    153                     #datap = PlottableData(data=data_for_park,data1d=item) 
    154                     #self.page_finder[page].add_data(datap) 
    155                     self.page_finder[page].add_data(item) 
     154                    if item.__class__.__name__=='Data1D': 
     155                        new_item=FitData1D(item) 
     156                    else: 
     157                        new_item=FitData2D(item) 
     158                    if page !=None:     
     159                        page.set_data_name(new_item) 
     160                        #create a fitproblem storing all link to data,model,page creation 
     161                        self.page_finder[page]= FitProblem() 
     162                        #data_for_park= Data(sans_data=item) 
     163                        #datap = PlottableData(data=data_for_park,data1d=item) 
     164                        #self.page_finder[page].add_data(datap) 
     165                        self.page_finder[page].add_data(new_item) 
    156166                except: 
    157                     #raise 
    158                     wx.PostEvent(self.parent, StatusEvent(status="Fitting error: \ 
    159                     data already Selected ")) 
     167                    raise 
     168                    wx.PostEvent(self.parent, StatusEvent(status="Creating Fit page: %s"\ 
     169                    %sys.exc_value)) 
    160170    def schedule_for_fit(self,value=0,fitproblem =None):   
    161171        """ 
     
    224234            for page, value in self.page_finder.iteritems(): 
    225235                if page==cpage : 
    226                     data = value.get_data() 
     236                    #fitdata = value.get_data() 
    227237                    list = value.get_model() 
    228238                    model= list[0] 
     
    258268            for page, value in self.page_finder.iteritems(): 
    259269                if value.get_scheduled()==1: 
    260                     data = value.get_data() 
     270                    #fitdata = value.get_data() 
    261271                    list = value.get_model() 
    262272                    model= list[0] 
     
    305315        for page, value in self.page_finder.iteritems(): 
    306316            if  value.get_scheduled() ==1 : 
    307                 data = value.get_data() 
     317                fitdata = value.get_data() 
    308318                list=value.get_model() 
    309319                model=list[0] 
     
    319329                    #Do the single fit 
    320330                    self.fitter.set_model(Model(model), self.id, pars)  
    321                     self.fitter.set_data(Data(sans_data=data),self.id,qmin,qmax) 
     331                    self.fitter.set_data(fitdata,self.id,qmin,qmax) 
    322332                    self.fitter.select_problem_for_fit(Uid=self.id,value=value.get_scheduled()) 
    323333                    page_fitted=page 
     
    336346            self._single_fit_completed(result,pars,page_fitted,qmin,qmax) 
    337347        except: 
     348            raise 
    338349            wx.PostEvent(self.parent, StatusEvent(status="Single Fit error: %s" % sys.exc_value)) 
    339350            return 
     
    360371            try: 
    361372                if value.get_scheduled()==1: 
    362                     data = value.get_data() 
     373                    fitdata = value.get_data() 
    363374                    list = value.get_model() 
    364375                    model= list[0] 
     
    389400                             
    390401                    self.fitter.set_model(new_model, self.id, pars)  
    391                     self.fitter.set_data(Data(sans_data=data),self.id,qmin,qmax) 
     402                    self.fitter.set_data(fitdata,self.id,qmin,qmax) 
    392403                    self.fitter.select_problem_for_fit(Uid=self.id,value=value.get_scheduled()) 
    393404                    self.id += 1  
     
    433444            current_pg.set_panel(model) 
    434445            try: 
    435                 data=self.page_finder[current_pg].get_data() 
    436                 M_name="M"+str(self.index_model)+"= "+name+"("+data.group_id+")" 
     446                fitdata=self.page_finder[current_pg].get_data() 
     447                M_name="M"+str(self.index_model)+"= "+name+"("+fitdata.data.group_id+")" 
    437448            except: 
    438449                raise  
     
    468479                if  page==currpage :   
    469480                    break  
    470             data=self.page_finder[page].get_data() 
     481            fitdata=self.page_finder[page].get_data() 
    471482            list=self.page_finder[page].get_model() 
    472483            model=list[0] 
    473             if data!=None: 
     484            data=fitdata.data 
     485             
     486            if data!=None and data.__class__.__name__ != 'Data2D': 
    474487                theory = Theory1D(x=[], y=[]) 
    475488                theory.name = "Model" 
     
    498511                            tempx = data.x[i] 
    499512                            tempy = model.run(tempx) 
    500                              
    501513                            theory.x.append(tempx)  
    502514                            theory.y.append(tempy) 
     
    509521                    theory.x.append(tempx) 
    510522                    theory.y.append(tempy) 
    511                     wx.PostEvent(self.parent, NewPlotEvent(plot=theory, title="Analytical model")) 
     523                    
    512524                except: 
    513525                    wx.PostEvent(self.parent, StatusEvent(status="fitting \ 
    514526                        skipping point x %g %s" %(qmax, sys.exc_value))) 
    515                 
    516              
     527            else: 
     528                theory=Data2D(data.image, data.err_image) 
     529                theory.x_bins= data.x_bins 
     530                theory.y_bins= data.y_bins 
     531                tempy=[] 
     532                for i in range(len(data.x_bins)): 
     533                    theory.image= model.runXY([data.x_bins[i],data.y_bins[i]]) 
     534                    #print "fitting : plot_helper:", theory.image 
     535                #print data.image 
     536                #theory.image=model.runXY(data.image) 
     537                theory.image=model.run(data.image) 
     538                print "fitting : plot_helper:",theory.image 
     539                theory.zmin= data.zmin 
     540                theory.zmax= data.zmax 
     541                theory.xmin= data.xmin 
     542                theory.xmax= data.xmax 
     543                theory.ymin= data.ymin 
     544                theory.ymax= data.ymax 
     545                 
     546        wx.PostEvent(self.parent, NewPlotEvent(plot=theory, title="Analytical model")) 
     547         
     548         
    517549    def _on_model_menu(self, evt): 
    518550        """ 
Note: See TracChangeset for help on using the changeset viewer.