Changeset 7975f2b in sasview for sansview


Ignore:
Timestamp:
Dec 13, 2009 4:48:11 PM (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:
fe9c19b4
Parents:
7ab35154
Message:

correction of chi2 value from park, cleaned unnecessary calculation, reduced mac crash by placing sleep(0.5) between layouts.

Location:
sansview/perspectives/fitting
Files:
4 edited

Legend:

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

    redd166b r7975f2b  
    77import math 
    88import string 
    9 from sans.guiframe.utils import format_number,check_float 
    10 from sans.guicomm.events import StatusEvent    
     9from sans.guiframe.utils import format_number,check_float,check_value  
     10from sans.guicomm.events import StatusEvent 
    1111import pagestate 
    1212from pagestate import PageState 
     
    163163                     kill_focus_callback = None, set_focus_callback  = None, 
    164164                     mouse_up_callback   = None, text_enter_callback = None): 
    165              
     165              
    166166            wx.TextCtrl.__init__(self, parent, id, value, pos, size, style, validator, name) 
    167167             
     
    208208                    if start==end: 
    209209                        control.SetSelection(-1,-1) 
    210                      
     210                  
    211211        
    212212    def onContextMenu(self, event):  
     
    455455                    #TODO: total hack - fix this 
    456456                    self.state.model= self.model.clone() 
    457                     #if not hasattr(self.model, "_persistency_dict"): 
     457 
    458458                    self.model._persistency_dict = {} 
    459459                    self.model._persistency_dict[p] = [self.values, self.weights] 
     
    499499 
    500500        self.state.model.name= self.model.name 
    501         #if not hasattr(self.model, "_persistency_dict"): 
    502         #self.model._persistency_dict = {} 
    503         #self.state.model._persistency_dict= copy.deepcopy(self.model._persistency_dict) 
    504501         
    505502        #Remember fit engine_type for fit panel 
     
    508505        if self.manager !=None: 
    509506            self.manager._on_change_engine(engine=self.engine_type) 
    510                 #self.engine_type = self.manager._return_engine_type() 
    511507         
    512508            self.state.engine_type = self.engine_type 
     
    820816                        self.model.set_dispersion(item, disp_model) 
    821817                     
    822                         #self.model._persistency_dict = {} 
    823818                        self.model._persistency_dict[item] = [state.values, state.weights] 
    824819                     
     
    925920             use : _check_value_enter  
    926921        """ 
     922        # Flag to register when a parameter has changed.       
     923        is_modified = False 
    927924        #self._undo.Enable(True) 
    928925        if self.model !=None: 
    929             # Flag to register when a parameter has changed.       
    930             is_modified = False 
    931926            try: 
    932927                is_modified =self._check_value_enter( self.fittable_param ,is_modified) 
     
    940935            # If qmin and qmax have been modified, update qmin and qmax and  
    941936            # set the is_modified flag to True 
    942             from sans.guiframe.utils import check_value  
    943937            if check_value( self.qmin, self.qmax): 
    944                 if float(self.qmin.GetValue()) != self.qmin_x: 
    945                     self.qmin_x = float(self.qmin.GetValue()) 
     938                tempmin = float(self.qmin.GetValue()) 
     939                if tempmin != self.qmin_x: 
     940                    self.qmin_x = tempmin 
    946941                    is_modified = True 
    947                 if float(self.qmax.GetValue()) != self.qmax_x: 
    948                     self.qmax_x = float(self.qmax.GetValue()) 
     942                tempmax = float(self.qmax.GetValue()) 
     943                if tempmax != self.qmax_x: 
     944                    self.qmax_x = tempmax 
    949945                    is_modified = True 
    950946                self.fitrange = True 
     
    953949            if self.npts != None: 
    954950                if check_float(self.npts): 
    955                     if float(self.npts.GetValue()) !=  self.num_points: 
    956                         self.num_points = float(self.npts.GetValue()) 
     951                    temp_npts = float(self.npts.GetValue()) 
     952                    if temp_npts !=  self.num_points: 
     953                        self.num_points = temp_npts 
    957954                        is_modified = True 
    958955                else: 
     
    965962                self.state_change= True 
    966963                self._draw_model()  
    967             self.Layout() 
    968             self.Refresh() 
    969  
     964                self._sleep4sec() 
     965                self.Layout() 
     966                self.Refresh() 
     967        return is_modified 
     968     
    970969    def _update_paramv_on_fit(self): 
    971970        """ 
    972971             make sure that update param values just before the fitting 
    973972        """ 
    974         from sans.guiframe.utils import check_value  
    975973        #flag for qmin qmax check values 
    976974        flag =False 
     
    985983 
    986984            # If qmin and qmax have been modified, update qmin and qmax and  
     985             # Here we should check whether the boundaries have been modified. 
     986            # If qmin and qmax have been modified, update qmin and qmax and  
     987            # set the is_modified flag to True 
    987988            if check_value( self.qmin, self.qmax): 
    988                 if float(self.qmin.GetValue()) != self.qmin_x: 
    989                     self.qmin_x = float(self.qmin.GetValue()) 
    990  
    991                 if float(self.qmax.GetValue()) != self.qmax_x: 
    992                     self.qmax_x = float(self.qmax.GetValue()) 
     989                tempmin = float(self.qmin.GetValue()) 
     990                if tempmin != self.qmin_x: 
     991                    self.qmin_x = tempmin 
     992                tempmax = float(self.qmax.GetValue()) 
     993                if tempmax != self.qmax_x: 
     994                    self.qmax_x = tempmax 
    993995                flag = True 
    994                  
    995             if self.npts != None: 
    996                 if check_float(self.npts): 
    997                     if float(self.npts.GetValue()) !=  self.num_points: 
    998                         self.num_points = float(self.npts.GetValue()) 
     996            else: 
     997                flag = False 
    999998        else: 
     999            flag = False 
    10001000            msg= "Cannot Fit :Must select a model!!!  " 
    10011001            wx.PostEvent(self.parent.parent, StatusEvent(status = msg )) 
     
    12311231                if self.enable_smearer.GetValue(): 
    12321232                    temp_smear= self.smearer 
    1233             
    12341233            self.manager.draw_model(self.model, data=self.data, 
    12351234                                    smearer= temp_smear, 
     
    14001399      
    14011400        return 0 
     1401     
     1402    def _onparamEnter(self,event): 
     1403        """  
     1404            when enter value on panel redraw model according to changed 
     1405        """ 
     1406        tcrtl= event.GetEventObject() 
     1407         
     1408        #Clear msg if previously shown. 
     1409        msg= "" 
     1410        wx.PostEvent(self.parent.parent, StatusEvent(status = msg )) 
     1411         
     1412        ## save current state 
     1413        self.save_current_state() 
     1414        if event !=None: 
     1415            #self._undo.Enable(True) 
     1416            event = PageInfoEvent(page = self) 
     1417            wx.PostEvent(self.parent, event) 
     1418               
     1419        if check_float(tcrtl): 
     1420             
     1421            self._onparamEnter_helper() 
     1422            event.Skip() 
     1423        else: 
     1424            msg= "Cannot Plot :Must enter a number!!!  " 
     1425            wx.PostEvent(self.parent.parent, StatusEvent(status = msg )) 
     1426            event.Skip() 
     1427            return  
    14021428    
    14031429    
     
    14471473        self.disp_list =self.model.getDispParamList() 
    14481474        self.state.disp_list = self.disp_list 
    1449         #self.sizer4_4.Layout() 
    1450         self.Layout() 
    1451         #self.SetScrollbars(20,20,25,65) 
    1452         #self.Refresh() 
    1453          
    1454         
    1455          
    1456     def _onparamEnter(self,event): 
    1457         """  
    1458             when enter value on panel redraw model according to changed 
    1459         """ 
    1460  
    1461         tcrtl= event.GetEventObject() 
    1462          
    1463         #Clear msg if previously shown. 
    1464         msg= "" 
    1465         wx.PostEvent(self.parent.parent, StatusEvent(status = msg )) 
    1466          
    1467         ## save current state 
    1468         self.save_current_state() 
    1469         if event !=None: 
    1470             #self._undo.Enable(True) 
    1471             event = PageInfoEvent(page = self) 
    1472             wx.PostEvent(self.parent, event) 
     1475        self.Layout()      
     1476         
    14731477               
    1474         if check_float(tcrtl): 
    1475              
    1476             self._onparamEnter_helper() 
    1477          
    1478         else: 
    1479             msg= "Cannot Plot :Must enter a number!!!  " 
    1480             wx.PostEvent(self.parent.parent, StatusEvent(status = msg )) 
    1481             return  
    1482          
    1483          
    14841478    def _check_value_enter(self, list, modified): 
    14851479        """ 
     
    14911485        if len(list)==0: 
    14921486            return is_modified 
    1493          
    14941487        for item in list: 
    14951488            #skip angle parameters for 1D 
     
    15041497                param_min= None 
    15051498                param_max= None 
    1506  
     1499                
    15071500                ## check minimun value 
    15081501                if item[5]!= None and item[5]!= "": 
    15091502                    if item[5].GetValue().lstrip().rstrip()!="": 
    15101503                        try: 
     1504                             
    15111505                            param_min = float(item[5].GetValue()) 
     1506                            if check_value(item[2],item[5]): 
     1507                                if numpy.isfinite(param_min): 
     1508                                    item[2].SetValue(format_number(param_min)) 
     1509                            item[2].SetBackgroundColour(wx.WHITE)         
    15121510                        except: 
    15131511                            msg = "Wrong Fit parameter range entered " 
     
    15161514                        is_modified = True 
    15171515                ## check maximum value 
    1518                 if item[6]!= None and item[5]!= "": 
     1516                if item[6]!= None and item[6]!= "": 
    15191517                    if item[6].GetValue().lstrip().rstrip()!="": 
    1520                         try: 
     1518                        try:                           
    15211519                            param_max = float(item[6].GetValue()) 
     1520                            if check_value(item[6],item[2]): 
     1521                                if numpy.isfinite(param_max): 
     1522                                    item[2].SetValue(format_number(param_max))   
     1523                            item[2].SetBackgroundColour(wx.WHITE)                
    15221524                        except: 
    15231525                            msg = "Wrong Fit parameter range entered " 
     
    15251527                            raise ValueError, msg 
    15261528                        is_modified = True 
    1527                 from sans.guiframe.utils import check_value 
     1529                 
    15281530 
    15291531                if param_min != None and param_max !=None: 
     
    15321534                        msg+= "name %s of model %s "%(name, self.model.name) 
    15331535                        wx.PostEvent(self.parent.parent, StatusEvent(status = msg)) 
    1534    
     1536                 
    15351537                if name in self.model.details.keys():    
    1536                     if  param_min != self.model.details[name][1] or param_max != self.model.details[name][2]: 
    15371538                        self.model.details[name][1:3]= param_min,param_max 
    15381539                        is_modified = True 
    1539      
     1540               
    15401541                else: 
    1541                     self.model.details [name] = ["",param_min,param_max]  
    1542                     is_modified = True 
    1543              
     1542                        self.model.details [name] = ["",param_min,param_max]  
     1543                        is_modified = True 
     1544                 
    15441545            value= float(item[2].GetValue()) 
    15451546   
    15461547            # If the value of the parameter has changed, 
    15471548            # +update the model and set the is_modified flag 
    1548             if value != self.model.getParam(name): 
     1549            if value != self.model.getParam(name) and numpy.isfinite(value): 
    15491550                self.model.setParam(name,value) 
    15501551                is_modified = True    
     
    16451646            self.save_current_state() 
    16461647            self.sizer4_4.Clear(True) 
    1647             #self.sizer4_4.Layout() 
    1648             #self.sizer4.Layout() 
    16491648            self.Layout() 
    1650             #self.Refresh() 
    1651             #self.SetScrollbars(20,20,25,65)    
     1649  
    16521650            return  
    16531651        if (len(self.disp_cb_dict)>0) : 
     
    16631661 
    16641662                    pass 
    1665                 # Redraw the model 
    1666                 #self._draw_model() 
     1663 
    16671664        ## save state into 
    16681665        self.save_current_state() 
    1669         #self.sizer4_4.Layout() 
    1670         #self.sizer4.Layout() 
    1671         self.Layout() 
    1672         #self.SetScrollbars(20,20,25,65)     
     1666        self.Layout()   
    16731667        self.Refresh() 
    1674          
    1675              
     1668                   
    16761669             
    16771670    def _on_select_Disp(self,event): 
     
    16831676        name = self.disp_box.GetValue() 
    16841677        dispersity= self.disp_box.GetClientData(n) 
    1685          
    16861678        self.disp_name = name 
    16871679         
     
    16981690        wx.PostEvent(self.parent, event) 
    16991691         
    1700         #self.sizer4_4.Layout() 
    1701         #self.sizer4.Layout() 
    1702         #self.Layout() 
     1692        self.sizer4_4.Layout() 
     1693        self.sizer4.Layout() 
    17031694        self.SetScrollbars(20,20,25,65) 
    1704         #self.Refresh() 
    17051695         
    17061696    def _set_sizer_arraydispersion(self): 
     
    17471737                self.state.disp_cb_dict[p]=  self.disp_cb_dict[p].GetValue() 
    17481738                self.Bind(wx.EVT_RADIOBUTTON, self.select_disp_angle, id=self.disp_cb_dict[p].GetId()) 
    1749                 #wx.EVT_RADIOBUTTON(self, self.disp_cb_dict[p].GetId(), self.select_disp_angle) 
    17501739                self.sizer4_4.Add(self.disp_cb_dict[p], (iy, ix), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    17511740         
     
    17571746                if not (self.enable2D or self.data.__class__.__name__ =="Data2D"): 
    17581747                    self.disp_cb_dict[p].Hide() 
    1759                     #self.disp_cb_dict[p].Disable() 
    17601748                else: 
    17611749                    self.disp_cb_dict[p].Show(True) 
    1762                     #self.disp_cb_dict[p].Enable() 
    17631750                self.Bind(wx.EVT_RADIOBUTTON, self.select_disp_angle, id=self.disp_cb_dict[p].GetId()) 
    1764                 #wx.EVT_RADIOBUTTON(self, self.disp_cb_dict[p].GetId(), self.select_disp_angle) 
    17651751                self.sizer4_4.Add(self.disp_cb_dict[p], (iy, ix), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    17661752 
     
    17691755        iy +=1  
    17701756        self.sizer4_4.Add((20,20),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)         
    1771         #self.sizer4_4.Layout() 
    1772         #self.sizer4.Layout() 
    17731757        self.Layout() 
    1774         #self.SetScrollbars(20,20,25,65) 
    1775         ## save state into 
    17761758 
    17771759        self.state.orientation_params =[] 
     
    18151797            boxsizer1 = box_sizer 
    18161798 
    1817         self.qmin    = BasicPage.ModelTextCtrl(self, -1,size=(_BOX_WIDTH,20),style=wx.TE_PROCESS_ENTER) 
     1799        self.qmin    = self.ModelTextCtrl(self, -1,size=(_BOX_WIDTH,20),style=wx.TE_PROCESS_ENTER) 
    18181800        self.qmin.SetValue(str(self.qmin_x)) 
    18191801        self.qmin.SetToolTipString("Minimun value of Q in linear scale.") 
    1820         #self.qmin.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
    1821         #self.qmin.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    1822         #self.qmin.Bind(wx.EVT_TEXT_ENTER, self._onparamEnter) 
    18231802      
    1824         self.qmax    = BasicPage.ModelTextCtrl(self, -1,size=(_BOX_WIDTH,20),style=wx.TE_PROCESS_ENTER) 
     1803        self.qmax    = self.ModelTextCtrl(self, -1,size=(_BOX_WIDTH,20),style=wx.TE_PROCESS_ENTER) 
    18251804        self.qmax.SetValue(str(self.qmax_x)) 
    18261805        self.qmax.SetToolTipString("Maximum value of Q in linear scale.") 
    1827         #self.qmax.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
    1828         #self.qmax.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    1829         #self.qmax.Bind(wx.EVT_TEXT_ENTER, self._onparamEnter) 
    18301806         
    18311807        id = wx.NewId() 
    18321808        self.reset_qrange =wx.Button(self,id,'Reset',size=(70,23)) 
     1809       
    18331810        self.reset_qrange.Bind(wx.EVT_BUTTON, self.on_reset_clicked,id=id) 
    18341811        self.reset_qrange.SetToolTipString("Reset Q range to the default values") 
     
    18571834        self.sizer5.Add(boxsizer1,0, wx.EXPAND | wx.ALL, 10) 
    18581835        self.sizer5.Layout() 
    1859         #self.Layout() 
    1860         #self.SetScrollbars(20,20,25,65) 
    1861      
     1836 
    18621837     
    18631838    def _fill_save_sizer(self): 
     
    18871862        self.sizer6.Layout() 
    18881863        self.SetScrollbars(20,20,25,65) 
    1889  
     1864         
     1865    def _lay_out(self): 
     1866        """ 
     1867            returns self.Layout 
     1868            Note: Mac seems to like this better when self.Layout is called after fitting. 
     1869        """ 
     1870        self._sleep4sec() 
     1871        self.Layout() 
     1872        self._sleep4sec() 
     1873        return  
     1874     
     1875    def _sleep4sec(self): 
     1876        """ 
     1877        sleep for 0.5 sec only on Mac 
     1878        """ 
     1879        if ON_MAC == True: 
     1880            time.sleep(0.5) 
     1881              
    18901882    def on_reset_clicked(self,event): 
    18911883        """ 
     
    19071899            self.num_points = _NPTS_DEFAULT             
    19081900            self.state.npts = self.num_points 
    1909          
     1901             
     1902 
    19101903        self.state.qmin = self.qmin_x 
    19111904        self.state.qmax = self.qmax_x 
  • sansview/perspectives/fitting/fitpage.py

    redd166b r7975f2b  
    77import copy 
    88import math 
     9import time 
    910from sans.models.dispersion_models import ArrayDispersion, GaussianDispersion 
    1011 
    1112from sans.guicomm.events import StatusEvent    
    12 from sans.guiframe.utils import format_number,check_float 
    13  
     13from sans.guiframe.utils import format_number,check_float,check_value 
     14  
    1415## event to post model to fit to fitting plugins 
    1516(ModelEventbox, EVT_MODEL_BOX) = wx.lib.newevent.NewEvent() 
     
    3334   
    3435    """ 
     36     
    3537    def __init__(self,parent, page_info): 
    3638        BasicPage.__init__(self, parent, page_info) 
     39 
    3740        """  
    3841            Initialization of the Panel 
     
    9295                self.text2_min.Hide() 
    9396                self.text2_max.Hide() 
     97 
    9498            else: 
    9599                item[5].Show(True) 
     
    138142                    item[6].Show(True) 
    139143        self.Layout() 
    140          
    141      
     144        self.Refresh() 
     145 
    142146    def _fill_range_sizer(self): 
    143147        """ 
     
    188192        #Set sizer for Fitting section 
    189193        self._set_range_sizer( title=title,box_sizer=boxsizer_range, object1=sizer_smearer, object= sizer_fit) 
    190    
    191         
     194 
    192195    def _fill_datainfo_sizer(self): 
    193196        """ 
     
    267270 
    268271     
    269     #def _set_sizer_gaussian(self): 
    270272    def _set_sizer_dispersion(self, dispersity): 
    271273        """ 
     
    354356                        ix = 1 
    355357                        value= self.model.getParam(name1) 
    356                         ctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
     358                        ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
    357359                                            style=wx.TE_PROCESS_ENTER) 
    358360                        ctl1.SetValue(str (format_number(value))) 
     
    373375 
    374376                        ix = 4 
    375                         ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     377                        ctl3 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
    376378                                                       kill_focus_callback = self._onparamRangeEnter, 
    377                                                        text_enter_callback = self._onparamRangeEnter, 
    378                                                        set_focus_callback  = self._onparamRangeEnter) 
     379                                                       text_enter_callback = self._onparamRangeEnter) 
    379380 
    380381                        self.sizer4_4.Add(ctl3, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     
    382383                 
    383384                        ix = 5 
    384                         ctl4 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     385                        ctl4 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
    385386                                                       kill_focus_callback = self._onparamRangeEnter, 
    386                                                        text_enter_callback = self._onparamRangeEnter, 
    387                                                        set_focus_callback  = self._onparamRangeEnter) 
     387                                                       text_enter_callback = self._onparamRangeEnter) 
    388388                        self.sizer4_4.Add(ctl4, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    389389 
     
    400400                            ix = 6 
    401401                            value= self.model.getParam(name2) 
    402                             Tctl = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
     402                            Tctl = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
    403403                                                style=wx.TE_PROCESS_ENTER) 
    404404                             
     
    411411                            ix = 7 
    412412                            value= self.model.getParam(name3) 
    413                             Tct2 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
     413                            Tct2 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
    414414                                                style=wx.TE_PROCESS_ENTER) 
    415415                            Tct2.SetValue(str (format_number(value))) 
     
    452452                        ix = 1 
    453453                        value= self.model.getParam(name1) 
    454                         ctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
     454                        ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
    455455                                            style=wx.TE_PROCESS_ENTER) 
    456456                        ctl1.SetValue(str (format_number(value))) 
     
    474474                             
    475475                        ix = 4 
    476                         ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     476                        ctl3 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
    477477                                                       kill_focus_callback = self._onparamRangeEnter, 
    478                                                        text_enter_callback = self._onparamRangeEnter, 
    479                                                        set_focus_callback  = self._onparamRangeEnter) 
     478                                                       text_enter_callback = self._onparamRangeEnter) 
    480479 
    481480                        self.sizer4_4.Add(ctl3, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     
    484483                 
    485484                        ix = 5 
    486                         ctl4 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     485                        ctl4 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
    487486                                                       kill_focus_callback = self._onparamRangeEnter, 
    488                                                        text_enter_callback = self._onparamRangeEnter, 
    489                                                        set_focus_callback  = self._onparamRangeEnter) 
     487                                                       text_enter_callback = self._onparamRangeEnter) 
    490488                        self.sizer4_4.Add(ctl4, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    491489                        ctl4.Hide() 
     
    509507                            ix = 6 
    510508                            value= self.model.getParam(name2) 
    511                             Tctl = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
     509                            Tctl = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
    512510                                                style=wx.TE_PROCESS_ENTER) 
    513511                             
     
    526524                            ix = 7 
    527525                            value= self.model.getParam(name3) 
    528                             Tct2 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
     526                            Tct2 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
    529527                                                style=wx.TE_PROCESS_ENTER) 
    530528                            Tct2.SetValue(str (format_number(value))) 
     
    536534                                               wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    537535                            ix +=1 
    538                             #self.sizer4_4.Add((20,20), (iy,ix),(1,1), 
    539                                                #wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     536 
    540537                            self.fixed_param.append([None,name3, Tct2 
    541538                                                     ,None,None, None, None,None])     
     
    564561        ix =0  
    565562        iy +=1  
    566         #self.sizer4_4.Layout() 
    567         #self.sizer4.Layout() 
     563 
    568564        self.Layout() 
    569         #self.SetScrollbars(20,20,25,65) 
    570         #self.Refresh() 
    571       
    572          
     565 
     566 
    573567    def _onFit(self, event):      
    574568        """ 
    575569            Allow to fit 
    576570        """ 
    577         from sans.guiframe.utils import check_value 
    578         self.select_param(event =None) 
    579571        #make sure all parameter values are updated. 
     572        
    580573        flag = self._update_paramv_on_fit() #check_value( self.qmin, self.qmax)  
    581574                 
     
    589582            wx.PostEvent(self.parent.parent, StatusEvent(status= msg )) 
    590583            return  
     584       
     585 
     586        self.select_param(event =None) 
    591587         
    592588        #Clear errors if exist from previous fitting 
     
    610606        #    self.btFit.SetLabel("Fit") 
    611607        #    self.btFit.Bind(event= wx.EVT_BUTTON, handler=self._onFit, id=self.btFit.GetId()) 
    612         self.btFit.SetFocus()     
     608            
    613609 
    614610         
     
    622618        self.btFit.Unbind(event=wx.EVT_BUTTON, id=self.btFit.GetId()) 
    623619        self.btFit.Bind(event=wx.EVT_BUTTON, handler=self._onFit,id=self.btFit.GetId()) 
    624         
    625              
    626         #self.btFit.SetFocus()     
    627         #self.sizer5.Layout() 
    628         #self.SetScrollbars(20,20,55,40)     
     620         
    629621             
    630622    def _on_select_model(self, event):  
     
    675667            when enter value on panel redraw model according to changed 
    676668        """ 
     669        flag = False 
    677670        tcrtl= event.GetEventObject() 
     671 
    678672        #Clear msg if previously shown. 
    679673        msg= "" 
    680674        wx.PostEvent(self.parent.parent, StatusEvent(status = msg )) 
    681          
     675 
    682676        if check_float(tcrtl): 
    683             self._onparamEnter_helper() 
    684             temp_smearer = None 
    685             if self.enable_smearer.GetValue(): 
    686                 temp_smearer= self.smearer 
    687             self.compute_chisqr(smearer= temp_smearer) 
    688  
    689             ## new state posted 
    690             if self.state_change: 
    691                 #self._undo.Enable(True) 
    692                 self.save_current_state() 
    693                 event = PageInfoEvent(page = self) 
    694                 wx.PostEvent(self.parent, event) 
     677            flag = self._onparamEnter_helper() 
     678            if flag: 
     679                temp_smearer = None 
     680                if self.enable_smearer.GetValue(): 
     681                    temp_smearer= self.smearer 
     682                self.compute_chisqr(smearer= temp_smearer) 
     683     
     684                ## new state posted 
     685                if self.state_change: 
     686                    #self._undo.Enable(True) 
     687                    event = PageInfoEvent(page = self) 
     688                    wx.PostEvent(self.parent, event) 
    695689                self.state_change= False 
    696   
     690            self.save_current_state() 
    697691        else: 
     692            self.save_current_state() 
    698693            msg= "Cannot Plot :Must enter a number!!!  " 
    699694            wx.PostEvent(self.parent.parent, StatusEvent(status = msg )) 
     
    718713                self._check_value_enter(self.fittable_param ,is_modified) 
    719714                self._check_value_enter(self.parameters ,is_modified)  
    720  
    721715            except: 
    722716                tcrtl.SetBackgroundColour("pink") 
     
    732726        wx.PostEvent(self.parent, event) 
    733727        self.state_change= False 
     728        self._sleep4sec() 
    734729        self.Layout() 
    735         self.Refresh()                 
     730        #self.Refresh()                 
    736731 
    737732        
     
    759754                if item[4]!=None and item[4].IsShown():                    
    760755                    item[4].Hide() 
    761                      
     756   
    762757        if len(self.fittable_param)>0: 
    763758            for item in self.fittable_param: 
     
    774769                if item[4]!=None and item[4].IsShown(): 
    775770                    item[4].Hide() 
    776          
    777771        return         
    778772                 
     
    787781        self.state.data= data  
    788782        self._fill_datainfo_sizer() 
    789  
    790         #self.SetScrollbars(20,20,25,65) 
    791         #self.Layout()    
    792783         
    793784    def reset_page(self, state,first=False): 
     
    802793        if self.engine_type != None: 
    803794            self.manager._on_change_engine(engine=self.engine_type) 
    804         #self.tcChi.SetLabel(str(format_number(self.tcChi.GetLabel())))   
    805         # reset param_toFit    
     795 
    806796        self.select_param(event = None)  
    807797        #Save state_fit 
    808798        self.save_current_state_fit() 
    809         self.Layout() 
     799        self._lay_out() 
    810800        self.Refresh() 
    811801         
     
    815805        """ 
    816806        return float(self.qmin_x) , float(self.qmax_x) 
     807     
     808    def get_npts2fit(self): 
     809        """ 
     810            return numbers of data points within qrange 
     811            Note: This is for Park where chi2 is not normalized by Npts of fit 
     812        """ 
     813        npts2fit = 0 
     814        qmin,qmax = self.get_range() 
     815        if self.data.__class__.__name__ =="Data2D": 
     816            for qx in self.data.x_bins: 
     817                for qy in self.data.y_bins: 
     818                   if math.sqrt((qx*qx)+(qy*qy)) >= qmin \ 
     819                         and math.sqrt((qx*qx)+(qy*qy)) <= qmax: 
     820                       npts2fit += 1 
     821        else: 
     822            for qx in self.data.x: 
     823                   if qx >= qmin and qx <= qmax: 
     824                       npts2fit += 1 
     825        return npts2fit 
     826 
    817827 
    818828    def get_chi2(self): 
     
    848858        is_modified = False 
    849859        has_error = False     
     860         
     861        #Hide textctrl boxes of errors. 
    850862        self._clear_Err_on_Fit()     
     863         
     864        #Check if chi2 is finite 
     865        if chisqr != None or numpy.isfinite(chisqr): 
    851866        #format chi2 
    852         chi2 = format_number(chisqr) 
    853         self.tcChi.SetLabel(chi2) 
     867            npt_fit = float(self.get_npts2fit())    
     868            if self.engine_type == "park" and npt_fit > 0:    
     869                chisqr =chisqr/npt_fit     
     870            chi2 = format_number(chisqr)     
     871            self.tcChi.SetLabel(chi2)     
     872            self.tcChi.Refresh()     
     873        else: 
     874            self.tcChi.SetLabel("-") 
    854875         
    855876        #Hide error title 
     
    860881            n = self.disp_box.GetCurrentSelection() 
    861882            dispersity= self.disp_box.GetClientData(n) 
    862             name= dispersity.__name__ 
    863             if name == "GaussianDispersion": 
    864                 if hasattr(self,"text_disp_1" ): 
    865                     if self.text_disp_1 !=None: 
    866                         self.text_disp_1.Hide() 
     883            if dispersity !=None and self.enable_disp.GetValue(): 
     884                name= dispersity.__name__ 
     885                if name == "GaussianDispersion": 
     886                    if hasattr(self,"text_disp_1" ): 
     887                        if self.text_disp_1 !=None: 
     888                            self.text_disp_1.Hide() 
    867889        except: 
     890            dispersty = None 
    868891            pass 
    869892        #set the panel when fit result are float not list 
    870  
    871893        if out.__class__== numpy.float64: 
    872894            self.param_toFit[0][2].SetValue(format_number(out)) 
     
    877899                self.text2_3.Show(True) 
    878900                try: 
    879                     name= dispersity.__name__ 
    880                     if name == "GaussianDispersion": 
    881                         if hasattr(self,"text_disp_1" ): 
    882                             if self.text_disp_1 !=None: 
    883                                 self.text_disp_1.Show(True) 
     901                    if dispersity !=None: 
     902                        name= dispersity.__name__ 
     903                        if name == "GaussianDispersion" and self.enable_disp.GetValue(): 
     904                            if hasattr(self,"text_disp_1" ): 
     905                                if self.text_disp_1 !=None: 
     906                                    self.text_disp_1.Show(True) 
    884907                except: 
    885908                    pass 
     
    888911                    if self.param_toFit[0][3].IsShown: 
    889912                        self.param_toFit[0][3].Hide() 
    890                 else: 
    891                      
    892                     self.param_toFit[0][3].Show(True) 
    893                     self.param_toFit[0][3].Refresh()                  
     913                else:                     
     914                    self.param_toFit[0][3].Show(True)                
    894915                    self.param_toFit[0][4].Show(True) 
    895916                    self.param_toFit[0][4].SetValue(format_number(cov[0])) 
    896                     self.param_toFit[0][4].Refresh() 
    897917                    has_error = True 
    898918        else: 
     
    900920            i = 0 
    901921            #Set the panel when fit result are list 
    902             for item in self.param_toFit:       
     922            for item in self.param_toFit:      
    903923                if len(item)>5 and item != None:      
    904924                    ## reset error value to initial state 
    905                     if item[3].IsShown(): 
    906                         item[3].Hide() 
    907                     if item[4].IsShown(): 
    908                         item[4].Hide() 
    909    
    910                     if len(out)<=len(self.param_toFit):# and i < len(out): 
    911                         val_out = format_number(self.model.getParam(item[1])) 
    912                         if item[2] != val_out: 
    913                             item[2].SetValue(val_out) 
    914                         
     925                    item[3].Hide() 
     926                    item[4].Hide() 
     927                     
    915928                    for ind in range(len(out)): 
    916929                         
    917930                        if item[1] == p_name[ind]: 
    918931                            break         
    919  
    920                     if(cov !=None) and len(cov)<=len(self.param_toFit): 
     932                    if len(out)<=len(self.param_toFit) and out[ind] !=None:    
     933                        val_out = format_number(out[ind])                   
     934                        item[2].SetValue(val_out) 
     935 
     936                    if(cov !=None): 
    921937                         
    922938                        try: 
    923                             name= dispersity.__name__ 
    924                             if name == "GaussianDispersion": 
    925                                 if hasattr(self,"text_disp_1" ): 
    926                                     if self.text_disp_1!=None: 
    927                                         self.text_disp_1.Show(True) 
     939                            if dispersity !=None: 
     940                                name= dispersity.__name__ 
     941                                if name == "GaussianDispersion" and self.enable_disp.GetValue(): 
     942                                    if hasattr(self,"text_disp_1" ): 
     943                                        if self.text_disp_1!=None: 
     944                                            if not self.text_disp_1.IsShown(): 
     945                                                self.text_disp_1.Show(True) 
    928946                        except: 
    929947                            pass     
    930948                    
    931                         if cov[ind]!=None and numpy.isfinite(cov[ind]): 
    932                             val_err = format_number(cov[ind]) 
    933                             item[3].Show(True) 
    934                             item[4].Show(True) 
    935                             if val_err != item[4].GetValue(): 
    936                                 item[4].SetValue(format_number(cov[ind])) 
    937                             has_error = True 
     949                        if cov[ind]!=None : 
     950                            if numpy.isfinite(float(cov[ind])): 
     951                                val_err = format_number(cov[ind]) 
     952                                item[3].Show(True) 
     953                                item[4].Show(True) 
     954                                item[4].SetValue(val_err) 
     955 
     956                                has_error = True 
    938957                    i += 1          
    939958        #Show error title when any errors displayed 
     
    941960            if not self.text2_3.IsShown(): 
    942961                self.text2_3.Show(True)  
    943         try:       
    944             ## save current state   
    945             self.save_current_state()  
    946             self.Layout() 
    947             self.Refresh() 
    948         except: 
    949             raise 
    950         self.btFit.SetFocus()   
    951  
     962                 
     963        ## save current state   
     964        self.save_current_state()           
     965        #plot model 
     966        self._draw_model()    
     967        self._lay_out()       
     968        #PostStatusEvent      
     969        msg="Fit completed! " 
     970        wx.PostEvent(self.manager.parent, StatusEvent(status=msg)) 
     971       
    952972 
    953973    def onSmear(self, event): 
     
    9951015            
    9961016            self.sizer5.Layout() 
    997             self.sizer5.Refresh() 
    9981017            self.state.tcChi =self.tcChi 
    9991018           
     
    10061025            Compute chisqr for 1D 
    10071026        """ 
    1008         from sans.guiframe.utils import check_value 
    1009         flag = check_value( self.qmin, self.qmax) 
    1010          
    1011         if not flag: 
    1012             return  
    1013          
    10141027        try: 
    10151028            self.qmin_x = float(self.qmin.GetValue()) 
     
    10431056            to the tcChi txtcrl 
    10441057        """ 
    1045         from sans.guiframe.utils import check_value 
    1046         flag = check_value( self.qmin, self.qmax) 
    1047         if not flag: 
    1048             return  
    1049        
    10501058        try: 
    10511059            self.qmin_x = float(self.qmin.GetValue()) 
     
    10761084            to the tcChi txtcrl 
    10771085        """ 
    1078         from sans.guiframe.utils import check_value 
    10791086        flag = check_value( self.qmin, self.qmax) 
    10801087        if flag== True: 
     
    12811288                ix += 1 
    12821289                value= self.model.getParam(item) 
    1283                 ctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
     1290                ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
    12841291                                    style=wx.TE_PROCESS_ENTER) 
    12851292                 
     
    12981305                 
    12991306                ix += 1 
    1300                 ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     1307                ctl3 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
    13011308                                               kill_focus_callback = self._onparamRangeEnter, 
    1302                                                text_enter_callback = self._onparamRangeEnter, 
    1303                                                set_focus_callback  = self._onparamRangeEnter) 
     1309                                               text_enter_callback = self._onparamRangeEnter) 
    13041310      
    13051311                sizer.Add(ctl3, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     
    13071313         
    13081314                ix += 1 
    1309                 ctl4 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     1315                ctl4 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
    13101316                                               kill_focus_callback = self._onparamRangeEnter, 
    1311                                                text_enter_callback = self._onparamRangeEnter, 
    1312                                                set_focus_callback  = self._onparamRangeEnter) 
     1317                                               text_enter_callback = self._onparamRangeEnter) 
    13131318                sizer.Add(ctl4, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    13141319       
     
    13201325                ix +=1 
    13211326                # Units 
    1322                 try: 
     1327                if self.model.details.has_key(item): 
    13231328                    units = wx.StaticText(self, -1, self.model.details[item][0], style=wx.ALIGN_LEFT) 
    1324                 except: 
     1329                else: 
    13251330                    units = wx.StaticText(self, -1, "", style=wx.ALIGN_LEFT) 
    13261331                sizer.Add(units, (iy,ix),(1,1),  wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     
    13761381                    ix += 1 
    13771382                    value= self.model.getParam(item) 
    1378                     ctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
     1383                    ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
    13791384                                        style=wx.TE_PROCESS_ENTER) 
    13801385                     
     
    13991404                     
    14001405                    ix += 1 
    1401                     ctl3 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     1406                    ctl3 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
    14021407                                                   kill_focus_callback = self._onparamRangeEnter, 
    1403                                                    text_enter_callback = self._onparamRangeEnter, 
    1404                                                    set_focus_callback  = self._onparamRangeEnter) 
     1408                                                   text_enter_callback = self._onparamRangeEnter) 
    14051409                
    14061410                    sizer.Add(ctl3, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     
    14131417                 
    14141418                    ix += 1 
    1415                     ctl4 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
     1419                    ctl4 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER, 
    14161420                                                   kill_focus_callback = self._onparamRangeEnter, 
    1417                                                    text_enter_callback = self._onparamRangeEnter, 
    1418                                                    set_focus_callback  = self._onparamRangeEnter) 
     1421                                                   text_enter_callback = self._onparamRangeEnter) 
    14191422                    sizer.Add(ctl4, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    14201423                    
     
    14271430                    ix +=1 
    14281431                    # Units 
    1429                     try: 
     1432                    if self.model.details.has_key(item): 
    14301433                        units = wx.StaticText(self, -1, self.model.details[item][0], style=wx.ALIGN_LEFT) 
    1431                     except: 
     1434                    else: 
    14321435                        units = wx.StaticText(self, -1, "", style=wx.ALIGN_LEFT) 
    14331436                    if self.data.__class__.__name__ =="Data2D": 
     
    14381441                     
    14391442                    sizer.Add(units, (iy,ix),(1,1),  wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    1440                          
    1441                      
     1443                                           
    14421444                    ##[cb state, name, value, "+/-", error of fit, min, max , units] 
    14431445                    self.parameters.append([cb,item, ctl1, 
     
    14471449               
    14481450        iy+=1 
    1449         #sizer.Add((10,10),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    14501451         
    14511452        #Display units text on panel 
    14521453        for item in keys:    
    1453             if self.model.details[item][0]!='': 
     1454            if self.model.details.has_key(item): 
    14541455                self.text2_4.Show() 
    1455                 break 
    1456             else: 
    1457                 self.text2_4.Hide() 
     1456 
    14581457        #self.state.cb1 = self.cb1.GetValue()         
    14591458        #self._copy_parameters_state(self.orientation_params, 
  • sansview/perspectives/fitting/fitting.py

    redd166b r7975f2b  
    477477            ## If a thread is already started, stop it 
    478478            if self.calc_fit!= None and self.calc_fit.isrunning(): 
     479                return 
    479480                self.calc_fit.stop() 
    480481             
    481482            wx.PostEvent(self.parent, StatusEvent(status="Start the computation", 
    482483                                        curr_thread=self.calc_fit,type="start")) 
     484            time.sleep(0.5) 
    483485            wx.PostEvent(self.parent, StatusEvent(status="Computing...", 
    484486                                        curr_thread=self.calc_fit,type="progress")) 
     487            time.sleep(0.5) 
    485488            ## perform single fit 
    486489            if self._fit_engine=="scipy": 
    487                 qmin, qmax= self.current_pg.get_range() 
     490                #qmin, qmax= self.current_pg.get_range() 
    488491                self.calc_fit=FitThread(parent =self.parent, 
    489492                                        fn= self.fitter, 
     
    745748            @param qmax: the maximum value of x to replot model 
    746749           
    747         """ 
    748         wx.PostEvent(self.parent, StatusEvent(status="Single fit \ 
    749         complete! " )) 
    750        
     750        """      
    751751        try: 
    752752            if result ==None: 
     
    766766            for name in pars: 
    767767                param_name.append(name) 
    768                 if result.pvec.__class__==numpy.float64: 
    769                     model.setParam(name,result.pvec) 
    770                 else: 
    771                     if result.pvec[i] != None and numpy.isfinite(result.pvec[i]): 
    772                         model.setParam(name,result.pvec[i]) 
    773                     i += 1 
    774             ## Reset values of the current page to fit result 
     768 
    775769            cpage.onsetValues(result.fitness,param_name, result.pvec,result.stderr) 
     770            """ 
    776771            ## plot the current model with new param 
    777772            metadata =  self.page_finder[cpage].get_fit_data() 
     
    784779            self.draw_model( model=model, data= metadata, smearer= smearer, 
    785780                             qmin= qmin, qmax= qmax) 
    786             wx.PostEvent(self.parent, StatusEvent(status=" " , type="stop"))  
     781            """ 
    787782        except: 
    788783            msg= "Single Fit completed but Following error occurred:%s"% sys.exc_value 
     
    798793            @param elapsed: computation time 
    799794        """ 
    800         wx.PostEvent(self.parent, StatusEvent(status="Simultaneous fit complete ")) 
    801         
    802795        ## fit more than 1 model at the same time  
    803796        try: 
     
    816809                if format_number(result.fitness) == page.get_chi2(): 
    817810                    #ToDo: Compare parameter inputs with outputs too. 
    818                     msg= "Simultaneous Fit completed" 
    819                     msg +=" but chi2 has not been improved..." 
    820811                    wx.PostEvent(self.parent, StatusEvent(status="%s " % msg))  
    821812                    break      
     
    833824                        if model.name == model_name: 
    834825                            p_name= model.name+"."+param_name 
    835                             if p.name == p_name: 
    836                                 small_out.append(p.value ) 
     826                            if p.name == p_name:       
    837827                                if p.value != None and numpy.isfinite(p.value): 
    838                                     model.setParam(param_name,p.value)  
    839                                 small_param_name.append(param_name) 
    840                                 small_cov.append(p.stderr) 
    841                             else: 
    842                                 value= model.getParam(param_name) 
    843                                 small_out.append(value ) 
    844                                 small_param_name.append(param_name) 
    845                                 small_cov.append(None) 
     828                                    small_out.append(p.value ) 
     829                                    small_param_name.append(param_name) 
     830                                    small_cov.append(p.stderr) 
     831 
    846832                    # Display result on each page  
    847833                    page.onsetValues(result.fitness, small_param_name,small_out,small_cov) 
    848                     #Replot models 
    849                     msg= "Simultaneous Fit completed. plotting... %s:"%model.name 
    850                     wx.PostEvent(self.parent, StatusEvent(status="%s " % msg)) 
    851                     qmin, qmax= page.get_range() 
    852                     smearer =self.page_finder[page].get_smearer() 
    853                     self.draw_model( model=model, data= metadata, smearer=smearer, 
    854                                      qmin= qmin, qmax= qmax) 
    855             wx.PostEvent(self.parent, StatusEvent(status=msg, type="stop")) 
    856834        except: 
    857835             msg= "Simultaneous Fit completed" 
  • sansview/perspectives/fitting/modelpage.py

    rc99a6c5 r7975f2b  
    9090 
    9191        sizer_npts= wx.GridSizer(1, 1,5, 5)     
    92         self.npts    = BasicPage.ModelTextCtrl(self, -1,size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
     92        self.npts    = self.ModelTextCtrl(self, -1,size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
    9393        self.npts.SetValue(format_number(self.num_points)) 
    9494        self.npts.SetToolTipString("Number of point to plot.") 
     
    186186                        ix = 1 
    187187                        value= self.model.getParam(name1) 
    188                         ctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
     188                        ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
    189189                                            style=wx.TE_PROCESS_ENTER) 
    190190                        ctl1.SetValue(str (format_number(value))) 
     
    195195                            ix =2 
    196196                            value= self.model.getParam(name2) 
    197                             Tctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
     197                            Tctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
    198198                                                style=wx.TE_PROCESS_ENTER) 
    199199                            Tctl1.SetValue(str (format_number(value))) 
     
    205205                            ix =3  
    206206                            value= self.model.getParam(name3) 
    207                             Tctl2 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
     207                            Tctl2 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
    208208                                                style=wx.TE_PROCESS_ENTER) 
    209209                            Tctl2.SetValue(str (format_number(value))) 
     
    234234                        ix = 1 
    235235                        value= self.model.getParam(name1) 
    236                         ctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
     236                        ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
    237237                                            style=wx.TE_PROCESS_ENTER) 
    238238                        ctl1.SetValue(str (format_number(value))) 
     
    251251                            ix =2 
    252252                            value= self.model.getParam(name2) 
    253                             Tctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
     253                            Tctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
    254254                                                style=wx.TE_PROCESS_ENTER) 
    255255                            Tctl1.SetValue(str (format_number(value))) 
     
    269269                            ix =3  
    270270                            value= self.model.getParam(name3) 
    271                             Tctl2 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
     271                            Tctl2 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH/2,20), 
    272272                                                style=wx.TE_PROCESS_ENTER) 
    273273                            Tctl2.SetValue(str (format_number(value))) 
     
    412412         
    413413        self.model_description = wx.Button(self,-1, label="Details", size=(80,23)) 
     414         
    414415        self.model_description.Bind(wx.EVT_BUTTON,self.on_button_clicked) 
    415416        self.model_description.SetToolTipString("Click Model Functions in HelpWindow...") 
    416        
     417        self.model_description.SetFocus() 
    417418        sizer_selection.Add( self.description_show ) 
    418419        sizer_selection.Add( (20,20))  
     
    528529                ix += 1 
    529530                value= self.model.getParam(item) 
    530                 ctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
     531                ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
    531532                    style=wx.TE_PROCESS_ENTER) 
    532533                 
     
    536537                ix +=1 
    537538                # Units 
    538                 try: 
     539                if self.model.details.has_key(item): 
    539540                    units = wx.StaticText(self, -1, self.model.details[item][0], style=wx.ALIGN_LEFT) 
    540                 except: 
     541                else: 
    541542                    units = wx.StaticText(self, -1, "", style=wx.ALIGN_LEFT) 
    542543                sizer.Add(units, (iy,ix),(1,1),  wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     
    574575                ix += 1 
    575576                value= self.model.getParam(item) 
    576                 ctl1 = BasicPage.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
     577                ctl1 = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH,20), 
    577578                    style=wx.TE_PROCESS_ENTER) 
    578579                 
     
    588589                ix +=1 
    589590                # Units 
    590                 try: 
     591                if self.model.details.has_key(item): 
    591592                    units = wx.StaticText(self, -1, self.model.details[item][0], style=wx.ALIGN_LEFT) 
    592                 except: 
     593                else: 
    593594                    units = wx.StaticText(self, -1, "", style=wx.ALIGN_LEFT) 
    594595                if not self.enable2D: 
    595596                    units.Hide() 
    596                     #units.Disable() 
    597597                else: 
    598598                    units.Show(True) 
    599                     #units.Enable() 
    600599    
    601600                sizer.Add(units, (iy,ix),(1,1),  wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     
    611610                     
    612611        iy+=1 
    613         #sizer.Add((10,10),(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    614612         
    615613        #Display units text on panel 
    616614        for item in keys:    
    617             if self.model.details[item][0]!='': 
    618                 self.text2_4.Show() 
    619                 break 
    620             else: 
    621                 self.text2_4.Hide() 
     615            self.text2_4.Show() 
     616 
    622617       
    623618        boxsizer1.Add(sizer) 
Note: See TracChangeset for help on using the changeset viewer.