Changeset 77e23a2 in sasview


Ignore:
Timestamp:
Apr 2, 2009 12:28:34 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:
7fff5cd
Parents:
05f14dd
Message:

add fit with parameter range when selecting park only

Location:
sansview/perspectives/fitting
Files:
6 edited

Legend:

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

    r376916c r77e23a2  
    2929        ## parent of the page 
    3030        self.parent = parent 
     31        ## manager is the fitting plugin 
     32        self.manager=None 
    3133        ## owner of the page (fitting plugin) 
    3234        self.event_owner= None 
     
    7072            self.data = self.page_info.data 
    7173            self.event_owner = self.page_info.event_owner 
     74            self.manager=self.page_info.manager 
    7275             
    7376            if self.model !=None: 
     
    356359      
    357360    def onSetFocus(self, evt): 
     361        """ 
     362            highlight the current textcrtl and hide the error text control shown  
     363            after fitting 
     364        """ 
     365        if hasattr(self,"text2_3"): 
     366            self.text2_3.Hide() 
     367        if len(self.parameters)>0: 
     368            for item in self.parameters: 
     369                ## hide statictext +/-     
     370                if item[3]!=None: 
     371                    item[3].Hide() 
     372                ## hide textcrtl  for error after fit 
     373                if item[4]!=None: 
     374                    item[4].Clear() 
     375                    item[4].Hide() 
     376        if len(self.fittable_param)>0: 
     377            for item in self.fittable_param: 
     378                ## hide statictext +/-     
     379                if item[3]!=None: 
     380                    item[3].Hide() 
     381                ## hide textcrtl  for error after fit 
     382                if item[4]!=None: 
     383                    item[4].Clear() 
     384                    item[4].Hide() 
     385        self.Layout() 
    358386        # Get a handle to the TextCtrl 
    359387        widget = evt.GetEventObject() 
    360388        # Select the whole control, after this event resolves 
    361         wx.CallAfter(widget.SetSelection, -1, -1) 
     389        wx.CallAfter(widget.SetSelection, -1,-1) 
    362390        return 
    363391     
     
    414442        """ 
    415443        if self.model !=None: 
     444             
    416445            # Flag to register when a parameter has changed. 
    417446            is_modified = False 
     
    723752            self.model= MultiplicationModel(form_factor(),struct_factor()) 
    724753 
    725         self.set_model_param_sizer(self.model) 
     754        self._on_select_model(event=None) 
    726755        self.sizer4_4.Clear() 
    727756        self.sizer4.Layout() 
    728757             
    729         self._draw_model() 
     758         
    730759        self.set_scroll() 
    731760         
     
    752781        except: 
    753782            pass 
    754         wx.EVT_COMBOBOX(combobox,-1, self._on_select_model)  
     783        #wx.EVT_COMBOBOX(combobox,-1, self._on_select_model)  
    755784        return 0 
    756785    
     
    802831        for item in list: 
    803832            try: 
     833                name = str(item[1]) 
    804834                if hasattr(self,"text2_3"): 
    805835                    self.text2_3.Hide() 
     836                ## check model parameters range 
     837                ## check minimun value 
     838                param_min= None 
     839                param_max= None 
     840                if item[5]!= None: 
     841                    if format_number(item[5].GetValue())!="NaN": 
     842                        param_min = float(item[5].GetValue()) 
     843                    self.model.details[name][1]=param_min 
     844                ## check maximum value 
     845                if item[6]!= None: 
     846                    if format_number(item[6].GetValue())!="NaN": 
     847                        param_max = float(item[6].GetValue()) 
     848                         
     849                from sans.guiframe.utils import check_value 
     850                if param_min != None and param_max !=None: 
     851                    if check_value(item[5], item[6]): 
     852                        self.model.details[name][1:]=param_min,param_max 
     853                    else: 
     854                        msg= "Wrong Fit range entered for parameter " 
     855                        msg+= "name %s of model %s "%(name, self.model.name) 
     856                        wx.PostEvent(self.parent.parent, StatusEvent(status = msg )) 
     857                        self.model.details[name][1:]=param_min,param_max 
     858                ## hide statictext +/-     
    806859                if item[3]!=None: 
    807860                    item[3].Hide() 
     861                ## hide textcrtl  for error after fit 
    808862                if item[4]!=None: 
    809863                    item[4].Clear() 
    810864                    item[4].Hide() 
    811                 name = str(item[1]) 
     865                 
    812866                value= float(item[2].GetValue()) 
    813867                # If the value of the parameter has changed, 
  • sansview/perspectives/fitting/fitpage.py

    r376916c r77e23a2  
    99from sans.guicomm.events import StatusEvent    
    1010from sans.guiframe.utils import format_number 
     11 
    1112(ModelEventbox, EVT_MODEL_BOX) = wx.lib.newevent.NewEvent() 
     13(FitterTypeEvent, EVT_FITTER_TYPE)   = wx.lib.newevent.NewEvent() 
    1214_BOX_WIDTH = 80 
    1315 
     
    4345        self.page_info.model= self.model 
    4446        self._on_select_model(event=None) 
    45              
    46          
     47        self.Bind(EVT_FITTER_TYPE,self._on_engine_change) 
     48     
     49     
     50    def _on_engine_change(self, event): 
     51        """ 
     52            get an event containing the current name of the fit engine type 
     53            @param event: FitterTypeEvent containing  the name of the current engine 
     54        """ 
     55        if len(self.parameters)==0: 
     56            return 
     57        for item in self.parameters: 
     58            if event.type =="scipy": 
     59                item[5].SetValue(format_number("")) 
     60                item[5].Hide() 
     61                item[6].SetValue(format_number("")) 
     62                item[6].Hide() 
     63                self.text2_min.Hide() 
     64                self.text2_max.Hide() 
     65            else: 
     66                item[5].Show(True) 
     67                item[6].Show(True) 
     68                self.text2_min.Show(True) 
     69                self.text2_max.Show(True) 
     70                 
     71        self.sizer3.Layout() 
     72        self.SetScrollbars(20,20,200,100) 
     73             
     74             
    4775    def _on_display_description(self, event): 
    4876        """ 
     
    261289                    ctl1.SetValue(str (format_number(value))) 
    262290                    ctl1.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
     291                    ctl1.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    263292                    ctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    264293                    self.sizer4_4.Add(ctl1, (iy,ix),(1,1),wx.EXPAND) 
     
    286315                        Tctl.SetValue(str (format_number(value))) 
    287316                        Tctl.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
     317                        Tctl.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    288318                        Tctl.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    289319                        self.sizer4_4.Add(Tctl, (iy,ix),(1,1), 
     
    300330                        Tctl.SetValue(str (format_number(value))) 
    301331                        Tctl.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
     332                        Tctl.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    302333                        Tctl.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    303334                        self.sizer4_4.Add(Tctl, (iy,ix),(1,1), 
     
    344375        self.manager.set_fit_range(page= self,qmin= self.qmin_x, qmax= self.qmax_x) 
    345376        #single fit  
    346         #self.manager.on_single_fit(qmin=self.qmin_x,qmax=self.qmax_x) 
    347377        self.manager.onFit() 
    348378             
     
    373403            when enter value on panel redraw model according to changed 
    374404        """ 
    375          
    376405        self._onparamEnter_helper() 
    377406        self.compute_chisqr() 
     
    660689         
    661690         
    662     def set_model_param_sizer(self, model, engine_type="park"): 
     691    def set_model_param_sizer(self, model): 
    663692        """ 
    664693            Build the panel from the model content 
     
    719748                            wx.EXPAND|wx.ADJUST_MINSIZE, 0)  
    720749        self.text2_4.Hide() 
    721         if  engine_type == "park": 
    722             self.text2_max.Show(True) 
    723             self.text2_min.Show(True) 
     750         
    724751 
    725752        for item in keys: 
     
    739766                                    style=wx.TE_PROCESS_ENTER) 
    740767                 
    741                 ctl1.SetValue(str (format_number(value))) 
     768                ctl1.SetValue(format_number(value)) 
     769                ctl1.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
    742770                ctl1.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    743771                ctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
     
    755783                ctl2.Hide() 
    756784                 
     785                param_min, param_max= self.model.details[item][1:] 
    757786                ix += 1 
    758787                ctl3 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER) 
     788                ctl3.SetValue(format_number(param_min)) 
     789                ctl3.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
    759790                ctl3.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    760791                ctl3.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    761792                sizer.Add(ctl3, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    762793                ctl3.Hide() 
    763                  
     794         
    764795                ix += 1 
    765796                ctl4 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH/2,20), style=wx.TE_PROCESS_ENTER) 
     797                ctl4.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
    766798                ctl4.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    767799                ctl4.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    768800                sizer.Add(ctl4, (iy,ix),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     801                ctl4.SetValue(format_number(param_max)) 
    769802                ctl4.Hide() 
    770                 if  engine_type == "park": 
    771                     ctl3.Show(True) 
    772                     ctl4.Show(True) 
    773                      
     803               
    774804                ix +=1 
    775805                # Units 
  • sansview/perspectives/fitting/fitpanel.py

    r1328e03 r77e23a2  
    152152        myinfo = PageInfo( self, data=data ) 
    153153        myinfo.model_list_box = self.model_list_box.get_list() 
    154         myinfo.event_owner =self.event_owner  
     154        myinfo.event_owner = self.event_owner  
     155        myinfo.manager = self.manager 
    155156         
    156157        if not name in self.fit_page_name : 
     
    160161            panel.name = name 
    161162            panel.window_name= "fitpage" 
    162             panel.set_manager(self.manager) 
    163             panel.set_owner(self.event_owner) 
    164              
    165163            self.AddPage(page=panel,caption=name,select=True) 
    166164            #panel.populate_box( self.model_list_box) 
     
    215213        myinfo = PageInfo( self, model ) 
    216214        myinfo.model_list_box = self.model_list_box.get_list() 
    217         myinfo.event_owner =self.event_owner 
     215        myinfo.event_owner = self.event_owner  
     216        myinfo.manager = self.manager 
    218217         
    219218        from modelpage import ModelPage 
    220219        panel = ModelPage(self,myinfo,page_title) 
    221         panel.set_manager(self.manager) 
    222         panel.set_owner(self.event_owner) 
    223          
    224          
     220        
    225221        self.AddPage(page=panel,caption="Model",select=True) 
    226         #panel.populate_box( self.model_list_box) 
     222 
    227223        panel.name = page_title 
    228224        self.draw_model_name=page_title 
  • sansview/perspectives/fitting/fitting.py

    r89ef796 r77e23a2  
    2222import time 
    2323import thread 
     24 
    2425 
    2526(PageInfoEvent, EVT_PAGE_INFO)   = wx.lib.newevent.NewEvent() 
     
    450451            Add name of a closed page of fitpanel in a menu  
    451452        """ 
    452         # Post paramters 
    453         event_id = wx.NewId() 
    454         self.menu1.Append(event_id, name,  
    455              "Show %s fit panel" % name) 
    456         self.closed_page_dict[event_id ]= [page_info, fitproblem] 
     453        if len(self.closed_page_dict)>0: 
     454            for k , value in self.closed_page_dict.iteritems(): 
     455                if not name in value: 
     456                    # Post paramters 
     457                    event_id = wx.NewId() 
     458                    self.menu1.Append(event_id, name, "Show %s fit panel" % name) 
     459                    self.closed_page_dict[event_id ]= [page_info, fitproblem] 
     460                else: 
     461                    event_id= k 
     462                    self.closed_page_dict[k ]= [page_info, fitproblem] 
     463        else: 
     464            event_id = wx.NewId() 
     465            self.menu1.Append(event_id, name, "Show %s fit panel" % name) 
     466            self.closed_page_dict[event_id ]= [page_info, fitproblem] 
    457467        wx.EVT_MENU(self.parent,event_id,  self._open_closed_page) 
    458468         
     
    719729            @param engine: the key work of the engine 
    720730        """ 
     731        ## saving fit engine name 
    721732        self._fit_engine = engine 
     733        ## post a message to status bar 
    722734        wx.PostEvent(self.parent, StatusEvent(status="Engine set to: %s" % self._fit_engine)) 
    723735    
     736        ## Bind every open fit page with a newevent to know the current fitting engine 
     737        import fitpage 
     738        event= fitpage.FitterTypeEvent() 
     739        event.type = self._fit_engine 
     740        for key in self.page_finder.keys(): 
     741            wx.PostEvent(key, event) 
     742        
    724743    
    725744    def _on_model_panel(self, evt): 
     
    729748        """ 
    730749        model = evt.model 
     750         
    731751        if model ==None: 
    732752            return 
    733753        
    734         sim_page=self.sim_page 
    735754        current_pg = self.fit_panel.get_current_page()  
    736755        ## make sure nothing is done on self.sim_page 
    737756        ## example trying to call set_panel on self.sim_page 
    738         if current_pg != sim_page: 
     757        if current_pg != self.sim_page : 
    739758            
    740759            if self.page_finder[current_pg].get_model()== None : 
     
    743762                self.index_model += 1   
    744763            else: 
    745                  
    746764                model.name= self.page_finder[current_pg].get_model().name 
    747765                 
    748             
    749766            metadata = self.page_finder[current_pg].get_plotted_data() 
    750767             
  • sansview/perspectives/fitting/modelpage.py

    r376916c r77e23a2  
    178178                    ctl1.SetValue(str (format_number(value))) 
    179179                    ctl1.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
     180                    ctl1.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    180181                    ctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    181182                    self.sizer4_4.Add(ctl1, (iy,ix),(1,1), wx.EXPAND) 
     
    192193                        Tctl1.SetValue(str (format_number(value))) 
    193194                        Tctl1.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
     195                        Tctl1.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    194196                        Tctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    195197                        self.sizer4_4.Add(Tctl1, (iy,ix),(1,1), 
     
    207209                        Tctl2.SetValue(str (format_number(value))) 
    208210                        Tctl2.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
     211                        Tctl2.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    209212                        Tctl2.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    210213                        self.sizer4_4.Add(Tctl2, (iy,ix),(1,1), 
     
    386389                ctl1.SetValue(str (format_number(value))) 
    387390                ctl1.Bind(wx.EVT_SET_FOCUS, self.onSetFocus) 
     391                ctl1.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    388392                ctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    389393                 
  • sansview/perspectives/fitting/simfitpage.py

    r6f023e8 r77e23a2  
    290290            Show constraint fields 
    291291        """ 
     292        self.btAdd.Show(True) 
    292293        if len(self.constraints_list)!= 0: 
    293294            nb_fit_param = 0 
     
    511512        self.btAdd.Bind(wx.EVT_BUTTON, self._onAdd_constraint,id= self.btAdd.GetId()) 
    512513        self.btAdd.SetToolTipString("Add another constraint?") 
     514        self.btAdd.Hide() 
    513515      
    514516         
Note: See TracChangeset for help on using the changeset viewer.