Changeset 00561739 in sasview for sansview/perspectives


Ignore:
Timestamp:
Sep 29, 2008 7:37:15 AM (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:
fa9674b
Parents:
4ab1c91
Message:

constraint fitting is not working yet

Location:
sansview/perspectives/fitting
Files:
6 edited

Legend:

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

    r442895f r00561739  
    211211         
    212212    def onClose(self,event): 
     213        """ close the page associated with this panel""" 
    213214        self.GrandParent.onClose() 
    214215         
     
    233234            sum=0 
    234235            for item in res: 
    235                 sum +=item 
    236         self.tcChi.SetValue(format_number(math.fabs(sum))) 
     236                if numpy.isfinite(item): 
     237                    sum +=item 
     238            self.tcChi.SetValue(format_number(math.fabs(sum))) 
    237239             
    238240             
     
    259261        list_name=[] 
    260262        for item in  self.model_list_box.itervalues(): 
     263            name = item.__name__ 
    261264            if hasattr(item, "name"): 
    262265                name = item.name 
    263             else: 
    264                 name = item.__name__ 
    265266            list_name.append(name) 
    266267        list_name.sort()    
     
    277278            post an event to its owner to draw an appropriate theory 
    278279        """ 
     280         
    279281        for item in self.model_list_box.itervalues(): 
    280             model=item() 
    281             if hasattr(model, "name"): 
    282                 name = model.name 
    283             else: 
    284                 name = model.__class__.__name__ 
    285             try: 
    286                 if name ==event.GetString(): 
    287                     evt = ModelEventbox(model=model,name=name) 
     282            name = item.__name__ 
     283            if hasattr(item, "name"): 
     284                name = item.name 
     285            #print "fitpage: _on_select_model model name",name ,event.GetString() 
     286            if name ==event.GetString(): 
     287                try: 
     288                    evt = ModelEventbox(model=item(),name=name) 
    288289                    wx.PostEvent(self.event_owner, evt) 
    289             except: 
    290                 raise #ValueError,"model.name is not equal to model class name" 
    291  
     290                except: 
     291                    raise #ValueError,"model.name is not equal to model class name" 
     292                break 
    292293     
    293294    def _onTextEnter(self,event): 
  • sansview/perspectives/fitting/fitproblem.py

    r3b19ac9 r00561739  
    2020        self.model_list=[] 
    2121        self.schedule='False' 
     22        self.param_name= None 
     23        self.param_value=None 
    2224         
    2325    def set_model(self,model,name): 
     
    3941    def get_model(self): 
    4042        """ @return: saved model """ 
     43        print "fitproblem",self.model_list 
    4144        return self.model_list 
    4245      
     
    6568            @param value: value of that parameter 
    6669        """ 
    67          
    68         self.model_list[0].setParam(name,value) 
    69         
     70        print "fitproblem",name,value 
     71        #self.model_list[0].setParam(name,value) 
     72        self.param_name = name 
     73        self.param_value= value 
     74    def get_model_param(self): 
     75        """  
     76            set the value of a given parameter of this model 
     77            @param name: name of the given parameter 
     78            @param value: value of that parameter 
     79        """ 
     80        print self.param_name, self.param_value 
     81        #self.model_list[0].setParam(name,value) 
     82        return self.param_name, self.param_value 
    7083         
    7184    def reset_model(self,model): 
  • sansview/perspectives/fitting/fitting.py

    r442895f r00561739  
    1414import fitpage 
    1515import park 
    16 class PlottableDatas(Data,Data1D): 
    17     """ class plottable data: class allowing to plot Data type on panel""" 
    18      
    19     def __init__(self,data=None,data1d=None): 
    20         Data.__init__(self,sans_data=data1d) 
    21         Data1D.__init__(self,x=data1d.x,y = data1d.y,dx = data1d.dx,dy = data1d.dy) 
    22         #self.x = data1d.x 
    23         #self.y = data1d.y 
    24         #self.dx = data1d.dx 
    25         #self.dy = data1d.dy 
    26         #self.data=data 
    27         self.group_id = data1d.group_id 
    28         #x_name, x_units = data1d.get_xaxis()  
    29         #y_name, y_units = data1d.get_yaxis()  
    30         #self.xaxis( x_name, x_units) 
    31         #self.yaxis( y_name, y_units ) 
    32         #self.qmin = data.qmin 
    33         #self.qmax = data.qmax 
    34         
    35  
    36 class PlottableData(Data,Data1D): 
    37     """ class plottable data: class allowing to plot Data type on panel""" 
    38      
    39     def __init__(self,data=None,data1d=None): 
    40         #Data.__init__(self,*args) 
    41         #Data1D.__init__(self,**kw) 
    42         self.x = data1d.x 
    43         self.y = data1d.y 
    44         self.dx = data1d.dx 
    45         self.dy = data1d.dy 
    46         self.data=data 
    47         self.group_id = data1d.group_id 
    48         x_name, x_units = data1d.get_xaxis()  
    49         y_name, y_units = data1d.get_yaxis()  
    50         self.xaxis( x_name, x_units) 
    51         self.yaxis( y_name, y_units ) 
    52         self.qmin = data.qmin 
    53         self.qmax = data.qmax 
    54         def residuals(self, fn): 
    55             return self.data.residuals(fn) 
    5616 
    5717class Plugin: 
     
    218178                list=value.get_model() 
    219179                model=list[0] 
     180                print "fitting",model.name,modelname 
    220181                if model.name== modelname: 
    221182                    value.set_model_param(names,values) 
     
    400361                            wx.PostEvent(self.parent, StatusEvent(status="Fitting error: %s" % sys.exc_value)) 
    401362                            return 
    402                     self.fitter.set_model(Model(model), self.id, pars)  
     363                    new_model=Model(model) 
     364                    param_name,param_value=value.get_model_param() 
     365                    print "fitting ",param_name 
     366                    new_model.set( param_name =str(param_value)) 
     367                    #self.fitter.set_model(new_model, self.id, pars)  
    403368                    self.fitter.set_data(Data(sans_data=data),self.id,qmin,qmax) 
    404369                 
     
    492457                theory.xaxis(x_name, x_units) 
    493458                theory.yaxis(y_name, y_units) 
    494                 #print"fitting : redraw data.x",data.x 
    495                 #print"fitting : redraw data.y",data.y 
    496                 #print"fitting : redraw data.dy",data.dy 
    497459                if qmin == None : 
    498460                   qmin = min(data.x) 
     
    524486                    theory.x.append(tempx) 
    525487                    theory.y.append(tempy) 
    526                 except: 
    527                         wx.PostEvent(self.parent, StatusEvent(status="fitting \ 
    528                         skipping point x %g %s" %(qmax, sys.exc_value))) 
    529                 try: 
    530                     #print "fitting redraw for plot thoery .x",theory.x 
    531                     #print "fitting redraw for plot thoery .y",theory.y 
    532                     #print "fitting redraw for plot thoery .dy",theory.dy 
    533                     #rom sans.guicomm.events import NewPlotEvent 
    534488                    wx.PostEvent(self.parent, NewPlotEvent(plot=theory, title="Analytical model")) 
    535489                except: 
    536                     raise 
    537                     print "SimView.complete1D: could not import sans.guicomm.events" 
    538              
     490                    wx.PostEvent(self.parent, StatusEvent(status="fitting \ 
     491                        skipping point x %g %s" %(qmax, sys.exc_value))) 
     492                
    539493             
    540494    def _on_model_menu(self, evt): 
     
    567521            new_plot.yaxis("\\rm{Intensity} ","cm^{-1}") 
    568522            new_plot.group_id ="Fitness" 
    569           
    570523            wx.PostEvent(self.parent, NewPlotEvent(plot=new_plot, title="Analytical model")) 
    571524        except: 
    572             print "SimView.complete1D: could not import sans.guicomm.events\n %s" % sys.exc_value 
    573             logging.error("SimView.complete1D: could not import sans.guicomm.events\n %s" % sys.exc_value) 
     525            wx.PostEvent(self.parent, StatusEvent(status="fitting \ 
     526                        skipping point x %g %s" %(qmax, sys.exc_value))) 
    574527 
    575528if __name__ == "__main__": 
  • sansview/perspectives/fitting/modelpage.py

    r442895f r00561739  
    5252        self.sizer1 = wx.GridBagSizer(5,5) 
    5353        self.sizer2 = wx.GridBagSizer(5,5) 
     54        self.sizer4 = wx.GridBagSizer(5,5) 
    5455        self.modelbox = wx.ComboBox(self, -1) 
    5556        id = wx.NewId() 
     
    5758        self.vbox.Add(self.sizer1) 
    5859        self.vbox.Add(self.sizer2) 
     60        self.vbox.Add(self.sizer4) 
     61         
     62        id = wx.NewId() 
     63        self.btClose =wx.Button(self,id,'Close') 
     64        self.btClose.Bind(wx.EVT_BUTTON, self.onClose,id=id) 
     65        self.btClose.SetToolTipString("Close page.") 
     66         
     67        ix = 12 
     68        iy = 1 
     69        self.sizer4.Add( self.btClose,(iy,ix),(1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    5970        ix = 0 
    6071        iy = 1 
    61         
    6272        self.sizer3.Add(wx.StaticText(self,-1,'Model'),(iy,ix),(1,1)\ 
    6373                  , wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     
    8797         
    8898         
     99    def onClose(self,event): 
     100        """ close the page associated with this panel""" 
     101        self.GrandParent.onClose() 
     102         
    89103    def set_owner(self,owner): 
    90104        """  
     
    122136    
    123137    def set_page(self, model,description): 
    124         print " modelpage: set_page was called",model 
     138        #print " modelpage: set_page was called",model 
    125139        self.model=model 
    126140        self.description=description 
     
    137151            post an event to its owner to draw an appropriate theory 
    138152        """ 
    139         print "modelpage: self.model_list_box ",self.model_list_box 
     153        #print "modelpage: self.model_list_box ",self.model_list_box 
    140154        for item in self.model_list_box.itervalues(): 
    141155            model=item() 
    142             print "modelpage:model",model 
     156            #print "modelpage:model",model 
    143157            if hasattr(model, "name"): 
    144158                name = model.name 
  • sansview/perspectives/fitting/models.py

    r442895f r00561739  
    55 
    66(ModelEvent, EVT_MODEL) = wx.lib.newevent.NewEvent() 
     7 
    78class ModelInfo(object): 
     9    """ 
     10         this class contains description for a given model 
     11    """ 
    812    def __init__(self,model,description=None): 
    913        self.model=model 
    1014        self.description=description 
     15         
    1116    def set_description(self, descrition): 
    1217        self.description =str(description) 
     18         
    1319    def get_description(self): 
    1420        return self.description 
     21     
     22     
    1523def log(message): 
    1624    print message 
     
    179187        if len(self.indep_model_list) == 0: 
    180188            for item in self.indep_model: 
    181                 if item not in self.indep_model_list.values(): 
    182                     self.indep_model_list[str(id)] = item 
    183                     self.model_list[str(id)]=item 
    184                     if hasattr(item, "name"): 
    185                         name = item.model.name 
    186                     else: 
    187                         name = item.model.__name__ 
    188                     indep_submenu.Append(id,name, name) 
    189                     self.model_list_box[name] =item.model 
    190                     wx.EVT_MENU(event_owner, int(id), self._on_model) 
    191                     id = wx.NewId()          
     189                #if item not in self.indep_model_list.values(): 
     190                    #self.indep_model_list[str(id)] = item 
     191                self.model_list[str(id)]=item 
     192                name = item.model.__name__ 
     193                if hasattr(item, "name"): 
     194                    name = item.model.name 
     195                indep_submenu.Append(id,name, name) 
     196                self.model_list_box[name] =item.model 
     197                wx.EVT_MENU(event_owner, int(id), self._on_model) 
     198                id = wx.NewId()          
    192199        modelmenu.AppendMenu(wx.NewId(), "Shape-independent...", indep_submenu, "List of shape-independent models") 
    193200         
     
    198205        if len(self.custom_models) == 0: 
    199206            for item in self.plugins: 
    200                 if item not in self.custom_models.values(): 
    201                     self.custom_models[str(id)] = item 
    202                      
    203                     self.model_list[str(id)]=ModelInfo(item,model_info) 
    204                     if hasattr(item, "name"): 
    205                         name = item.name 
    206                     else: 
    207                         name = item.__name__ 
    208                     added_models.Append(id, name, name) 
    209                     self.model_list_box[name] =item 
    210                     wx.EVT_MENU(event_owner, int(id), self._on_model) 
    211                     id = wx.NewId() 
     207                #if item not in self.custom_models.values(): 
     208                    #self.custom_models[str(id)] = item 
     209                self.model_list[str(id)]=ModelInfo(item,model_info) 
     210                name = item.__name__ 
     211                if hasattr(item, "name"): 
     212                    name = item.name 
     213                added_models.Append(id, name, name) 
     214                self.model_list_box[name] =item 
     215                wx.EVT_MENU(event_owner, int(id), self._on_model) 
     216                id = wx.NewId() 
    212217        modelmenu.AppendMenu(wx.NewId(),"Added models...", added_models, "List of additional models") 
    213218        return 0 
  • sansview/perspectives/fitting/simfitpage.py

    r442895f r00561739  
    4444 
    4545        self.ctl2 = wx.TextCtrl(self, -1, style=wx.TE_MULTILINE) 
    46         self.ctl2.Bind(wx.EVT_KILL_FOCUS, self._onTextEnter) 
    47         self.ctl2.Bind(wx.EVT_TEXT_ENTER, self._onTextEnter) 
     46        #self.ctl2.Bind(wx.EVT_KILL_FOCUS, self._onTextEnter) 
     47        #self.ctl2.Bind(wx.EVT_TEXT_ENTER, self._onTextEnter) 
    4848        self.sizer2.Add(self.ctl2, 0, wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10) 
    4949        
     
    6565    def onFit(self,event): 
    6666        """ signal for fitting""" 
     67        self._onTextEnter() 
    6768        if len(self.model_toFit) >0 : 
    6869            if len(self.params)>0: 
     
    7576            wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 
    7677                            "Select at least on model to fit ")) 
     78             
     79             
    7780    def set_manager(self, manager): 
    7881        """ 
     
    105108            @param page_finder: the dictionary containing models information 
    106109        """ 
    107         import copy  
     110        
    108111        self.model_list=[] 
    109112        self.model_toFit=[] 
     
    206209     
    207210                 
    208     def _onTextEnter(self,event): 
     211    #def _onTextEnter(self,event): 
     212    def _onTextEnter(self): 
    209213        """ 
    210214            get values from the constrainst textcrtl ,parses them into model name 
     
    225229                        self.params.append(self.parser_helper(item)) 
    226230                    except: 
    227                         wx.PostEvent(self.parent.GrandParent, StatusEvent(status="Loading Error: %s" % sys.exc_value)) 
     231                        wx.PostEvent(self.parent.GrandParent, StatusEvent(status="Constraint Error: %s" % sys.exc_value)) 
    228232            else: 
    229233                try: 
    230234                    self.params.append(self.parser_helper(value)) 
    231235                except: 
    232                      wx.PostEvent(self.parent.GrandParent, StatusEvent(status="Loading Error: %s" % sys.exc_value)) 
     236                     wx.PostEvent(self.parent.GrandParent, StatusEvent(status="Constraint Error: %s" % sys.exc_value)) 
    233237        except: 
    234238            raise 
     
    253257                model_name=param_names[0] 
    254258                param_name=param_names[1] 
    255                 param=[str(model_name),str(param_name),str(param_value)] 
     259                ##### just added 
     260                if string.find(param_name,".")!=-1: 
     261                ######## 
     262                    param_new_name= re.split("\.",param_name) 
     263                else:   
     264                    param_new_name=  param_name 
     265                print "simfitpage: param name",param_new_name 
     266                param=[str(model_name),str(param_new_name[1]),str(param_value)] 
    256267                #print "simfitpage: param",param 
    257268                return param 
Note: See TracChangeset for help on using the changeset viewer.