Ignore:
Timestamp:
Aug 26, 2011 9:40:32 AM (13 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:
aefc09f
Parents:
ecf26e1
Message:

add function to rename model in fitpage

File:
1 edited

Legend:

Unmodified
Added
Removed
  • fittingview/src/sans/perspectives/fitting/fitpage.py

    rbc0e08d r6ff97c5  
    1212from sans.guiframe.events import StatusEvent  
    1313from sans.guiframe.events import NewPlotEvent   
    14 from sans.guiframe.utils import format_number,check_float 
     14from sans.guiframe.dataFitting import check_data_validity 
     15from sans.guiframe.utils import format_number 
     16from sans.guiframe.utils import check_float 
    1517 
    1618(Chi2UpdateEvent, EVT_CHI2_UPDATE)   = wx.lib.newevent.NewEvent() 
     
    6062        self._set_paste_flag(False) 
    6163        self.btFit.SetFocus() 
     64        self.enable_fit_button() 
    6265        self.fill_data_combobox(data_list=self.data_list) 
    6366     
    64      
     67    def enable_fit_button(self): 
     68        """ 
     69        Enable fit button if data is valid and model is valid 
     70        """ 
     71        flag = check_data_validity(self.data) & (self.model is not None) 
     72        self.btFit.Enable(flag) 
     73         
    6574    def _fill_data_sizer(self): 
    6675        """ 
     
    98107        self.enable_datasource() 
    99108        if data_list: 
     109            #find the maximum range covering all data 
    100110            qmin, qmax, npts = self.compute_data_range(data_list[0]) 
    101111            self.qmin_data_set, self.qmax_data_set = qmin, qmax 
     
    105115                self.compute_data_set_range(data) 
    106116                self.dataSource.Append(str(data.name), clientData=data) 
    107                  
    108         print "fill_data_combox", self.qmin_data_set, self.qmax_data_set 
    109117        self.dataSource.SetSelection(0) 
    110118        self.on_select_data(event=None) 
     
    10131021        self.qmax_x = float(self.qmax.GetValue()) 
    10141022        self._manager._reset_schedule_problem(value=0, uid=self.uid) 
    1015         self._manager.schedule_for_fit(uid=self.uid,value=1, fitproblem=None)  
     1023        self._manager.schedule_for_fit(uid=self.uid,value=1)  
    10161024        self._manager.set_fit_range(uid=self.uid,qmin=self.qmin_x,  
    10171025                                   qmax=self.qmax_x) 
     
    10601068        self._on_fit_complete() 
    10611069          
     1070    def rename_model(self): 
     1071        """ 
     1072        find a short name for model 
     1073        """ 
     1074        if self.model is not None: 
     1075            self.model.name = "M" + str(self.index_model) 
     1076     
    10621077    def _on_select_model(self, event=None):  
    10631078        """ 
     
    10861101        self.state.structurecombobox = self.structurebox.GetCurrentSelection() 
    10871102        self.state.formfactorcombobox = self.formfactorbox.GetCurrentSelection() 
    1088        
     1103        self.enable_fit_button() 
    10891104        if self.model != None: 
     1105            self.rename_model() 
    10901106            self._set_copy_flag(True) 
    10911107            self._set_paste_flag(True) 
     
    11001116                self.onSmear(None) 
    11011117                temp_smear = None 
    1102                 if self.enable_smearer.GetValue(): 
     1118                if not self.disable_smearer.GetValue(): 
    11031119                    # Set the smearer environments 
    11041120                    temp_smear = self.smearer 
     
    11141130            evt = ModelEventbox(model=self.model,  
    11151131                                        smearer=temp_smear,  
     1132                             enable_smearer=not self.disable_smearer.GetValue(), 
    11161133                                        qmin=float(self.qmin_x), 
    11171134                                        uid=self.uid, 
     1135                                        caption=self.window_caption, 
    11181136                                     qmax=float(self.qmax_x))  
    11191137    
     
    11851203                        not self.enable2D: 
    11861204                    self._manager.set_smearer(smearer=temp_smearer,  
    1187                                               enable2D=self.enable2D, 
     1205                                              fid=self.data.id, 
    11881206                                              uid=self.uid, 
    11891207                                             qmin= float(self.qmin_x), 
    11901208                                            qmax= float(self.qmax_x), 
     1209                            enable_smearer=not self.disable_smearer.GetValue(), 
    11911210                                            draw=True)  
    11921211                if flag:    
     
    12481267        Check validity of value enter in the Q range field 
    12491268        """ 
    1250         #if self.check_invalid_panel(): 
    1251         #    return 
    1252         tcrtl= event.GetEventObject() 
     1269        tcrtl = event.GetEventObject() 
    12531270        #Clear msg if previously shown. 
    12541271        msg= "" 
     
    12821299            #Check if # of points for theory model are valid(>0). 
    12831300            # check for 2d 
    1284             if self.data is not None: 
    1285                 if self.data.__class__.__name__ == "Data2D" or \ 
    1286                         self.enable2D: 
    1287                     # set mask    
    1288                     radius= numpy.sqrt( self.data.qx_data*self.data.qx_data +  
    1289                                         self.data.qy_data*self.data.qy_data ) 
    1290                     index_data = ((self.qmin_x <= radius)& \ 
    1291                                     (radius<= self.qmax_x)) 
    1292                     index_data = (index_data)&(self.data.mask) 
    1293                     index_data = (index_data)&(numpy.isfinite(self.data.data)) 
    1294                     if len(index_data[index_data]) < 10: 
    1295                         msg = "Cannot Plot :No or too little npts in" 
    1296                         msg += " that data range!!!  " 
    1297                         wx.PostEvent(self.parent.parent,  
    1298                                      StatusEvent(status=msg)) 
    1299                         return 
    1300                     else: 
    1301                         self.data.mask = index_data 
    1302                         #self.Npts_fit.SetValue(str(len(self.data.mask))) 
    1303                         self.set_npts2fit()  
     1301            if self.data.__class__.__name__ == "Data2D" or \ 
     1302                    self.enable2D: 
     1303                # set mask    
     1304                radius= numpy.sqrt(self.data.qx_data*self.data.qx_data +  
     1305                                    self.data.qy_data*self.data.qy_data ) 
     1306                index_data = ((self.qmin_x <= radius)& \ 
     1307                                (radius<= self.qmax_x)) 
     1308                index_data = (index_data)&(self.data.mask) 
     1309                index_data = (index_data)&(numpy.isfinite(self.data.data)) 
     1310                if len(index_data[index_data]) < 10: 
     1311                    msg = "Cannot Plot :No or too little npts in" 
     1312                    msg += " that data range!!!  " 
     1313                    wx.PostEvent(self.parent.parent,  
     1314                                 StatusEvent(status=msg)) 
     1315                    return 
    13041316                else: 
    1305                     index_data = ((self.qmin_x <= self.data.x)& \ 
    1306                                   (self.data.x <= self.qmax_x)) 
    1307                     self.Npts_fit.SetValue(str(len(self.data.x[index_data]))) 
     1317                    self.data.mask = index_data 
     1318                    #self.Npts_fit.SetValue(str(len(self.data.mask))) 
     1319                    self.set_npts2fit()  
    13081320            else: 
    1309                 self.npts_x = self.Npts_total.GetValue() 
    1310                 self._save_plotting_range() 
    1311  
     1321                index_data = ((self.qmin_x <= self.data.x)& \ 
     1322                              (self.data.x <= self.qmax_x)) 
     1323                self.Npts_fit.SetValue(str(len(self.data.x[index_data]))) 
     1324             
     1325            self.npts_x = self.Npts_total.GetValue() 
     1326            self.create_default_data() 
     1327            self._save_plotting_range() 
    13121328        else: 
    13131329           tcrtl.SetBackgroundColour("pink") 
     
    13161332         
    13171333        self._draw_model() 
    1318         ##update chi2 
    1319         #self.compute_chisqr(smearer= temp_smearer) 
    1320         #self._undo.Enable(True) 
    13211334        self.save_current_state() 
    13221335        event = PageInfoEvent(page = self) 
     
    16731686                qmax = math.sqrt(x*x + y*y) 
    16741687                npts = len(data.data) 
    1675         print "compute single data range", qmin, qmax 
    16761688        return qmin, qmax, npts 
    16771689             
     
    16841696        group_id = None 
    16851697        flag = False 
     1698        if self.data is not None: 
     1699            group_id = self.data.group_id 
     1700            
    16861701        if self.data is None and data is not None: 
    1687             flag = True 
     1702                flag = True 
    16881703        if data is not None: 
    16891704            id = data.id 
    1690             group_id = data.group_id 
    16911705            if self.data is not None: 
    16921706                flag = (data.id != self.data.id) 
    16931707        self.data = data 
     1708        self.data.group_id = group_id 
    16941709        if self.data is None: 
    16951710            data_min = "" 
     
    17031718                self._set_bookmark_flag(True) 
    17041719                self._keep.Enable(True) 
     1720                 
    17051721            self._set_save_flag(True) 
    17061722            self._set_preview_flag(True) 
     
    17561772        self.state.qmin = self.qmin_x 
    17571773        self.state.qmax = self.qmax_x 
    1758          
     1774        self.enable_fit_button() 
    17591775        #update model plot with new data information 
    17601776        if flag: 
     
    17661782                self.enable2D = False 
    17671783                self.model_view.SetLabel("1D Mode") 
    1768                  
    17691784            self.model_view.Disable() 
    1770              
    17711785            #replace data plot on combo box selection 
    17721786            #by removing the previous selected data 
     
    17761790            wx.PostEvent(self._manager.parent, NewPlotEvent(plot=self.data,  
    17771791                                                title=str(self.data.title))) 
    1778             self._manager.store_data(uid=self.uid, data=data, 
    1779                                      data_list=self.data_list, 
     1792            self._manager.store_data(uid=self.uid, data_list=self.data_list, 
    17801793                                      caption=self.window_name) 
    17811794            self._draw_model() 
     
    21512164            get_pin_max.SetBackgroundColour("white") 
    21522165        ## set smearing value whether or not the data contain the smearing info 
     2166         
    21532167        self._manager.set_smearer(smearer=self.current_smearer, 
    2154                                  enable2D=self.enable2D, 
     2168                                fid=self.data.id, 
    21552169                                 qmin=float(self.qmin_x), 
    21562170                                 qmax= float(self.qmax_x), 
     2171                                 enable_smearer=not self.disable_smearer.GetValue(), 
    21572172                                 uid=self.uid) 
    21582173        return msg 
     
    23262341        ## set smearing value whether or not the data contain the smearing info 
    23272342        self._manager.set_smearer(smearer=self.current_smearer,  
    2328                                  enable2D=self.enable2D, 
     2343                                 fid=self.data.id, 
    23292344                                 qmin=float(self.qmin_x),  
    23302345                                 qmax= float(self.qmax_x), 
     2346                        enable_smearer=not self.disable_smearer.GetValue(), 
    23312347                                 uid=self.uid)  
    23322348        return msg 
     
    24152431        ## set smearing value whether or not the data contain the smearing info 
    24162432        self._manager.set_smearer(uid=self.uid, smearer=temp_smearer, 
    2417                         enable2D=self.enable2D, 
    2418                         qmin= float(self.qmin_x), 
    2419                         qmax= float(self.qmax_x), draw=True)  
     2433                                  fid=self.data.id, 
     2434                        qmin=float(self.qmin_x), 
     2435                        qmax=float(self.qmax_x), 
     2436                        enable_smearer=not self.disable_smearer.GetValue(), 
     2437                         draw=True)  
    24202438         
    24212439        self.state.enable_smearer=  self.enable_smearer.GetValue() 
     
    24262444    def on_complete_chisqr(self, event):   
    24272445        """ 
    2428         print result chisqr  
    2429          
     2446        Display result chisqr on the panel 
    24302447        :event: activated by fitting/ complete after draw 
    2431          
    24322448        """ 
    24332449        try: 
     
    24392455                output = event.output 
    24402456            self.tcChi.SetValue(str(format_number(output, True))) 
    2441  
    24422457            self.state.tcChi = self.tcChi.GetValue() 
    24432458        except: 
     
    29582973            self.model_view.SetLabel("1D Mode") 
    29592974            self.enable2D = False 
    2960  
     2975        self.create_default_data() 
    29612976        self.set_model_param_sizer(self.model) 
    29622977        self._set_sizer_dispersion()   
Note: See TracChangeset for help on using the changeset viewer.