Changeset 2dbb681 in sasview for sansview/perspectives


Ignore:
Timestamp:
Oct 21, 2008 12:30:12 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:
5893cdb
Parents:
b3328d8
Message:

change window title

Location:
sansview/perspectives/fitting
Files:
6 edited

Legend:

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

    r693ab78 r2dbb681  
    135135        ix +=2 
    136136        self.sizer1.Add(self.btFit,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    137         iy+= 1 
    138         ix = 3 
     137        ix+= 1 
    139138        self.sizer1.Add( self.btClose,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     139        ix= 1 
     140        iy+=1 
     141        self.sizer1.Add((20,20),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    140142        # contains link between  model ,all its parameters, and panel organization 
    141143        self.parameters=[] 
     
    183185            @return residuals 
    184186        """ 
    185         print self.data.x 
    186         print self.data.y 
    187         print self.data.dy 
    188187         
    189188        flag=self.checkFitRange() 
     
    293292        valueMax = self.xmax.GetValue() 
    294293        # Check for possible values entered 
    295         print "fitpage: checkfitrange:",valueMin,valueMax 
     294        #print "fitpage: checkfitrange:",valueMin,valueMax 
    296295        try: 
    297296            if (float(valueMax)> float(valueMin)): 
     
    341340        self.model = model 
    342341        keys = self.model.getParamList() 
     342        print "fitpage1D : dispersion list",self.model.getDispParamList() 
    343343        keys.sort() 
    344344        iy = 1 
     
    436436            for item in self.parameters: 
    437437                try: 
    438                      name=str(item[0].GetLabelText()) 
    439                      value= float(item[1].GetValue()) 
    440                      self.model.setParam(name,value)  
     438                      
     439                    name=str(item[0].GetLabelText()) 
     440                    value= float(item[1].GetValue()) 
     441                    self.model.setParam(name,value)  
    441442                except: 
    442443                     wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 
  • sansview/perspectives/fitting/fitpage2D.py

    r9d31a8b r2dbb681  
    157157        ix +=2 
    158158        self.sizer1.Add(self.btFit,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    159         iy+= 1 
    160         ix = 3 
     159        ix+= 1 
    161160        self.sizer1.Add( self.btClose,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     161        ix= 1 
     162        iy+=1 
     163        self.sizer1.Add((20,20),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    162164        # contains link between  model ,all its parameters, and panel organization 
    163165        self.parameters=[] 
  • sansview/perspectives/fitting/fitpanel.py

    r693ab78 r2dbb681  
    102102        if  page_title !=self.draw_model_name or self.draw_model_name ==None:  
    103103            from modelpage import ModelPage 
    104             panel = ModelPage(self.nb,model,description, -1) 
     104            panel = ModelPage(self.nb,model, -1) 
    105105            panel.set_manager(self.manager) 
    106106            panel.set_owner(self.event_owner) 
     
    151151             selected on that page. remove its reference into page_finder (fitting module) 
    152152        """ 
    153         
    154         sim_page = self.nb.GetPage(0) 
    155         selected_page = self.nb.GetPage(self.nb.GetSelection()) 
    156          
    157         if sim_page != selected_page: 
    158             # remove the check box link to the model name of this page (selected_page) 
    159             sim_page.remove_model(selected_page) 
    160             #remove that page from page_finder of fitting module 
    161             page_finder=self.manager.get_page_finder()  
    162             for page, value in page_finder.iteritems(): 
    163                 if page==selected_page: 
    164                     del page_finder[page] 
    165                     break 
    166             #Delete the page from notebook 
    167             page_number = self.nb.GetSelection() 
    168             if self.nb.GetPageText(page_number)== self.page_name: 
    169                 self.draw_model_name=None 
    170                  
    171             selected_page.Destroy() 
    172             self.nb.RemovePage(page_number) 
    173             #self.name=None 
    174             self.fit_page_name=None 
     153        try: 
     154            sim_page = self.nb.GetPage(0) 
     155            selected_page = self.nb.GetPage(self.nb.GetSelection()) 
    175156             
     157            if sim_page != selected_page: 
     158                # remove the check box link to the model name of this page (selected_page) 
     159                sim_page.remove_model(selected_page) 
     160                #remove that page from page_finder of fitting module 
     161                page_finder=self.manager.get_page_finder()  
     162                for page, value in page_finder.iteritems(): 
     163                    if page==selected_page: 
     164                        del page_finder[page] 
     165                        break 
     166                #Delete the page from notebook 
     167                page_number = self.nb.GetSelection() 
     168                if self.nb.GetPageText(page_number)== self.page_name: 
     169                    self.draw_model_name=None 
     170                     
     171                selected_page.Destroy() 
     172                self.nb.RemovePage(page_number) 
     173                #self.name=None 
     174                self.fit_page_name=None 
     175        except: 
     176            raise 
     177        print "fitpanel", self.draw_model_name  
    176178    def set_model_list(self,dict): 
    177179         """  
  • sansview/perspectives/fitting/fitting.py

    r693ab78 r2dbb681  
    1111from fitpanel import FitPanel 
    1212 
    13 import models 
     13import models,modelpage 
    1414import fitpage1D,fitpage2D 
    1515import park 
     
    6060        id2 = wx.NewId() 
    6161        owner.Bind(models.EVT_MODEL,self._on_model_menu) 
     62        #owner.Bind(modelpage.EVT_MODEL,self._on_model_menu) 
    6263        self.fit_panel.set_owner(owner) 
    6364        self.fit_panel.set_model_list(self.menu_mng.get_model_list()) 
     
    8485        for item in graph.plottables: 
    8586            if item.__class__.__name__ is "Data2D": 
    86                 return [["Fit Data2D", "Dialog with fitting parameters ", self._onSelect]]  
     87                return [["Select data  for Fitting",\ 
     88                          "Dialog with fitting parameters ", self._onSelect]]  
    8789            else: 
    8890                if item.name==graph.selected_plottable and\ 
    8991                 item.__class__.__name__ is  "Data1D": 
    90                     return [["Fit Data1D", "Dialog with fitting parameters ", self._onSelect]]  
     92                    return [["Select data  for Fitting", \ 
     93                             "Dialog with fitting parameters ", self._onSelect]]  
    9194        return []    
    9295 
     
    539542                theory.image=model.runXY(data.image) 
    540543                 
    541                 print "fitting : plot_helper:",theory.image 
     544                #print "fitting : plot_helper:",theory.image 
    542545                theory.zmin= data.zmin 
    543546                theory.zmax= data.zmax 
     
    555558        """ 
    556559        name="Model View" 
    557         model=evt.modelinfo.model() 
    558         description=evt.modelinfo.description 
     560        model=evt.model() 
     561         
     562        description=model.description 
    559563        self.fit_panel.add_model_page(model,description,name)        
    560564        self.draw_model(model) 
     
    573577            dy[i] = math.sqrt(math.fabs(y[i])) 
    574578        try: 
    575             
    576579            new_plot = Theory1D(x, y) 
    577580            new_plot.name = "Model" 
     
    581584            wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, title="Analytical model")) 
    582585        except: 
    583             wx.PostEvent(self.parent, StatusEvent(status="fitting \ 
    584                         skipping point x %g %s" %(qmax, sys.exc_value))) 
    585  
     586            raise 
    586587if __name__ == "__main__": 
    587588    i = Plugin() 
  • sansview/perspectives/fitting/modelpage.py

    r00561739 r2dbb681  
    3939     
    4040     
    41     def __init__(self, parent,model,description, *args, **kwargs): 
     41    def __init__(self, parent,model, *args, **kwargs): 
    4242        wx.Panel.__init__(self, parent, *args, **kwargs) 
    4343        """  
     
    8080        # model on which the fit would be performed 
    8181        self.model=model 
    82         self.description=description 
    83         self.set_panel(model,description) 
     82        try: 
     83            print"init modelpage",model.name 
     84            self.set_panel(model) 
     85        except: 
     86            raise 
    8487        # preview selected model name 
    8588        self.prevmodel_name=model.__class__.__name__ 
     
    9598        self.SetSizer(self.vbox) 
    9699        self.Centre() 
    97          
     100        
    98101         
    99102    def onClose(self,event): 
     
    123126        id=0 
    124127        self.model_list_box=dict 
    125         for item in self.model_list_box.itervalues(): 
    126             if hasattr(item, "name"): 
    127                 name = item.name 
    128             else: 
    129                 name = item.__name__ 
    130              
     128        list_name=[] 
     129        for item in  self.model_list_box.itervalues(): 
     130            name = item.__name__ 
     131            model=item() 
     132            if hasattr(model, "name"): 
     133                name = model.name 
     134            list_name.append(name) 
     135        list_name.sort()    
     136        for name in list_name: 
    131137            self.modelbox.Insert(name,int(id)) 
    132138            id+=1 
    133              
    134             wx.EVT_COMBOBOX(self.modelbox,-1, self._on_select_model)  
     139        wx.EVT_COMBOBOX(self.modelbox,-1, self._on_select_model)  
    135140        return 0 
    136141    
    137     def set_page(self, model,description): 
     142    def set_page(self, model,description=None): 
    138143        #print " modelpage: set_page was called",model 
    139144        self.model=model 
    140         self.description=description 
     145        name = self.model.__class__.__name__ 
    141146        if hasattr(self.model, "name"): 
    142147            name = self.model.name 
    143         else: 
    144             name = self.model.__class__.__name__ 
     148         
     149            
    145150        self.modelbox.SetValue(name) 
    146         self.set_panel(self.model,description) 
     151        self.set_panel(self.model) 
    147152        self.manager.draw_model(self.model) 
     153         
    148154    def _on_select_model(self,event): 
    149155        """ 
     
    153159        #print "modelpage: self.model_list_box ",self.model_list_box 
    154160        for item in self.model_list_box.itervalues(): 
    155             model=item() 
    156             #print "modelpage:model",model 
    157             if hasattr(model, "name"): 
    158                 name = model.name 
    159             else: 
    160                 name = model.__class__.__name__ 
    161             try: 
    162                 if name ==event.GetString(): 
    163                     self.model=model 
    164                     self.set_panel(self.model) 
    165                     self.manager.draw_model(self.model) 
    166             except: 
    167                 raise #ValueError,"model.name is not equal to model class name" 
     161            name = item.__name__ 
     162            items=item() 
     163            if hasattr(items, "name"): 
     164                name = items.name 
     165            print "fitpage: _on_select_model model name",name ,event.GetString() 
     166            if name ==event.GetString(): 
     167                model=items 
     168                print "fitpage: _on_select_model model name",name ,event.GetString() 
     169                self.manager.draw_model(model) 
     170                self.set_panel(model) 
    168171    def set_model_name(self,name): 
    169172        """  
     
    197200         
    198201         
    199     def set_panel(self,model,description=None): 
     202    def set_panel(self,model): 
    200203        """ 
    201204            Build the panel from the model content 
    202205            @param model: the model selected in combo box for fitting purpose 
    203206        """ 
    204      
     207         
    205208        self.sizer2.Clear(True) 
    206209        self.sizer1.Clear(True) 
     
    210213        keys = self.model.getParamList() 
    211214        keys.sort() 
     215        print "went here",self.model.name,model.description 
    212216        iy = 1 
    213217        ix = 0 
     
    216220                          wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    217221        ix += 1 
    218         self.cb01 = wx.StaticText(self, -1,str(description)) 
     222        self.cb01 = wx.StaticText(self, -1,str(model.description)) 
    219223        self.sizer1.Add(self.cb01,(iy, ix),(1,1),\ 
    220224                          wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     
    245249            ctl1.Bind(wx.EVT_TEXT_ENTER, self._onparamEnter) 
    246250            self.sizer2.Add(ctl1, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    247             
    248251            ix +=1 
    249252            # Units 
     
    262265            else: 
    263266                self.text2_4.Hide() 
    264         
    265267        self.vbox.Layout() 
    266268        self.GrandParent.GetSizer().Layout() 
    267          
     269        print "out" 
    268270         
    269271    def _onparamEnter(self,event): 
     
    280282                     value= float(item[1].GetValue()) 
    281283                     self.model.setParam(name,value) 
    282                      self.manager.draw_model(self.model) 
    283284                except: 
    284                      
    285285                     wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 
    286286                            "Model Drawing  Error:wrong value entered : %s"% sys.exc_value)) 
    287     
    288    
     287            self.manager.draw_model(self.model) 
     288   
  • sansview/perspectives/fitting/models.py

    r00561739 r2dbb681  
    66(ModelEvent, EVT_MODEL) = wx.lib.newevent.NewEvent() 
    77 
    8 class ModelInfo(object): 
    9     """ 
    10          this class contains description for a given model 
    11     """ 
    12     def __init__(self,model,description=None): 
    13         self.model=model 
    14         self.description=description 
    15          
    16     def set_description(self, descrition): 
    17         self.description =str(description) 
    18          
    19     def get_description(self): 
    20         return self.description 
     8 
    219     
    2210     
     
    8472        self.model_list = {} 
    8573        self.model_list_box = {} 
    86          
    87         model_info="shape-based models" 
     74        
    8875         
    8976        from sans.models.SphereModel import SphereModel 
    90         self.model_list[str(wx.NewId())] =  ModelInfo(SphereModel , model_info) 
     77        self.model_list[str(wx.NewId())] =  SphereModel 
    9178         
    9279        from sans.models.CylinderModel import CylinderModel 
    93         self.model_list[str(wx.NewId())] = ModelInfo(CylinderModel , model_info) 
     80        self.model_list[str(wx.NewId())] =CylinderModel 
    9481       
    9582        from sans.models.CoreShellModel import CoreShellModel 
    96         self.model_list[str(wx.NewId())] = ModelInfo(CoreShellModel , model_info) 
     83        self.model_list[str(wx.NewId())] = CoreShellModel  
    9784         
    9885        from sans.models.CoreShellCylinderModel import CoreShellCylinderModel 
    99         self.model_list[str(wx.NewId())] = ModelInfo(CoreShellCylinderModel , model_info) 
     86        self.model_list[str(wx.NewId())] =CoreShellCylinderModel 
    10087         
    10188        from sans.models.EllipticalCylinderModel import EllipticalCylinderModel 
    102         self.model_list[str(wx.NewId())] = ModelInfo(EllipticalCylinderModel , model_info) 
     89        self.model_list[str(wx.NewId())] =EllipticalCylinderModel 
    10390         
    10491        from sans.models.EllipsoidModel import EllipsoidModel 
    105         self.model_list[str(wx.NewId())] = ModelInfo(EllipsoidModel , model_info) 
     92        self.model_list[str(wx.NewId())] = EllipsoidModel  
    10693         
    10794        from sans.guitools.LineModel import LineModel 
    108         self.model_list[str(wx.NewId())]  = ModelInfo(LineModel , model_info) 
     95        self.model_list[str(wx.NewId())]  = LineModel 
    10996         
    11097         
     
    11299         
    113100        from sans.models.BEPolyelectrolyte import BEPolyelectrolyte 
    114         self.indep_model.append( ModelInfo( BEPolyelectrolyte , model_info) ) 
     101        self.indep_model.append(BEPolyelectrolyte ) 
    115102         
    116103        from sans.models.DABModel import DABModel 
    117         self.indep_model.append( ModelInfo(DABModel , model_info+ 
    118         "\n Evaluates F(x) = scale/( 1 + (x*L)^2 )^(2) +bkd") ) 
     104        self.indep_model.append(DABModel ) 
    119105         
    120106        from sans.models.DebyeModel import DebyeModel 
    121         self.indep_model.append( ModelInfo(DebyeModel , model_info+ 
    122         "\n Evaluates F(x) = 2( exp(-x)+x -1 )/x**2") ) 
     107        self.indep_model.append(DebyeModel ) 
    123108         
    124109        from sans.models.FractalModel import FractalModel 
     
    126111            def _Fractal(self, x): 
    127112                return FractalModel._Fractal(self, math.fabs(x)) 
    128         self.indep_model.append( ModelInfo(FractalAbsModel , model_info) ) 
     113        self.indep_model.append(FractalAbsModel) 
    129114         
    130115        from sans.models.LorentzModel import LorentzModel 
    131         self.indep_model.append( ModelInfo(LorentzModel , model_info+ 
    132                 "\n Evaluates F(x)= scale/( 1 + (x*L)^2 ) + bkd ") )  
     116        self.indep_model.append( LorentzModel)  
    133117             
    134118        from sans.models.PowerLawModel import PowerLawModel 
     
    139123                except: 
    140124                    print sys.exc_value   
    141         self.indep_model.append( ModelInfo(PowerLawAbsModel , model_info+ 
    142         "\n Evaluates abs(F(x)) \n with F(x) = scale* (x)^(m) + bkd ") ) 
    143                      
    144         
     125        self.indep_model.append( PowerLawAbsModel ) 
    145126        from sans.models.TeubnerStreyModel import TeubnerStreyModel 
    146         self.indep_model.append( ModelInfo(TeubnerStreyModel , model_info) ) 
    147          
    148          
    149            
    150          
    151          
    152        
    153          
     127        self.indep_model.append(TeubnerStreyModel ) 
     128     
    154129        #Looking for plugins 
    155130        self.plugins = findModels() 
     
    169144        self._getModelList() 
    170145        self.event_owner = event_owner 
    171          
    172146        shape_submenu= wx.Menu()  
    173147        indep_submenu = wx.Menu() 
    174148        added_models = wx.Menu() 
    175          
    176149        for id_str,value in self.model_list.iteritems(): 
    177             item = self.model_list[id_str] 
    178             name = item.model.__name__ 
     150            item = self.model_list[id_str]() 
     151            name = item.__class__.__name__ 
    179152            if hasattr(item, "name"): 
    180                 name = item.model.name 
    181             self.model_list_box[name] =value.model 
     153                name = item.name 
     154            self.model_list_box[name] =value 
    182155            shape_submenu.Append(int(id_str), name, name) 
    183156            wx.EVT_MENU(event_owner, int(id_str), self._on_model) 
    184157        modelmenu.AppendMenu(wx.NewId(), "Shapes...", shape_submenu, "List of shape-based models") 
    185          
    186158        id = wx.NewId() 
    187159        if len(self.indep_model_list) == 0: 
    188             for item in self.indep_model: 
     160            for items in self.indep_model: 
    189161                #if item not in self.indep_model_list.values(): 
    190162                    #self.indep_model_list[str(id)] = item 
    191                 self.model_list[str(id)]=item 
    192                 name = item.model.__name__ 
     163                self.model_list[str(id)]=items 
     164                item=items() 
     165                name = item.__class__.__name__ 
    193166                if hasattr(item, "name"): 
    194                     name = item.model.name 
     167                    name = item.name 
    195168                indep_submenu.Append(id,name, name) 
    196                 self.model_list_box[name] =item.model 
     169                self.model_list_box[name] =items 
    197170                wx.EVT_MENU(event_owner, int(id), self._on_model) 
    198171                id = wx.NewId()          
    199172        modelmenu.AppendMenu(wx.NewId(), "Shape-independent...", indep_submenu, "List of shape-independent models") 
    200          
    201          
    202          
    203         model_info="additional models" 
    204173        id = wx.NewId() 
    205174        if len(self.custom_models) == 0: 
    206             for item in self.plugins: 
     175            for items in self.plugins: 
    207176                #if item not in self.custom_models.values(): 
    208177                    #self.custom_models[str(id)] = item 
    209                 self.model_list[str(id)]=ModelInfo(item,model_info) 
    210                 name = item.__name__ 
     178                self.model_list[str(id)]=items 
     179                item=items() 
     180                name = item.__class__.__name__ 
    211181                if hasattr(item, "name"): 
    212182                    name = item.name 
    213183                added_models.Append(id, name, name) 
    214                 self.model_list_box[name] =item 
     184                self.model_list_box[name] =items 
    215185                wx.EVT_MENU(event_owner, int(id), self._on_model) 
    216186                id = wx.NewId() 
     
    231201            
    232202            model = self.model_list[str(evt.GetId())] 
    233             evt = ModelEvent(modelinfo=model) 
     203            evt = ModelEvent(model= model ) 
    234204            wx.PostEvent(self.event_owner, evt) 
    235205         
Note: See TracChangeset for help on using the changeset viewer.