Changeset b421b1a in sasview for sansview/perspectives/fitting


Ignore:
Timestamp:
Nov 8, 2009 1:09:25 AM (15 years ago)
Author:
Jae Cho <jhjcho@…>
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:
eacf1d66
Parents:
f9de20e
Message:

fixed bookmark bugs

Location:
sansview/perspectives/fitting
Files:
3 edited

Legend:

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

    rf9de20e rb421b1a  
    1919#Control panel width  
    2020if sys.platform.count("win32")>0: 
    21     PANEL_WIDTH = 440 
     21    PANEL_WIDTH = 450 
    2222else: 
    2323    PANEL_WIDTH = 500 
     
    5555        ## selected parameters to apply dispersion 
    5656        self.disp_cb_dict ={} 
     57 
    5758        ## smearer object 
    5859        self.smearer = None 
     
    497498         
    498499        self.state.engine_type = self.engine_type 
    499         
     500 
    500501        new_state = self.state.clone() 
    501502        new_state.model.name = self.state.model.name 
     
    670671               if hasattr(self,"cb1"): 
    671672                   self.state.cb1= self.cb1.GetValue() 
     673 
    672674        except: 
    673675            pass 
     
    704706            self.state.values = copy.deepcopy(self.values) 
    705707            self.state.weights = copy.deepcopy(self.weights) 
     708            
    706709        ## save plotting range 
    707710        self._save_plotting_range() 
     
    719722        self._copy_parameters_state(self.orientation_params_disp, 
    720723                                     self.state.orientation_params_disp) 
    721          
    722724        self._copy_parameters_state(self.parameters, self.state.parameters) 
    723725        self._copy_parameters_state(self.fittable_param, self.state.fittable_param) 
     
    743745        self.enable2D= state.enable2D 
    744746        self.engine_type = state.engine_type 
     747 
    745748        #??? 
    746749        self.disp_cb_dict = state.disp_cb_dict 
    747         self.disp_list =state.disp_list 
    748  
    749         
     750        self.disp_list = state.disp_list 
     751 
    750752        ## set the state of the radio box 
    751753        self.shape_rbutton.SetValue(state.shape_rbutton ) 
     
    817819                     
    818820            else: 
    819  
     821                 
    820822                for k,v in self.state.disp_cb_dict.iteritems(): 
    821823                    self.disp_cb_dict = copy.deepcopy(state.disp_cb_dict)  
     
    10161018            item_page_info = statelist[j] 
    10171019            ##change the state of the check box for simple parameters 
    1018             if item_page[0]!=None: 
    1019                 
     1020            if item_page[0]!=None:                
    10201021                item_page[0].SetValue(item_page_info[0]) 
    1021                 #print "item_page[0]",item_page[0].GetValue() 
     1022                 
    10221023            if item_page[2]!=None: 
    10231024                item_page[2].SetValue(item_page_info[2]) 
     
    10401041                if item_page_info[5][0]: 
    10411042                    item_page[5].Show(True) 
    1042                     item_page[5].SetValue(item_page_info[4][1]) 
     1043                    item_page[5].SetValue(item_page_info[5][1]) 
    10431044                else: 
    10441045                    item_page[5].Hide() 
     
    14041405        self._disp_obj_dict = {} 
    14051406        self.disp_cb_dict ={} 
     1407         
    14061408        f_id = self.formfactorbox.GetCurrentSelection() 
    14071409        #For MAC 
     
    14391441        self.state.parameters =[] 
    14401442        self.state.model =self.model 
    1441          
    14421443        self.disp_list =self.model.getDispParamList() 
    14431444        self.state.disp_list = self.disp_list 
    14441445        self.sizer4_4.Layout() 
    1445         self.sizer4.Layout() 
    14461446        self.Layout() 
    14471447        self.SetScrollbars(20,20,25,65) 
     
    14931493                param_min= None 
    14941494                param_max= None 
     1495 
    14951496                if item[5]!= None: 
    14961497                    if item[5].GetValue().lstrip().rstrip()!="": 
     
    15081509                        wx.PostEvent(self.parent.parent, StatusEvent(status = msg )) 
    15091510                if name in self.model.details.keys():    
    1510                     self.model.details[name][1:3]= param_min,param_max 
     1511                    self.model.details[name][1:]= param_min,param_max 
    15111512                                     
    15121513                ## hide statictext +/-     
     
    15191520 
    15201521                value= float(item[2].GetValue()) 
     1522                #print "val", value,self.model.getParam(name) 
    15211523                # If the value of the parameter has changed, 
    15221524                # +update the model and set the is_modified flag 
     
    15491551       
    15501552            return 
    1551         #remove previous added details for dispersion parameters. 
    1552         #for item in self.model.dispersion.keys():#for item in self.model.details.keys(): 
    1553         #    if item in self.model.fixed and item in self.model.details.keys(): 
    1554         #        del self.model.details [item]                            
    1555      
     1553 
    15561554        if self.enable_disp.GetValue(): 
    15571555            self.model_disp.Show(True) 
     
    16621660             self.disp_list should change type later .now only gaussian 
    16631661        """ 
    1664  
    16651662        n = self.disp_box.GetCurrentSelection() 
    16661663        name = self.disp_box.GetValue() 
  • sansview/perspectives/fitting/fitpage.py

    rf9de20e rb421b1a  
    4444        ## default fitengine type 
    4545        self.engine_type = None 
     46 
    4647        ## draw sizer 
    4748        self._fill_datainfo_sizer() 
     
    137138                    item[6].Show(True) 
    138139        self.Layout() 
    139         #self.SetScrollbars(20,20,25,65) 
     140        self.SetScrollbars(20,20,25,65) 
    140141         
    141142     
     
    283284            ## the user didn't select dispersity display 
    284285            return  
    285  
     286             
    286287        self._reset_dispersity() 
     288         
    287289        # Create the dispersion objects 
    288290        for item in self.model.dispersion.keys(): 
     
    292294            self.model.set_dispersion(item, disp_model) 
    293295            self.state._disp_obj_dict[item]= disp_model 
     296 
    294297 
    295298        ix=0 
     
    320323                         
    321324         
    322          
    323          
    324          
    325          
    326325        ix += 1  
    327326        npts = wx.StaticText(self, -1, 'Npts') 
     
    337336        for item in self.model.dispersion.keys(): 
    338337            if not item in self.model.orientation_params: 
    339                 self.disp_cb_dict[item]= None 
     338                #if not self.disp_cb_dict.has_key(item): 
     339                #    self.disp_cb_dict[item]= None 
    340340                name1=item+".width" 
    341341                name2=item+".npts" 
    342342                name3=item+".nsigmas" 
    343343                if not self.model.details.has_key(name1): 
    344                     self.model.details [name1] = ["",None, None, None]                             
     344                    self.model.details [name1] = ["",None,None]  
    345345 
    346346                iy += 1 
     
    365365                                          wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    366366                        text2.Hide()  
    367                         ## txtcrtl to add error from fit 
    368                         fit_errs = self.model.details[item][3] 
    369                       
     367 
    370368                        ix = 3 
    371369                        ctl2 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
    372                         ctl2.SetValue(str(format_number(fit_errs))) 
     370                        #ctl2.SetValue(str(format_number(fit_errs))) 
    373371                        self.sizer4_4.Add(ctl2, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    374                         if fit_errs==None or not numpy.isfinite(fit_errs): 
    375                             ctl2.Hide() 
    376                         else: 
    377                             if not text2.IsShown(): 
    378                                 text2.Show(True) 
    379                             ctl2.Show(True) 
    380                         #Prepare add min and max in model.details.(Maybe Not correct way) 
    381                         param_min, param_max= self.model.details[name1][1:3] 
     372                        #if fit_errs==None or not numpy.isfinite(fit_errs): 
     373                        ctl2.Hide() 
     374                        #else: 
     375                        #    if not text2.IsShown(): 
     376                        #        text2.Show(True) 
     377                        #    ctl2.Show(True) 
     378                        #Prepare add min and max in model.details. 
     379                        param_min, param_max= self.model.details[name1][1:] 
    382380                        ix = 4 
    383381                        ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     
    440438        for item in self.model.dispersion.keys(): 
    441439            if  item in self.model.orientation_params: 
    442                 self.disp_cb_dict[item]= None 
     440      
    443441                name1=item+".width" 
    444442                name2=item+".npts" 
    445443                name3=item+".nsigmas" 
    446444                if not self.model.details.has_key(name1): 
    447                     self.model.details [name1] = ["",None, None, None]                   
     445                    self.model.details [name1] = ["",None,None]                   
     446  
     447 
    448448                iy += 1 
    449449                for p in self.model.dispersion[item].keys():  
     
    475475                                          wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    476476                        text2.Hide()  
    477                         ## txtcrtl to add error from fit                        
    478                         fit_errs = self.model.details[item][3]                     
     477 
    479478                        ix = 3 
    480479                        ctl2 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
    481                         ctl2.SetValue(str(format_number(fit_errs))) 
     480                     
    482481                        self.sizer4_4.Add(ctl2, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    483                         if fit_errs==None or not numpy.isfinite(fit_errs) or self.data.__class__.__name__ !="Data2D": 
    484                             ctl2.Hide() 
    485                         else: 
    486                             if not text2.IsShown(): 
    487                                 text2.Show(True) 
    488                             ctl2.Show(True) 
    489                         #if self.data.__class__.__name__ =="Data2D": 
    490                             #ctl2.Show(True) 
    491                         #elif ctl2.IsShown(): 
    492                             #ctl2.Hide() 
     482                        ctl2.Hide() 
    493483                             
    494                         param_min, param_max= self.model.details[name1][1:3] 
     484                        param_min, param_max= self.model.details[name1][1:] 
    495485                        ix = 4 
    496486                        ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     
    571561                                                     ,None,None, None, None,None]) 
    572562        #Display units text on panel 
    573         for item in self.model.dispersion.keys():    
    574             if self.model.details[item][3]!= None and numpy.isfinite(self.model.details[item][3]): 
    575                 if not self.text2_3.IsShown(): 
    576                     self.text2_3.Show() 
    577                 break 
    578             else: 
    579                 self.text2_3.Hide() 
     563        for item in self.model.dispersion.keys():  
     564            name = item +".width"   
    580565    
    581         self.state.disp_cb_dict = copy.deepcopy(self.disp_cb_dict)       
     566        self.state.disp_cb_dict = copy.deepcopy(self.disp_cb_dict)   
     567           
    582568        self.state.model = self.model.clone()   
    583569         ## save state into 
     
    664650        self._on_select_model_helper()  
    665651        self.set_model_param_sizer(self.model)                    
    666         
     652         
    667653        self.enable_disp.SetValue(False) 
    668654        self.disable_disp.SetValue(True) 
     
    742728        """ 
    743729        tcrtl= event.GetEventObject() 
    744  
     730         
    745731        if check_float(tcrtl): 
    746732            self._onparamEnter_helper() 
     
    808794            reset the state 
    809795        """ 
     796        self.reset_page_helper(state) 
    810797        import sans.guiframe.gui_manager 
    811          
    812         self.reset_page_helper(state) 
    813798        evt = ModelEventbox(model=state.model) 
    814799        wx.PostEvent(self.event_owner, evt) 
     800     
    815801        self.manager._on_change_engine(engine=self.engine_type) 
    816         #Not improving anything yet. 
    817         #self.set_model_param_sizer(model=state.model) 
     802     
    818803             
    819804    def get_range(self): 
     
    889874                    self.param_toFit[0][4].Refresh() 
    890875        else: 
    891             i=0 
    892             j=0 
    893             k=0 
    894              
     876            #i=0 
    895877            if self.text2_3.IsShown(): 
    896878                self.text2_3.Hide() 
    897                  
     879            #print "fittable",self.print "fittable",self.fittable_param[p_name]     
    898880            #Set the panel when fit result are list 
     881 
    899882            for item in self.param_toFit:                
    900883                ## reset error value to initial state 
     
    904887                    item[4].Hide() 
    905888        
    906                 if( out != None ) and len(out)<=len(self.param_toFit)and i < len(out): 
     889                if( out != None ) and len(out)<=len(self.param_toFit):#and i < len(out): 
    907890                    item[2].SetValue(format_number(self.model.getParam(item[1]))) 
    908891                    item[2].Refresh() 
    909  
    910                 if(cov !=None)  and len(cov)<=len(self.param_toFit)and i < len(cov): 
     892                     
     893                for ind in range(len(out)): 
     894                     
     895                    if item[1] == p_name[ind]: 
     896                        break         
     897 
     898                if(cov !=None)  and len(cov)<=len(self.param_toFit):#and i < len(cov): 
    911899                    try: 
    912900                        name= dispersity.__name__ 
     
    917905                    except: 
    918906                        pass                    
    919                     for j in range(len(out)): 
    920                          
    921                         if item[1] == p_name[j]: 
    922                             break 
    923                         ## unable to compare cov[j]==numpy.nan so switch to None 
    924                     #Save errors to model.details[item][3] 
    925                     self.model.details[item[1]][3] = cov[j] 
    926                                                             
    927                     if cov[j]==None or not numpy.isfinite(cov[j]): 
     907                    if cov[ind]==None or not numpy.isfinite(cov[ind]): 
    928908 
    929909                        if item[3].IsShown: 
     
    933913                        #k += 1    
    934914 
    935                     else: 
    936                         k += 1 
     915                    else:                         
    937916                        item[3].Show(True) 
    938917                        item[3].Refresh() 
    939918                        item[4].Show(True) 
    940                         item[4].SetValue(format_number(cov[j])) 
     919                        item[4].SetValue(format_number(cov[ind])) 
    941920                        item[4].Refresh() 
     921                        has_error = True 
    942922                     
    943923  
    944                 i+=1   
     924               # i+=1   
    945925        #Show error title when any errors displayed 
    946         if k != 0: # len(self.param_toFit): 
     926        if has_error:  
    947927            if not self.text2_3.IsShown(): 
    948928                self.text2_3.Show(True)                             
    949  
    950         self.text2_3.Layout()              
     929        ## save current state 
     930        self.save_current_state() 
     931 
     932        self.text2_3.Layout()  
     933        self.sizer3.Layout()            
    951934        self.Layout() 
    952          
     935        self.Refresh() 
    953936         
    954937    def onSmear(self, event): 
     
    11541137        for item in self.fittable_param: 
    11551138            if item[0].GetValue(): 
     1139                #print item[0].GetValue() 
    11561140                if not (item in self.param_toFit): 
    11571141                    self.param_toFit.append(item)   
     
    12051189        #list of dispersion paramaters 
    12061190        self.disp_list=self.model.getDispParamList() 
    1207         
     1191 
    12081192        keys.sort() 
    12091193     
     
    12431227            self.text2_max.Show(True) 
    12441228            self.text2_min.Show(True) 
    1245  
     1229         
    12461230        for item in keys: 
    12471231            if not item in self.disp_list and not item in self.model.orientation_params: 
    1248                 ##prepare a spot for error 
    1249                 if len(self.model.details[item])<4: 
    1250                     self.model.details[item].append(numpy.nan)                 
     1232                 
     1233                ##prepare a spot to store errors 
     1234                if not self.model.details.has_key(item): 
     1235                    self.model.details [item] = ["",None,None]  
     1236          
    12511237                iy += 1 
    12521238                ix = 0 
     
    12721258                                wx.EXPAND|wx.ADJUST_MINSIZE, 0)  
    12731259                text2.Hide()  
    1274                 ## txtcrtl to add error from fit 
    1275                 fit_errs = self.model.details[item][3] 
    1276  
    12771260                ix += 1 
    12781261                ctl2 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
    1279  
     1262                sizer.Add(ctl2, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     1263                ctl2.Hide() 
    12801264                 
    1281                 ctl2.SetValue(str(format_number(fit_errs))) 
    1282                 sizer.Add(ctl2, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    1283                 if fit_errs==None or not numpy.isfinite(fit_errs):                    
    1284                     ctl2.Hide() 
    1285                 else: 
    1286                     if not self.text2_3.IsShown(): 
    1287                         self.text2_3.Show(True) 
    1288                     if not text2.IsShown(): 
    1289                         text2.Show(True)  
    1290                     ctl2.Show(True) 
    1291                  
    1292                 param_min, param_max= self.model.details[item][1:3] 
     1265                param_min, param_max= self.model.details[item][1:] 
    12931266                ix += 1 
    12941267                ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     
    13541327            for item in self.model.orientation_params: 
    13551328                if not item in self.disp_list: 
    1356                     if len(self.model.details[item])<4: 
    1357                         self.model.details[item].append(numpy.nan)     
     1329                          
    13581330                    iy += 1 
    13591331                    ix = 0 
     
    13871359                                    wx.EXPAND|wx.ADJUST_MINSIZE, 0)  
    13881360                    text2.Hide()  
    1389                     ## txtcrtl to add error from fit 
    1390                     fit_errs = self.model.details[item][3] 
    13911361                    ix += 1 
    13921362                    ctl2 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
     
    13951365                    ctl2.Hide() 
    13961366                    if self.data.__class__.__name__ !="Data2D": 
    1397                             ctl2.Hide() 
     1367                        ctl2.Hide() 
    13981368                    else: 
    1399                         if fit_errs!=None and numpy.isfinite(fit_errs): 
    1400                             if not text2.IsShown(): 
    1401                                 text2.Show(True) 
    1402                             ctl2.Show(True) 
     1369                       
     1370                        if not text2.IsShown(): 
     1371                            text2.Show(True) 
     1372                        ctl2.Show(True) 
    14031373                     
    1404                     param_min, param_max= self.model.details[item][1:3] 
     1374                    param_min, param_max= self.model.details[item][1:] 
    14051375                    ix += 1 
    14061376                    ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     
    14811451        #self._copy_parameters_state(self.fittable_param, self.state.fittable_param) 
    14821452        #self._copy_parameters_state(self.fixed_param, self.state.fixed_param) 
     1453  
    14831454        self.save_current_state_fit() 
    14841455        boxsizer1.Add(sizer) 
  • sansview/perspectives/fitting/pagestate.py

    rc99a6c5 rb421b1a  
    123123        obj.orientation_params =  copy.deepcopy(self.orientation_params) 
    124124        obj.orientation_params_disp =  copy.deepcopy(self.orientation_params_disp) 
    125          
    126125        obj.enable_disp = copy.deepcopy(self.enable_disp) 
    127126        obj.disable_disp = copy.deepcopy(self.disable_disp) 
     
    134133            for k , v in self.disp_cb_dict.iteritems(): 
    135134                obj.disp_cb_dict[k]= v 
     135                 
    136136        obj.values = copy.deepcopy(self.values) 
    137137        obj.weights = copy.deepcopy(self.weights) 
    138138        obj.enable_smearer = copy.deepcopy(self.enable_smearer) 
    139139        obj.disable_smearer = copy.deepcopy(self.disable_smearer) 
    140          
     140        
    141141        obj.disp_box = copy.deepcopy(self.disp_box) 
    142142        obj.qmin = copy.deepcopy(self.qmin) 
Note: See TracChangeset for help on using the changeset viewer.