Changeset ba1f0b2 in sasview for sansview/perspectives/fitting


Ignore:
Timestamp:
Apr 18, 2011 10:22:51 AM (14 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:
1a74523
Parents:
4bd492f
Message:

fixed 2D smear draw updating

Location:
sansview/perspectives/fitting
Files:
4 edited

Legend:

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

    r69f9084 rba1f0b2  
    25032503        else: 
    25042504            name = self.model.__class__.__name__ 
    2505             print "name",name 
    25062505 
    25072506        frame = HelpWindow(None, -1,  pageToOpen=model_path)     
  • sansview/perspectives/fitting/fitpage.py

    r06aa2eeb rba1f0b2  
    1616_BOX_WIDTH = 76 
    1717_DATA_BOX_WIDTH = 300 
    18 SMEAR_SIZE_L = 0.005 
    19 SMEAR_SIZE_H = 0.006 
     18SMEAR_SIZE_L = 0.00 
     19SMEAR_SIZE_H = 0.00 
    2020 
    2121import basepage 
     
    7272         
    7373        """ 
    74         if self.data.__class__.__name__ =="Data2D": 
     74        if self.data.__class__.__name__ == "Data2D" or \ 
     75                        self.enable2D: 
    7576            return True 
    7677        return False 
     
    100101         
    101102        # Check if data is 2D 
    102         if self.data.__class__.__name__ == 'Data2D': 
     103        if self.data.__class__.__name__ ==  "Data2D" or \ 
     104                        self.enable2D: 
    103105            is_2Ddata = True 
    104106             
     
    315317         
    316318        #check if it is 2D data 
    317         if self.data.__class__.__name__ == 'Data2D': 
     319        if self.data.__class__.__name__ ==  "Data2D" or \ 
     320                        self.enable2D: 
    318321            is_2Ddata = True 
    319322             
     
    758761                                           wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE,  
    759762                                           5) 
    760                         if self.data.__class__.__name__ =="Data2D": 
     763                        if self.data.__class__.__name__ ==  "Data2D" or \ 
     764                                    self.enable2D: 
    761765                            cb.Show(True) 
    762766                        elif cb.IsShown(): 
     
    769773                        ctl1.SetToolTipString(poly_tip) 
    770774                        ctl1.SetValue(str (format_number(value, True))) 
    771                         if self.data.__class__.__name__ =="Data2D": 
     775                        if self.data.__class__.__name__ == "Data2D" or \ 
     776                                    self.enable2D: 
    772777                            if first_orient: 
    773778                                values.SetLabel('PD[ratio], Sig[deg]') 
     
    820825                        ctl4.Hide() 
    821826                         
    822                         if self.data.__class__.__name__ =="Data2D": 
     827                        if self.data.__class__.__name__ ==  "Data2D" or \ 
     828                                self.enable2D: 
    823829                            ctl3.Show(True) 
    824830                            ctl4.Show(True)  
     
    832838                             
    833839                            Tctl.SetValue(str (format_number(value))) 
    834                             if self.data.__class__.__name__ =="Data2D": 
     840                            if self.data.__class__.__name__ ==  "Data2D" or \ 
     841                                    self.enable2D: 
    835842                                Tctl.Show(True) 
    836843                            else: 
     
    851858                             
    852859                            Tct2.SetValue(str (format_number(value))) 
    853                             if self.data.__class__.__name__ =="Data2D": 
     860                            if self.data.__class__.__name__ ==  "Data2D" or \ 
     861                                    self.enable2D: 
    854862                                Tct2.Show(True) 
    855863                            else: 
     
    880888                                            text2, ctl2, ctl3, ctl4, disp_box]) 
    881889                        
    882                 if self.data.__class__.__name__ =="Data2D": 
     890                if self.data.__class__.__name__ == "Data2D" or \ 
     891                                self.enable2D: 
    883892                    disp_box.Show(True) 
    884893                else: 
     
    11171126                        flag1 = self.update_pinhole_smear() 
    11181127                        flag = flag or flag1 
    1119                 elif self.data.__class__.__name__ !="Data2D": 
     1128                elif self.data.__class__.__name__ !=  "Data2D" and \ 
     1129                        not self.enable2D: 
    11201130                    self._manager.set_smearer(smearer=temp_smearer,  
     1131                                              enable2D=self.enable2D, 
    11211132                                              uid=self.uid, 
    11221133                                             qmin= float(self.qmin_x), 
     
    12161227            # check for 2d 
    12171228            if self.data is not None: 
    1218                 if self.data.__class__.__name__ =="Data2D": 
     1229                if self.data.__class__.__name__ == "Data2D" or \ 
     1230                        self.enable2D: 
    12191231                    # set mask    
    12201232                    radius= numpy.sqrt( self.data.qx_data*self.data.qx_data +  
     
    12681280            for item in self.parameters: 
    12691281                #Skip t ifhe angle parameters if 1D data 
    1270                 if self.data.__class__.__name__ !="Data2D": 
     1282                if self.data.__class__.__name__ !=  "Data2D" and \ 
     1283                        not self.enable2D: 
    12711284                    if item in self.orientation_params: 
    12721285                        continue 
     
    12831296            for item in self.fittable_param: 
    12841297                #Skip t ifhe angle parameters if 1D data 
    1285                 if self.data.__class__.__name__ !="Data2D": 
     1298                if self.data.__class__.__name__ !=  "Data2D" and \ 
     1299                        not self.enable2D: 
    12861300                    if item in self.orientation_params: 
    12871301                        continue 
     
    13241338        if self.data is None: 
    13251339            return 
    1326         elif self.data.__class__.__name__ == 'Data2D':   
     1340        elif self.data.__class__.__name__ ==  "Data2D" or \ 
     1341                        self.enable2D:   
    13271342            if data.dqx_data == None or  data.dqy_data ==None:  
    13281343                return 
     
    15371552        if data is None: 
    15381553            return 
    1539         self.smearer = smear_selection(self.data, self.model) 
     1554        self.smearer = smear_selection(data, self.model) 
    15401555        self.disable_smearer.SetValue(True) 
    15411556        if self.smearer == None: 
     
    15711586            self._set_save_flag(True) 
    15721587            self._set_preview_flag(True) 
     1588 
    15731589            self._set_smear(data) 
    15741590            # more disables for 2D 
    1575             if self.data.__class__.__name__ =="Data2D":    
     1591            if self.data.__class__.__name__ ==  "Data2D" or \ 
     1592                        self.enable2D: 
    15761593                self.slit_smearer.Disable() 
     1594                self.pinhole_smearer.Enable(True)  
    15771595                self.default_mask = copy.deepcopy(self.data.mask) 
    15781596            else: 
     
    16831701        npts2fit = 0 
    16841702        qmin,qmax = self.get_range() 
    1685         if self.data.__class__.__name__ =="Data2D":  
     1703        if self.data.__class__.__name__ == "Data2D" or \ 
     1704                        self.enable2D: 
    16861705            radius= numpy.sqrt( self.data.qx_data*self.data.qx_data +  
    16871706                                self.data.qy_data*self.data.qy_data ) 
     
    17191738            return self.param_toFit 
    17201739        else: 
    1721             raise ValueError,"missing parameter to fit"     
     1740            msg = "missing parameters to fit"   
     1741            wx.MessageBox(msg, 'warning') 
     1742            return False 
     1743            #raise ValueError,"missing parameters to fit"     
    17221744       
    17231745    def onsetValues(self, chisqr, p_name, out, cov): 
     
    20002022        ## set smearing value whether or not the data contain the smearing info 
    20012023        self._manager.set_smearer(smearer=self.current_smearer, 
     2024                                 enable2D=self.enable2D, 
    20022025                                 qmin=float(self.qmin_x), 
    20032026                                 qmax= float(self.qmax_x), 
     
    21342157            of the values entered for slit smear 
    21352158        """ 
    2136         if self.data.__class__.__name__ == "Data2D": 
     2159        if self.data.__class__.__name__ ==  "Data2D" or \ 
     2160                        self.enable2D: 
    21372161            return 
    21382162        temp_smearer = None 
     
    21722196        ## set smearing value whether or not the data contain the smearing info 
    21732197        self._manager.set_smearer(smearer=self.current_smearer,  
     2198                                 enable2D=self.enable2D, 
    21742199                                 qmin=float(self.qmin_x),  
    21752200                                 qmax= float(self.qmax_x), 
     
    22592284        self.Layout() 
    22602285        ## set smearing value whether or not the data contain the smearing info 
    2261         self._manager.set_smearer(uid=self.uid, smearer=temp_smearer, qmin= float(self.qmin_x), 
     2286        self._manager.set_smearer(uid=self.uid, smearer=temp_smearer, 
     2287                        enable2D=self.enable2D, 
     2288                        qmin= float(self.qmin_x), 
    22622289                        qmax= float(self.qmax_x), draw=True)  
    2263          
    2264         ##Calculate chi2 
    2265         #self.compute_chisqr(smearer= temp_smearer) 
    22662290         
    22672291        self.state.enable_smearer=  self.enable_smearer.GetValue() 
     
    23002324                for item in self.parameters: 
    23012325                    ## for data2D select all to fit 
    2302                     if self.data.__class__.__name__=="Data2D": 
     2326                    if self.data.__class__.__name__==  "Data2D" or \ 
     2327                            self.enable2D: 
    23032328                        item[0].SetValue(True) 
    23042329                        self.param_toFit.append(item ) 
     
    23102335                #if len(self.fittable_param)>0: 
    23112336                for item in self.fittable_param: 
    2312                     if self.data.__class__.__name__=="Data2D": 
     2337                    if self.data.__class__.__name__== "Data2D" or \ 
     2338                            self.enable2D: 
    23132339                        item[0].SetValue(True) 
    23142340                        self.param_toFit.append(item ) 
     
    23532379        for item in self.parameters: 
    23542380            #Skip t ifhe angle parameters if 1D data 
    2355             if self.data.__class__.__name__ !="Data2D": 
     2381            if self.data.__class__.__name__ != "Data2D" and\ 
     2382                        not self.enable2D: 
    23562383                if item in self.orientation_params: 
    23572384                    continue 
     
    23692396        for item in self.fittable_param: 
    23702397            #Skip t ifhe angle parameters if 1D data 
    2371             if self.data.__class__.__name__ !="Data2D": 
     2398            if self.data.__class__.__name__ !=  "Data2D" and\ 
     2399                        not self.enable2D: 
    23722400                if item in self.orientation_params: 
    23732401                    continue 
     
    23812409 
    23822410        #Calculate num. of angle parameters  
    2383         if self.data.__class__.__name__ =="Data2D":   
     2411        if self.data.__class__.__name__ ==  "Data2D" or \ 
     2412                       self.enable2D: 
    23842413            len_orient_para = 0 
    23852414        else: 
     
    26342663                sizer.Add(orient_angle,(iy, ix),(1,1),  
    26352664                          wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)  
    2636                 if not self.data.__class__.__name__ =="Data2D": 
     2665                if not self.data.__class__.__name__ == "Data2D" and \ 
     2666                        not self.enable2D: 
    26372667                    orient_angle.Hide() 
    26382668                else: 
     
    26552685                    cb.SetToolTipString("Check mark to fit") 
    26562686                    wx.EVT_CHECKBOX(self, cb.GetId(), self.select_param) 
    2657                     if self.data.__class__.__name__ =="Data2D": 
     2687                    if self.data.__class__.__name__ == "Data2D" or \ 
     2688                            self.enable2D: 
    26582689                        cb.Show(True) 
    26592690                    else: 
     
    26692700                    ctl1.SetToolTipString("Hit 'Enter' after typing.") 
    26702701                    ctl1.SetValue(format_number(value, True)) 
    2671                     if self.data.__class__.__name__ =="Data2D": 
     2702                    if self.data.__class__.__name__ == "Data2D" or \ 
     2703                            self.enable2D: 
    26722704                        ctl1.Show(True) 
    26732705                    else: 
     
    27052737                    ctl4.Hide() 
    27062738                     
    2707                     if self.data.__class__.__name__ =="Data2D":                       
     2739                    if self.data.__class__.__name__ == "Data2D" or \ 
     2740                            self.enable2D:                      
    27082741                        ctl3.Show(True) 
    27092742                        ctl4.Show(True) 
     
    27172750                    else: 
    27182751                        units = wx.StaticText(self, -1, "", style=wx.ALIGN_LEFT) 
    2719                     if self.data.__class__.__name__ =="Data2D": 
     2752                    if self.data.__class__.__name__ == "Data2D" or \ 
     2753                            self.enable2D: 
    27202754                        units.Show(True) 
    27212755                     
     
    27892823            self.model_view.SetLabel("Switch to 1D") 
    27902824            self.enable2D = True 
     2825               
    27912826        else: 
    27922827            self.model_view.SetLabel("Switch to 2D") 
    27932828            self.enable2D = False 
     2829 
     2830        self.set_model_param_sizer(self.model) 
     2831        self._set_sizer_dispersion()   
    27942832        self._draw_model() 
    2795  
     2833         
     2834         
     2835        self.state.enable2D =  copy.deepcopy(self.enable2D) 
     2836         
    27962837class BGTextCtrl(wx.TextCtrl): 
    27972838    """ 
  • sansview/perspectives/fitting/fitproblem.py

    re88ebfd rba1f0b2  
    2929        self.qmax = None 
    3030         
     31        # 1D or 2D 
     32        self.enable2D = False 
     33         
    3134    def clone(self): 
    3235        """ 
     
    4851        obj.qmin = copy.deepcopy(self.qmin) 
    4952        obj.qmax = copy.deepcopy(self.qmax) 
     53        obj.enable2D = copy.deepcopy(self.enable2D) 
    5054        return obj 
    5155         
     
    112116        """ 
    113117        self.theory_data = copy.deepcopy(data) 
    114        
     118         
     119    def set_enable2D(self, enable2D): 
     120        """ 
     121        """ 
     122        self.enable2D = enable2D 
     123          
    115124    def get_theory_data(self): 
    116125        """ 
     
    191200        """ 
    192201        return self.fit_tab_caption 
     202     
     203    def get_enable2D(self): 
     204        """ 
     205        """ 
     206        return self.enable2D 
    193207    
    194     
  • sansview/perspectives/fitting/fitting.py

    rf932c02 rba1f0b2  
    486486                        panel. _on_fit_complete() 
    487487   
    488     def set_smearer(self, uid, smearer, qmin=None, qmax=None, draw=True): 
     488    def set_smearer(self, uid, smearer, qmin=None, qmax=None, draw=True,  
     489                    enable2D=False): 
    489490        """ 
    490491        Get a smear object and store it to a fit problem 
     
    497498            raise ValueError, msg 
    498499        self.page_finder[uid].set_smearer(smearer) 
     500        self.page_finder[uid].set_enable2D(enable2D) 
    499501        if draw: 
    500502            ## draw model 1D with smeared data 
     
    503505            if model is None: 
    504506                return 
     507            enable1D = True 
     508            enable2D = self.page_finder[uid].get_enable2D() 
     509            if enable2D: 
     510                enable1D = False 
     511 
    505512            ## if user has already selected a model to plot 
    506513            ## redraw the model with data smeared 
    507514            smear = self.page_finder[uid].get_smearer() 
    508515            self.draw_model(model=model, data=data, page_id=uid, smearer=smear, 
     516                enable1D=enable1D, enable2D=enable2D, 
    509517                qmin=qmin, qmax=qmax) 
    510518 
     
    533541        if data.__class__.__name__ == "Data1D" or not enable2D:     
    534542            ## draw model 1D with no loaded data 
    535              
    536543            self._draw_model1D(model=model,  
    537544                               data=data, 
     
    547554        else:      
    548555            ## draw model 2D with no initial data 
    549              self._draw_model2D(model=model, 
     556            self._draw_model2D(model=model, 
    550557                                page_id=page_id, 
    551558                                data=data, 
     
    595602                    page = self.fit_panel.get_page_by_id(page_id) 
    596603                    templist = page.get_param_list() 
     604                    # missing fit parameters 
     605                    #if not templist: 
     606                    #    return 
     607                    # have the list 
    597608                    for element in templist: 
    598609                        name = str(element[1]) 
     
    607618                    current_page_id = page_id 
    608619            except: 
    609                 raise 
    610                 #msg= "%s error: %s" % (engineType, sys.exc_value) 
    611                 #wx.PostEvent(self.parent, StatusEvent(status=msg, info="error", 
    612                 #                                      type="stop")) 
    613                 #return  
     620                #raise 
     621                msg= "%s error: %s" % (engineType, sys.exc_value) 
     622                wx.PostEvent(self.parent, StatusEvent(status=msg, info="error", 
     623                                                      type="stop")) 
     624                return  
    614625        ## If a thread is already started, stop it 
    615626        #if self.calc_fit!= None and self.calc_fit.isrunning(): 
     
    10831094        if model == None: 
    10841095            return 
    1085         
     1096 
    10861097        if self.page_finder[uid].get_model() is None: 
    10871098            model.name = "M" + str(self.index_model) 
     
    13921403            if (self.calc_2D is not None) and self.calc_2D.isrunning(): 
    13931404                self.calc_2D.stop() 
    1394  
    13951405            self.calc_2D = Calc2D(x=x, 
    13961406                                    y=y, 
Note: See TracChangeset for help on using the changeset viewer.