Changeset 925a30e in sasview for sansview/perspectives/fitting


Ignore:
Timestamp:
Mar 6, 2009 12:27:00 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:
7b73518
Parents:
f93dfcb
Message:

comments added to class

Location:
sansview/perspectives/fitting
Files:
2 deleted
5 edited

Legend:

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

    r98be89f r925a30e  
    175175            raise 
    176176        except: 
    177             wx.PostEvent(self.parent, StatusEvent(status="Fitting error: %s" % sys.exc_value)) 
    178             return  
     177            raise 
     178            #wx.PostEvent(self.parent, StatusEvent(status="Fitting error: %s" % sys.exc_value)) 
     179            #return  
    179180     
  • sansview/perspectives/fitting/fitpanel.py

    rb491d6e r925a30e  
    99(FitPageEvent, EVT_FIT_PAGE)   = wx.lib.newevent.NewEvent() 
    1010class FitPanel(wx.aui.AuiNotebook):     
    11 #class FitPanel(wx.aui.AuiNotebook,wx.panel): 
     11 
    1212    """ 
    1313        FitPanel class contains fields allowing to fit  models and  data 
     
    2222    CENTER_PANE = True 
    2323    def __init__(self, parent, *args, **kwargs): 
    24          
    25         #wx.aui.AuiNotebook.__init__(self,parent,-1, style=wx.aui.AUI_NB_SCROLL_BUTTONS ) 
    2624        wx.aui.AuiNotebook.__init__(self,parent,-1, style=wx.aui.AUI_NB_DEFAULT_STYLE  ) 
    2725         
     
    3836        self.about_page = PanelAbout(self, -1) 
    3937        self.AddPage(self.about_page,"welcome!") 
    40         #self.about_page.Disable() 
    41         #Creating a page for simultaneous fitting 
     38       
    4239        
    43          
    44         self._mgr = self.GetAuiManager() 
    45  
    46          
    4740        #dictionary of miodel {model class name, model class} 
    4841        self.model_list_box={} 
     
    6457    def onClosePage(self, event): 
    6558        """ 
     59             close page and remove all references to the closed page 
    6660        """ 
    6761        selected_page = self.GetPage(self.GetSelection()) 
     
    7872                    break 
    7973            #Delete the page from notebook 
    80             
    81             #print "on close",selected_page.name,self.GetPageText(page_number),self.draw_model_name 
    82              
    8374            if selected_page.name in self.fit_page_name: 
    8475                self.fit_page_name.remove(selected_page.name) 
    8576                 
    8677            if selected_page.name== self.draw_model_name: 
    87                 #print "went here" 
    8878                self.draw_model_name=None 
    8979                self.model_page=None 
     
    9181                self.model_page=None 
    9282                self.draw_model_name=None 
    93             #selected_page.Destroy() 
    94             #self.RemovePage(page_number) 
    95             #i=self.DeletePage(page_number) 
     83             
    9684        elif selected_page==self.about_page: 
    97             #selected_page.Destroy() 
    98             #self.DeletePage(page_number) 
    9985            self.about_page=None 
    10086        else: 
    101              
    10287            self.manager.sim_page=None   
    103             #self.DeletePage(page_number) 
    104     
    105  
    106  
     88         
    10789         
    10890    def set_manager(self, manager): 
     
    11294        """ 
    11395        self.manager = manager 
    114         #self.sim_page.set_manager(manager) 
     96 
    11597         
    11698    def set_owner(self,owner): 
     
    119101            @param owner: the class responsible of plotting 
    120102        """ 
    121         self.event_owner=owner 
     103        self.event_owner = owner 
    122104         
    123105    def add_sim_page(self): 
     106        """ 
     107            Add the simultaneous fit page 
     108        """ 
    124109        from simfitpage import SimultaneousFitPage 
    125110        self.sim_page = SimultaneousFitPage(self, id=-1) 
     
    131116        """  
    132117            Add a fitting page on the notebook contained by fitpanel 
    133             @param panel: contains in the page to add 
    134             @param name: title of the page tab 
     118            @param data: data to fit 
    135119            @return panel : page just added for futher used. is used by fitting module 
    136120        """      
    137121        try: 
    138             name = data.name # item in Data1D 
     122            name = data.name  
    139123        except: 
    140124            name = 'Fit' 
    141125         
    142         #if self.fit_page_name != name and self.draw_model_name !=name: 
    143126        if not name in self.fit_page_name : 
    144             #self.about_page.Disable() 
    145127            from fitpage1D import FitPage1D 
    146128            panel = FitPage1D(self,data, -1) 
    147129            panel.name=name 
    148             #m_name= "M"+str(self.count)   
     130             
    149131            panel.set_manager(self.manager) 
    150132            panel.set_owner(self.event_owner) 
     
    154136            self.fit_page_name.append(name) 
    155137     
    156             return panel #,m_name 
     138            return panel  
    157139        else: 
    158             return None #, None 
     140            return None  
    159141         
    160142    def _help_add_model_page(self,model,description,page_title, qmin=0, qmax=0.1, npts=50): 
     
    167149        """ 
    168150        from modelpage import ModelPage 
    169         #print "fitpanel model", model 
     151         
    170152        panel = ModelPage(self,model,page_title, -1) 
    171153        panel.set_manager(self.manager) 
     
    201183            @param npts: number of Q points 
    202184        """ 
    203         #print "self.draw_model_name none",self.draw_model_name 
    204185        if topmenu==True: 
    205186            if  self.draw_model_name ==None: 
    206                 #print "self.draw_model_name none" 
    207187                self._help_add_model_page(model,description,page_title, qmin=qmin, qmax=qmax, npts=npts) 
    208188            else: 
    209                 #self.model_page.name=page_title 
    210                 #self.draw_model_name=page_title 
    211                 #print "wnent here self.draw_model_name ",self.draw_model_name,self.model_page.name,self.model_page 
    212                  
    213189                self.model_page.select_model(model, page_title) 
    214190           
     
    217193            @return the current page selected 
    218194        """ 
    219         #return self.nb.GetCurrentPage() 
    220195        return self.GetPage(self.GetSelection() ) 
    221196   
    222      
    223     def onClose(self, page=None,page_number=None): 
    224         """ 
    225              close the current page except the simpage. remove each check box link to the model 
    226              selected on that page. remove its reference into page_finder (fitting module) 
    227         """ 
    228         #print "model page", page_number, page, self.draw_model_name 
    229         if page!=None and page_number!=None: 
    230             i=self.DeletePage(page_number) 
    231             #self.nb.RemovePage(page_number) 
    232             #page.Destroy() 
    233             self.model_page_number=None 
    234             self.model_page=None 
    235             self.draw_model_name=None 
    236             #print"self.draw_model_name",self.draw_model_name 
    237             return  
    238         try: 
    239             sim_page = self.GetPage(1) 
    240             selected_page = self.GetPage(self.GetSelection()) 
    241             #print "sim_page ",sim_page ,selected_page 
    242             if sim_page != selected_page: 
    243                 #print "sim_page ",sim_page ,selected_page 
    244                 # remove the check box link to the model name of this page (selected_page) 
    245                 sim_page.remove_model(selected_page) 
    246                 #remove that page from page_finder of fitting module 
    247                 page_finder=self.manager.get_page_finder()  
    248                 for page, value in page_finder.iteritems(): 
    249                     if page==selected_page: 
    250                         del page_finder[page] 
    251                         break 
    252                 #Delete the page from notebook 
    253                 page_number = self.GetSelection() 
    254                 #print "on close",selected_page.name,self.GetPageText(page_number),self.draw_model_name 
    255                  
    256                 if selected_page.name in self.fit_page_name: 
    257                     self.fit_page_name.remove(selected_page.name) 
    258                      
    259                 if selected_page.name== self.draw_model_name: 
    260                     #print "went here" 
    261                     self.draw_model_name=None 
    262                     self.model_page=None 
    263                 if  page_number == 1: 
    264                     self.model_page=None 
    265                     self.draw_model_name=None 
    266                 #selected_page.Destroy() 
    267                 #self.RemovePage(page_number) 
    268                 i=self.DeletePage(page_number) 
    269                 #self.count =self.count -1  
    270                  
    271         except: 
    272             raise 
    273         #print "fitpanel", self.draw_model_name  
    274          
     197    
    275198    def set_model_list(self,dict): 
    276199         """  
  • sansview/perspectives/fitting/fitproblem.py

    r2a8fac1 r925a30e  
    1616            and its name assign example [lineModel, M0] 
    1717        """ 
     18        ## data used for fitting 
    1819        self.fit_data=None 
    19         self.theory_name=None 
     20        ## list containing couple of model and its name 
    2021        self.model_list=[] 
     22        ## if 1 this fit problem will be selected to fit , if 0  
     23        ## it will not be selected for fit 
    2124        self.schedule=0 
     25        ##list containing parameter name and value 
    2226        self.list_param=[] 
    23         self.name_per_page=None 
     27        ## smear object to smear or not data1D 
    2428        self.smearer= None 
     29        ## same as fit_data but with more info for plotting 
     30        ## axis unit info and so on see plottables definition 
    2531        self.plotted_data=None 
    2632         
     33         
    2734    def set_smearer(self, smearer): 
     35        """ 
     36          save reference of  smear object on fitdata 
     37          @param smear : smear object from DataLoader 
     38        """ 
    2839        self.smearer= smearer 
    29         #print "smeaerer in fitproblem",self.smearer 
     40        
    3041    def get_smearer(self): 
     42        """ 
     43            return smear object 
     44        """ 
    3145        return self.smearer 
    3246     
    33     def save_model_name(self, name):   
    34         self.name_per_page= name 
    35          
    36          
    37     def get_name(self): 
    38         return self.name_per_page 
    3947     
    4048    def set_model(self,model,name): 
     
    5361        """ 
    5462        self.plotted_data = data 
     63         
     64         
    5565    def add_fit_data(self,data): 
    5666        """  
     
    6272    def get_model(self): 
    6373        """ @return: saved model """ 
    64         #print "fitproblem",self.model_list 
    6574        return self.model_list 
    6675      
     
    8998    def set_model_param(self,name,value): 
    9099        """  
    91             set the value of a given parameter of this model 
     100            Store the name and value of a parameter of this fitproblem's model 
    92101            @param name: name of the given parameter 
    93102            @param value: value of that parameter 
    94103        """ 
    95         #print "fitproblem",name,value 
    96         #self.model_list[0].setParam(name,value) 
    97104        self.list_param.append([name,value]) 
     105         
     106         
    98107    def get_model_param(self): 
    99108        """  
    100             set the value of a given parameter of this model 
    101             @param name: name of the given parameter 
    102             @param value: value of that parameter 
     109            @return list of couple of parameter name and value 
    103110        """ 
    104         #print self.param_name, self.param_value 
    105         #self.model_list[0].setParam(name,value) 
    106111        return self.list_param 
     112         
    107113         
    108114    def reset_model(self,model): 
     
    111117            @param value: new model 
    112118        """ 
    113         #print "fitproblem : reset model" 
    114119        self.model_list[0]=model 
     120         
    115121         
    116122    def schedule_tofit(self, schedule=0): 
     
    123129        """ return true or false if a problem as being schedule for fitting""" 
    124130        return self.schedule 
     131     
     132     
    125133    def clear_model_param(self): 
    126134        """ 
     
    128136        """ 
    129137        self.list_param=[] 
     138         
     139         
  • sansview/perspectives/fitting/helpPanel.py

    r2268d10 r925a30e  
    4646         
    4747        button_OK = wx.Button(self, wx.ID_OK, "OK") 
    48         #button_Cancel = wx.Button(self, wx.ID_CANCEL, "Cancel") 
    49          
     48 
    5049        sizer_button = wx.BoxSizer(wx.HORIZONTAL) 
    5150        sizer_button.Add((20, 20), 1, wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    52         sizer_button.Add(button_OK, 0, wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10) 
    53         #sizer_button.Add(button_Cancel, 0, wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10)         
     51        sizer_button.Add(button_OK, 0, wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10)        
    5452        vbox.Add(sizer_button, 0, wx.EXPAND|wx.BOTTOM|wx.TOP, 10) 
    5553 
     
    6361    def __init__(self, parent, id, title): 
    6462        wx.Frame.__init__(self, parent, id, title, size=(600, 450)) 
    65          
     63        """ 
     64             contains help info 
     65        """ 
    6666        vbox1  = wx.BoxSizer(wx.HORIZONTAL) 
    6767         
     
    127127         
    128128        self.SetSizer(vbox1) 
    129          
    130129        self.Centre() 
    131130        self.Show(True) 
     131         
     132         
    132133    def OnLinkClicked(self, event): 
    133134        """ 
  • sansview/perspectives/fitting/simfitpage.py

    red2ea6a r925a30e  
    99        two data members window_name and window_caption 
    1010    """ 
    11       ## Internal name for the AUI manager 
     11    ## Internal name for the AUI manager 
    1212    window_name = "simultaneous Fit page" 
    1313    ## Title to appear on top of the window 
     
    2121        """ 
    2222        self.parent = parent 
    23         #self.page_finder = page_finder 
    2423        self.page_finder={} 
    2524        self.sizer3 = wx.GridBagSizer(5,5) 
    2625        self.sizer1 = wx.GridBagSizer(5,5) 
    27         #self.sizer2 = wx.GridBagSizer(5,5) 
    2826        self.sizer2  = wx.BoxSizer(wx.HORIZONTAL) 
    2927        self.vbox  = wx.BoxSizer(wx.VERTICAL) 
     
    5452        self.model_toFit=[] 
    5553         
    56         #self.add_model(self.page_finder) 
    5754        self.vbox.Layout() 
    5855        self.vbox.Fit(self)  
     
    8481        self.add_model( self.manager.page_finder) 
    8582         
     83         
    8684    def select_all_model_name(self,event): 
    8785        """ 
     
    9290            for item in self.model_list: 
    9391                item[0].SetValue(True) 
    94                 #item[1].schedule_tofit(1) 
    9592                self.manager.schedule_for_fit( value=1,fitproblem =item[1])  
    9693                self.model_toFit.append(item) 
    9794        else: 
    98             #print"simfit: deselected all" 
    99              
    10095            for item in self.model_list: 
    10196                item[0].SetValue(False)  
     
    112107        if len(self.model_list)>0: 
    113108            for item in self.model_list: 
    114                 #print "went here to clear" 
    115109                item[0].SetValue(False)  
    116110                self.manager.schedule_for_fit( value=0,fitproblem =item[1]) 
     
    123117        iy = 1  
    124118        list=[] 
    125        # if len(self.page_finder)>0: 
    126119        for page, value in page_finder.iteritems(): 
    127120            try: 
     
    137130                self.model_list.append([cb,value,page,modelname]) 
    138131            except: 
    139                 #wx.PostEvent(self.parent.GrandParent, StatusEvent(status="Simultaneous fit: %s doesn't have a model selected yet %s" % \ 
    140                 #(value.get_data().group_id,sys.exc_value))) 
    141132                pass 
    142133        iy +=1 
     
    145136        self.vbox.Layout() 
    146137         
     138         
    147139    def remove_model(self,delpage): 
    148140        """ 
     
    150142             @param delpage: the page removed 
    151143        """ 
    152         #print "self.model_list",self.model_list 
    153         
    154144        self.model_list=[] 
    155145        self.model_toFit=[] 
     
    174164                    self.model_list.append([cb,value,page,modelname]) 
    175165            except: 
    176                 #wx.PostEvent(self.parent.GrandParent, StatusEvent(status="Simultaneous fit: %s doesn't have a model selected yet %s" % \ 
    177                 #(value.get_data().group_id,sys.exc_value))) 
    178166                pass 
    179167        iy +=1 
     
    182170        self.vbox.Layout() 
    183171         
     172         
    184173    def select_model_name(self,event): 
    185174        """ 
     
    189178        for item in self.model_list: 
    190179            if item[0].GetValue()==True: 
    191                 #item[1].schedule_tofit('True') 
    192                 #item[1].schedule_tofit(1) 
    193180                self.model_toFit.append(item) 
    194181                self.manager.schedule_for_fit( value=1,fitproblem =item[1])  
    195182            else: 
    196                 #print"simfit: deselected one" 
    197183                self.manager.schedule_for_fit( value=0,fitproblem =item[1])  
    198184                if item in self.model_toFit: 
     
    209195    def set_model(self): 
    210196        """ 
    211             set_model take values in self.params which are the values enters by the user 
    212             and try to assign them into the model concerned in self.manager. page.finder 
     197            set_model take values in self.params which are the values 
     198            entered by the user and try to assign them into the model  
     199            concerned in self.manager. page.finder 
    213200        """ 
    214201        if len(self.params) >0: 
    215202            for item in self.model_toFit: 
    216                 #print"simfitpage: self.model_toFit",item[1] 
    217203                list=item[1].get_model() 
    218                 #print "simfitpage: list fitpanel2",list,list[0] 
    219204                model=list[0] 
    220205                param_list=model.getParamList() 
    221                 #print "simfitpage: on set_model self.params ",self.params 
    222206                if self.params !=[]: 
    223207                    for element in self.params: 
     
    225209                            for item in param_list: 
    226210                                if item==str(element[1]): 
    227                                     #print "simfitpage: on set_model page 1",param_list 
    228                                     #print "simfitpage: model name",element[0], model.name 
    229                                     #print "simfitpage: param name ,param value",element[1],element[2] 
    230                                     self.manager.set_page_finder(model.name,element[1],\ 
     211                                    self.manager.set_page_finder(model.name,element[1], 
    231212                                                                 str(element[2])) 
    232                             #print "simfitpage:on set_model page 2",model.params['A'],self.params[2] 
     213                            
    233214     
    234215    def _onTextEnter(self): 
     
    236217            get values from the constrainst textcrtl ,parses them into model name 
    237218            parameter name and parameters values. 
    238             store them in a list self.params .when when params is not empty set_model uses it 
    239             to reset the appropriate model and its appropriates parameters 
     219            store them in a list self.params .when when params is not empty set_model  
     220            uses it to reset the appropriate model and its appropriates parameters 
    240221        """ 
    241222        value= self.ctl2.GetValue() 
    242223        if value: 
    243224            self.params=[] 
    244             #print "simfitpage: value",value 
    245225            try: 
    246226                expression='[\s,;]' 
    247227                if re.search(expression,value) !=None: 
    248228                    word=re.split(expression,value) 
    249                     #print "simfitpage: when herre",word 
    250229                    for item in word: 
    251230                        self.params.append(self.parser_helper(item)) 
     
    253232                    self.params.append(self.parser_helper(value))   
    254233            except: 
    255                 #raise 
    256234                wx.PostEvent(self.parent.Parent, StatusEvent(status="Constraint Error: %s" % sys.exc_value)) 
    257         #print "simfitpage: self.params",self.params 
    258     def new_parser_helper(self,value): 
     235       
     236         
     237    def parser_helper(self,value): 
    259238        """ 
    260239             @return  param:a list containing the name of a model ,its parameters  
    261240             value and name extracted from the constrainst controlbox 
    262241        """ 
    263         from sans.guiframe import utils 
    264         mylist=["=","<",">","<=", ">="] 
    265         for item in mylist: 
    266             if utils.look_for_tag( value,str(item))[0]: 
    267                 #print "went here" 
    268                 model_param = utils.split_text(str(item), value,1) 
    269                 param_name = model_param[0] 
    270                 param_value = model_param[1] 
    271                 #print "simpage",utils.look_for_tag(param_name,"\.")[0] 
    272                 if utils.look_for_tag(param_name,"\.")[0]: 
    273                     param_names = utils.split_text("\.",param_name,1) 
    274                     model_name = param_names[0] 
    275                     param_name = param_names[1] 
    276                     ##### just added 
    277                     #print "simfitpage: param name",model_name,param_name 
    278                  
    279                     param=[str(model_name),param_name,str(param_value),"="] 
    280                     #print "simfitpage: param",param 
    281                     return param 
    282                 else: 
    283                     #raise ValueError,"cannot evaluate this expression" 
    284                     wx.PostEvent(self.parent.Parent, 
    285                                   StatusEvent(status="cannot evaluate this expression")) 
    286                     return 
    287             elif utils.look_for_tag( value,"<")[0]: 
    288                 model_param = utils.split_text("<", value,2) 
    289                 if len(model_param)== 2: 
    290                     try: 
    291                         param_name = str(model_param[0]) 
    292                         param_value = float(model_param[1]) 
    293                         param=[str(model_name),param_name,param_value,"<"] 
    294                         #print "simfitpage: param",param 
    295                         return param 
    296                     except: 
    297                         wx.PostEvent(self.parent.Parent, StatusEvent(status="\ 
    298                         could read this expression%s" % sys.exc_value)) 
    299                         return 
    300             else: 
    301                 #raise ValueError,"Missing '=' in expression" 
    302                 wx.PostEvent(self.parent.Parent, StatusEvent(status="Missing '=' in expression")) 
    303                 
    304              
    305          
    306     def parser_helper(self,value): 
    307         """ 
    308              @return  param:a list containing the name of a model ,its parameters  
    309              value and name extracted from the constrainst controlbox 
    310         """ 
    311         #print "simfitpage: value",value 
    312242        if string.find(value, "=") !=-1: 
    313243            model_param= re.split("=",value) 
    314244            param_name=model_param[0] 
    315245            param_value=model_param[1] 
    316             #print"simfitpage: ", param_name 
    317             #print "simfitpage: ",param_value 
     246             
    318247            if string.find(param_name,".")!=-1: 
    319248                param_names= re.split("\.",param_name) 
    320249                model_name=param_names[0] 
    321250                param_name=param_names[1] 
    322                 ##### just added 
    323                 #print "simfitpage: param name",model_name,param_name 
    324              
    325251                param=[str(model_name),param_name,str(param_value)] 
    326                 #print "simfitpage: param",param 
    327252                return param 
    328253            else: 
    329                 #raise ValueError,"cannot evaluate this expression" 
    330254                wx.PostEvent(self.parent.Parent, 
    331255                              StatusEvent(status="cannot evaluate this expression")) 
    332256                return 
    333257        else: 
    334             #raise ValueError,"Missing '=' in expression" 
    335258            wx.PostEvent(self.parent.Parent, StatusEvent(status="Missing '=' in expression")) 
    336259             
Note: See TracChangeset for help on using the changeset viewer.