Changeset 08b9c6c8 in sasview for sansview


Ignore:
Timestamp:
Dec 20, 2008 2:31:18 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:
988130c6
Parents:
b319def8
Message:

working on smearing

Location:
sansview/perspectives/fitting
Files:
3 edited

Legend:

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

    rdc317d1 r08b9c6c8  
    44import numpy,math 
    55import copy 
    6  
     6import sans.models.dispersion_models  
    77from sans.guicomm.events import StatusEvent    
    88(ModelEventbox, EVT_MODEL_BOX) = wx.lib.newevent.NewEvent() 
     
    5151        #panel interface 
    5252        self.vbox  = wx.BoxSizer(wx.VERTICAL) 
     53        self.sizer6 = wx.GridBagSizer(5,5) 
    5354        self.sizer5 = wx.GridBagSizer(5,5) 
    5455        self.sizer4 = wx.GridBagSizer(5,5) 
     
    5960         
    6061        self.DataSource  =wx.StaticText(self, -1,str(data.name)) 
    61          
     62        self.smearer_box = wx.ComboBox(self, -1) 
     63        wx.EVT_COMBOBOX( self.smearer_box,-1, self.onSmear )  
     64        self.smeares= sans.models.dispersion_models.models 
     65        i=0 
     66        self.smearer_box.SetValue(str(None)) 
     67        self.smearer_box.Insert(str(None),i) 
     68        for k,v in self.smeares.iteritems(): 
     69            self.smearer_box.Insert(str(v),i) 
     70            i+=1 
    6271        self.modelbox = wx.ComboBox(self, -1) 
    6372        id = wx.NewId() 
     
    7180        self.vbox.Add(self.static_line_1, 0, wx.EXPAND, 0) 
    7281        self.vbox.Add(self.sizer5) 
     82        self.vbox.Add(self.sizer6) 
    7383        self.vbox.Add(self.sizer4) 
    7484        self.vbox.Add(self.sizer1) 
     
    8696        ix += 1 
    8797        self.sizer3.Add((20,20),(iy,ix),(1,1),wx.RIGHT|wx.EXPAND|wx.ADJUST_MINSIZE,0) 
     98        ix = 0 
     99        iy += 1 
     100        self.sizer3.Add(wx.StaticText(self,-1,'Averaging (Smearer Type)'),(iy,ix),(1,1)\ 
     101                  , wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     102        ix += 1 
     103        self.sizer3.Add(self.smearer_box,(iy,ix),(1,1),  wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     104         
    88105        ix = 0 
    89106        iy += 1 
     
    133150        ix = 0 
    134151        iy = 1 
    135         self.smear= wx.CheckBox(self, -1, "Fit with Smear", (10, 10)) 
    136         wx.EVT_CHECKBOX(self, self.smear.GetId(), self.onSmear) 
    137         self.sizer1.Add(self.smear,(iy,ix),(1,1),\ 
    138                    wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    139         iy+=1 
     152         
    140153        self.text1_1 = wx.StaticText(self, -1, 'Chi2/dof', style=wx.ALIGN_LEFT) 
    141154        #self.sizer1.Add(self.text1_1,1) 
     
    160173        # contains link between  model ,all its parameters, and panel organization 
    161174        self.parameters=[] 
     175        self.fixed_param=[] 
    162176        #contains link between a model and selected parameters to fit  
    163177        self.param_toFit=[] 
     
    371385        self.sizer2.Clear(True) 
    372386        self.sizer5.Clear(True) 
     387        self.sizer6.Clear(True) 
    373388        self.parameters = [] 
    374389        self.param_toFit=[] 
     
    378393        keys.sort() 
    379394        disp_list=self.model.getDispParamList() 
     395        fixed=self.model.fixed 
    380396        ip=0 
    381397        iq=1 
     398         
     399        ik=0 
     400        im=1 
    382401        if len(disp_list)>0: 
    383402            disp = wx.StaticText(self, -1, 'Dispersion') 
     
    418437                self.sizer2.Add( cb,( iy, ix),(1,1),  wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    419438                wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param) 
    420                  
     439             
    421440                ix += 1 
    422441                value= self.model.getParam(item) 
     
    426445                ctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    427446                self.sizer2.Add(ctl1, (iy,ix),(1,1), wx.EXPAND) 
     447                 
    428448                ix += 1 
    429449                text2=wx.StaticText(self, -1, '+/-') 
     
    443463                self.sizer2.Add(units, (iy,ix),(1,1),  wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    444464            else: 
    445                 ip = 0 
    446                 iq += 1 
    447                 cb = wx.CheckBox(self, -1, item, (10, 10)) 
    448                 cb.SetValue(False) 
    449                 self.sizer5.Add( cb,( iq, ip),(1,1),  wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
    450                 wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param) 
    451                  
    452                 ip += 1 
    453                 value= self.model.getParam(item) 
    454                 ctl1 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
    455                 ctl1.SetValue(str (format_number(value))) 
    456                 ctl1.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
    457                 ctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
    458                 self.sizer5.Add(ctl1, (iq,ip),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
    459                  
     465                if not item in fixed: 
     466                    ip = 0 
     467                    iq += 1 
     468                    cb = wx.CheckBox(self, -1, item, (10, 10)) 
     469                    cb.SetValue(False) 
     470                    self.sizer5.Add( cb,( iq, ip),(1,1),  wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     471                    wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param) 
     472                     
     473                    ip += 1 
     474                    value= self.model.getParam(item) 
     475                    ctl1 = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
     476                    ctl1.SetValue(str (format_number(value))) 
     477                    ctl1.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
     478                    ctl1.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
     479                    self.sizer5.Add(ctl1, (iq,ip),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     480                else: 
     481                    ik = 0 
     482                    text = wx.StaticText(self, -1, item, style=wx.ALIGN_LEFT) 
     483                    self.sizer6.Add(text,( im, ik),(1,1),  wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15) 
     484             
     485                    ik += 1 
     486                    value= self.model.getParam(item) 
     487                    Tctl = wx.TextCtrl(self, -1, size=(_BOX_WIDTH,20), style=wx.TE_PROCESS_ENTER) 
     488                    Tctl.SetValue(str (format_number(value))) 
     489                    Tctl.Bind(wx.EVT_KILL_FOCUS, self._onparamEnter) 
     490                    Tctl.Bind(wx.EVT_TEXT_ENTER,self._onparamEnter) 
     491                    self.sizer6.Add(Tctl, (im,ik),(1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0) 
     492                    self.fixed_param.append([item, Tctl]) 
     493                    im += 1 
    460494            #save data 
    461495            self.parameters.append([cb,ctl1,text2,ctl2]) 
     
    512546                     wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 
    513547                            "Drawing  Error:wrong value entered : %s"% sys.exc_value)) 
    514             
     548            for item in self.fixed_param: 
     549                try: 
     550                     
     551                    name=str(item[0]) 
     552                    value= float(item[1].GetValue()) 
     553                    self.model.setParam(name,value)  
     554                except: 
     555                    raise  
     556                    wx.PostEvent(self.parent.GrandParent, StatusEvent(status=\ 
     557                            "Drawing  Error:wrong value entered : %s"% sys.exc_value)) 
    515558            self.manager.redraw_model(float(self.xmin.GetValue())\ 
    516559                                               ,float(self.xmax.GetValue()))       
     
    560603        else: 
    561604            self.cb1.SetValue(False) 
    562          
     605             
    563606        if not (len(self.param_toFit ) >0): 
    564607            self.xmin.Disable() 
     
    618661         
    619662    def onSmear(self, event): 
    620         if self.smear.GetValue()==True: 
     663        if event.GetString()=="None": 
     664            self.manager.set_smearer(None)    
     665             
     666             
     667        if event.GetString()=="GaussianModel": 
    621668            from DataLoader.qsmearing import smear_selection 
    622669            smear =smear_selection( self.data ) 
    623             self.data.smearer= smear 
    624             #print "on smearing", self.data.smearer._compute_matrix() 
    625         else: 
    626             self.data.smearer=None 
    627          
     670            self.manager.set_smearer(smear)    
     671            print "on smearing" 
     672        
  • sansview/perspectives/fitting/fitproblem.py

    r6bcdad1 r08b9c6c8  
    2222        self.list_param=[] 
    2323        self.name_per_page=None 
     24        self.smearer= None 
     25         
     26    def set_smearer(self, smearer): 
     27        self.smearer= smearer 
     28        print "smeaerer in fitproblem",self.smearer 
     29    def get_smearer(self): 
     30        return self.smearer 
     31     
    2432    def save_model_name(self, name):   
    2533        self.name_per_page= name 
     34         
     35         
    2636    def get_name(self): 
    2737        return self.name_per_page 
     38     
    2839    def set_model(self,model,name): 
    2940        """  
  • sansview/perspectives/fitting/fitting.py

    r6bcdad1 r08b9c6c8  
    319319                list=value.get_model() 
    320320                model=list[0] 
     321                smearer= value.get_smearer() 
    321322                #Create list of parameters for fitting used 
    322323                pars=[] 
     
    331332                    self.fitter.set_model(Model(model), self.id, pars)  
    332333                    
    333                     self.fitter.set_data(metadata,self.id,qmin,qmax) 
     334                    self.fitter.set_data(metadata,self.id,smearer, qmin,qmax) 
    334335                    self.fitter.select_problem_for_fit(Uid=self.id,value=value.get_scheduled()) 
    335336                    page_fitted=page 
     
    461462            sim_page.add_model(self.page_finder) 
    462463         
    463              
     464    def  set_smearer(self,smearer):      
     465         current_pg=self.fit_panel.get_current_page() 
     466         self.page_finder[current_pg].set_smearer(smearer) 
     467          
    464468    def redraw_model(self,qmin= None,qmax= None): 
    465469        """ 
     
    574578            Plot a theory from a model selected from the menu 
    575579        """ 
    576          
    577580        model=evt.model() 
    578581        #name="Model View" 
    579582        #print "mon menu",model.name 
    580583        description=model.description 
    581         #self.fit_panel.add_model_page(model,description,name)    
    582              
     584        #self.fit_panel.add_model_page(model,description,name)     
    583585        self.draw_model(model,self.enable_model2D) 
    584586         
Note: See TracChangeset for help on using the changeset viewer.