Changeset fa09d62 in sasview for src/sas/perspectives


Ignore:
Timestamp:
Feb 18, 2015 10:01:28 AM (10 years ago)
Author:
krzywon
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:
e1251ef
Parents:
3fd3d5a4
Message:

Modified the batch fit panel to give a warning/message saying the file
selecctor is for selecting initial parameters rather than viewing fits.
This is a fix to ticket #234.

Location:
src/sas/perspectives/fitting
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/sas/perspectives/fitting/batchfitpage.py

    r79492222 rfa09d62  
    1717from sas.models.qsmearing import smear_selection 
    1818from sas.perspectives.fitting.fitpage import FitPage 
     19from sas.perspectives.fitting.fitpage import check_data_validity 
    1920 
    2021class BatchFitPage(FitPage): 
     
    3031        """ 
    3132        FitPage.__init__(self, parent, color=color) 
    32         self.window_name = "BatchFit" 
    33         self.window_caption  = "BatchFit" 
    34         self._set_save_flag(False) 
    35         self._set_bookmark_flag(False) 
    36          
    37     def _fill_range_sizer(self): 
     33         
     34        ## draw sizer 
     35         
     36    def _fill_data_sizer(self): 
    3837        """ 
    39         Fill the sizer containing the plotting range 
    40         add  access to npts 
     38        fill sizer 0 with data info 
    4139        """ 
    42         is_2Ddata = False 
    43          
    44         # Check if data is 2D 
    45         if self.data.__class__.__name__ ==  "Data2D" or \ 
    46                         self.enable2D: 
    47             is_2Ddata = True 
    48              
    49         title = "Fitting"      
    50         self._get_smear_info() 
    51          
    52         #Sizers 
    53         box_description_range = wx.StaticBox(self, -1, str(title)) 
    54         boxsizer_range = wx.StaticBoxSizer(box_description_range, wx.VERTICAL)       
    55         self.sizer_set_smearer = wx.BoxSizer(wx.VERTICAL) 
    56         #sizer_smearer = wx.BoxSizer(wx.HORIZONTAL) 
    57         self.sizer_new_smear = wx.BoxSizer(wx.HORIZONTAL) 
    58         self.sizer_set_masking = wx.BoxSizer(wx.HORIZONTAL) 
    59         sizer_chi2 = wx.BoxSizer(wx.VERTICAL) 
    60  
    61         sizer_fit = wx.GridSizer(2, 4, 2, 6) 
    62         #Fit button 
    63         self.btFit = wx.Button(self, wx.NewId(), 'Fit', size=(88, 25)) 
    64         self.default_bt_colour =  self.btFit.GetDefaultAttributes() 
    65         self.btFit.Bind(wx.EVT_BUTTON, self._onFit, id= self.btFit.GetId()) 
    66         self.btFit.SetToolTipString("Start fitting.") 
    67  
    68         # Update and Draw button 
    69         self.draw_button = wx.Button(self, wx.NewId(), 'Compute', size=(88, 24)) 
    70         self.draw_button.Bind(wx.EVT_BUTTON, \ 
    71                               self._onDraw,id=self.draw_button.GetId()) 
    72         self.draw_button.SetToolTipString("Compute and Draw.")   
    73         sizer_fit.Add(self.draw_button, 0, 0) 
    74         sizer_fit.Add(self.btFit, 0, 0)  
    75         sizer_chi2.Add((-1, 5)) 
    76         # get smear_selection 
    77         self.current_smearer = smear_selection( self.data, self.model ) 
    78         boxsizer_range.Add(self.sizer_set_masking) 
    79          #2D data? default 
    80         is_2Ddata = False 
    81          
    82         #check if it is 2D data 
    83         if self.data.__class__.__name__ ==  "Data2D" or \ 
    84                         self.enable2D: 
    85             is_2Ddata = True 
    86              
    87         self.sizer5.Clear(True) 
    88       
    89         self.qmin  = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),  
    90                                           style=wx.TE_PROCESS_ENTER,  
    91                                     text_enter_callback = self._onQrangeEnter) 
    92         self.qmin.SetValue(str(self.qmin_x)) 
    93         self.qmin.SetToolTipString("Minimun value of Q in linear scale.") 
    94       
    95         self.qmax  = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),  
    96                                           style=wx.TE_PROCESS_ENTER,  
    97                                         text_enter_callback=self._onQrangeEnter) 
    98         self.qmax.SetValue(str(self.qmax_x)) 
    99         self.qmax.SetToolTipString("Maximum value of Q in linear scale.") 
    100          
    101         id = wx.NewId() 
    102         self.reset_qrange =wx.Button(self, id, 'Reset', size=(77, 20)) 
    103        
    104         self.reset_qrange.Bind(wx.EVT_BUTTON, self.on_reset_clicked, id=id) 
    105         self.reset_qrange.SetToolTipString(\ 
    106                                     "Reset Q range to the default values") 
    107       
    108         sizer_horizontal = wx.BoxSizer(wx.HORIZONTAL) 
    109         sizer = wx.GridSizer(2, 4, 2, 6) 
    110  
    111         self.btEditMask = wx.Button(self, wx.NewId(),'Editor', size=(88, 23)) 
    112         self.btEditMask.Bind(wx.EVT_BUTTON,  
    113                              self._onMask,id=self.btEditMask.GetId()) 
    114         self.btEditMask.SetToolTipString("Edit Mask.") 
    115         self.EditMask_title = wx.StaticText(self, -1, ' Masking(2D)') 
    116  
    117         sizer.Add(wx.StaticText(self, -1, 'Q range'))      
    118         sizer.Add(wx.StaticText(self, -1, ' Min[1/A]')) 
    119         sizer.Add(wx.StaticText(self, -1, ' Max[1/A]')) 
    120         sizer.Add(self.EditMask_title) 
    121   
    122         sizer.Add(self.reset_qrange)    
    123         sizer.Add(self.qmin) 
    124         sizer.Add(self.qmax) 
    125  
    126         sizer.Add(self.btEditMask) 
    127         boxsizer_range.Add(sizer_chi2)  
    128         boxsizer_range.Add((10, 10)) 
    129         boxsizer_range.Add(sizer) 
    130          
    131         boxsizer_range.Add((10, 15)) 
    132         boxsizer_range.Add(sizer_fit) 
    133         if is_2Ddata: 
    134             self.btEditMask.Enable()   
    135             self.EditMask_title.Enable()  
     40        self.data_box_description = wx.StaticBox(self, -1, 'I(q) Data Source') 
     41        if check_data_validity(self.data): 
     42            dname_color = wx.BLUE 
    13643        else: 
    137             self.btEditMask.Disable()   
    138             self.EditMask_title.Disable() 
    139  
    140         ## save state 
    141         #self.save_current_state() 
    142  
    143         self.sizer5.Add(boxsizer_range, 0, wx.EXPAND | wx.ALL, 10) 
    144         self.sizer5.Layout() 
    145         
    146     def _on_select_model(self, event=None):  
    147         """ 
    148         call back for model selection 
    149         """   
    150          
    151         self.Show(False)     
    152         self._on_select_model_helper()  
    153         self.set_model_param_sizer(self.model)                    
    154         if self.model is None: 
    155             self._set_bookmark_flag(False) 
    156             self._keep.Enable(False) 
    157             self._set_save_flag(False) 
    158         self.enable_disp.SetValue(False) 
    159         self.disable_disp.SetValue(True) 
    160         try: 
    161             self.set_dispers_sizer() 
    162         except: 
    163             pass 
    164         self.state.structurecombobox = self.structurebox.GetCurrentSelection() 
    165         self.state.formfactorcombobox = self.formfactorbox.GetCurrentSelection() 
    166        
    167         if self.model != None: 
    168             self._set_copy_flag(True) 
    169             self._set_paste_flag(True) 
    170             if self.data != None: 
    171                 self._set_bookmark_flag(False) 
    172                 self._keep.Enable(False) 
    173                  
    174             temp_smear = None 
    175             ## event to post model to fit to fitting plugins 
    176             (ModelEventbox, _) = wx.lib.newevent.NewEvent() 
    177           
    178             ## set smearing value whether or not  
    179             #    the data contain the smearing info 
    180             evt = ModelEventbox(model=self.model,  
    181                                         smearer=temp_smear,  
    182                                         qmin=float(self.qmin_x), 
    183                                         uid=self.uid, 
    184                                      qmax=float(self.qmax_x))  
    185     
    186             self._manager._on_model_panel(evt=evt) 
    187             self.mbox_description.SetLabel("Model [%s]" % str(self.model.name)) 
    188             self.state.model = self.model.clone() 
    189             self.state.model.name = self.model.name 
    190  
    191              
    192         if event != None: 
    193             ## post state to fit panel 
    194             new_event = PageInfoEvent(page = self) 
    195             wx.PostEvent(self.parent, new_event)  
    196             #update list of plugins if new plugin is available 
    197             if self.plugin_rbutton.GetValue(): 
    198                 temp = self.parent.update_model_list() 
    199                 if temp: 
    200                     self.model_list_box = temp 
    201                     current_val = self.formfactorbox.GetValue() 
    202                     pos = self.formfactorbox.GetSelection() 
    203                     self._show_combox_helper() 
    204                     self.formfactorbox.SetSelection(pos) 
    205                     self.formfactorbox.SetValue(current_val) 
    206             self._onDraw(event=None) 
    207         else: 
    208             self._draw_model() 
    209         self.SetupScrolling() 
    210         self.Show(True)    
    211          
    212     def _update_paramv_on_fit(self): 
    213         """ 
    214         make sure that update param values just before the fitting 
    215         """ 
    216         #flag for qmin qmax check values 
    217         flag = True 
    218         self.fitrange = True 
    219         is_modified = False 
    220  
    221         if self.model != None:            
    222             ##Check the values 
    223             self._check_value_enter( self.fittable_param, is_modified) 
    224             self._check_value_enter( self.fixed_param, is_modified) 
    225             self._check_value_enter( self.parameters, is_modified) 
    226  
    227             # If qmin and qmax have been modified, update qmin and qmax and  
    228              # Here we should check whether the boundaries have been modified. 
    229             # If qmin and qmax have been modified, update qmin and qmax and  
    230             # set the is_modified flag to True 
    231             self.fitrange = self._validate_qrange(self.qmin, self.qmax) 
    232             if self.fitrange: 
    233                 tempmin = float(self.qmin.GetValue()) 
    234                 if tempmin != self.qmin_x: 
    235                     self.qmin_x = tempmin 
    236                 tempmax = float(self.qmax.GetValue()) 
    237                 if tempmax != self.qmax_x: 
    238                     self.qmax_x = tempmax 
    239                 if tempmax == tempmin: 
    240                     flag = False     
    241                 #temp_smearer = None 
    242                 if self._is_2D(): 
    243                     # only 2D case set mask   
    244                     flag = self._validate_Npts() 
    245                     if not flag: 
    246                         return flag 
    247             else: flag = False 
    248         else:  
    249             flag = False 
    250  
    251         #For invalid q range, disable the mask editor and fit button, vs.     
    252         if not self.fitrange: 
    253             #self.btFit.Disable() 
    254             if self._is_2D(): 
    255                 self.btEditMask.Disable() 
    256         else: 
    257             #self.btFit.Enable(True) 
    258             if self._is_2D() and  self.data != None: 
    259                 self.btEditMask.Enable(True) 
    260  
    261         if not flag: 
    262             msg = "Cannot Plot or Fit :Must select a " 
    263             msg += " model or Fitting range is not valid!!!  " 
    264             wx.PostEvent(self.parent.parent, StatusEvent(status=msg)) 
    265          
    266         self.save_current_state() 
    267     
    268         return flag   
    269     def save_current_state(self): 
    270         """ 
    271         Currently no save option implemented for batch page 
    272         """ 
    273         pass  
    274     def save_current_state_fit(self): 
    275         """ 
    276         Currently no save option implemented for batch page 
    277         """ 
    278         pass 
    279     def set_data(self, data): 
    280         """ 
    281         reset the current data  
    282         """ 
    283         #id = None 
    284         group_id = None 
    285         flag = False 
    286         if self.data is None and data is not None: 
    287             flag = True 
    288         if data is not None: 
    289             #id = data.id 
    290             group_id = data.group_id 
    291             if self.data is not None: 
    292                 flag = (data.id != self.data.id) 
    293         self.data = data 
    294         if self.data is None: 
    295             data_min = "" 
    296             data_max = "" 
    297             data_name = "" 
    298             self._set_bookmark_flag(False) 
    299             self._keep.Enable(False) 
    300             self._set_save_flag(False) 
    301         else: 
    302             if self.model != None: 
    303                 self._set_bookmark_flag(False) 
    304                 self._keep.Enable(False) 
    305             self._set_save_flag(False) 
    306             self._set_preview_flag(True) 
    307    
    308             self.formfactorbox.Enable() 
    309             self.structurebox.Enable() 
    310             data_name = self.data.name 
    311             #set maximum range for x in linear scale 
    312             if not hasattr(self.data,"data"): #Display only for 1D data fit 
    313                 # Minimum value of data    
    314                 data_min = min(self.data.x) 
    315                 # Maximum value of data   
    316                 data_max = max(self.data.x) 
    317                 self.btEditMask.Disable()   
    318                 self.EditMask_title.Disable() 
    319             else: 
    320                  
    321                 ## Minimum value of data  
    322                 data_min = 0 
    323                 x = max(math.fabs(self.data.xmin), math.fabs(self.data.xmax))  
    324                 y = max(math.fabs(self.data.ymin), math.fabs(self.data.ymax)) 
    325                 ## Maximum value of data   
    326                 data_max = math.sqrt(x*x + y*y) 
    327                 self.btEditMask.Enable()   
    328                 self.EditMask_title.Enable()  
    329  
    330         self.dataSource.SetValue(data_name) 
    331         self.qmin_x = data_min 
    332         self.qmax_x = data_max 
    333         #self.minimum_q.SetValue(str(data_min)) 
    334         #self.maximum_q.SetValue(str(data_max)) 
    335         self.qmin.SetValue(str(data_min)) 
    336         self.qmax.SetValue(str(data_max)) 
    337         self.qmin.SetBackgroundColour("white") 
    338         self.qmax.SetBackgroundColour("white") 
    339         self.state.data = data 
    340         self.state.qmin = self.qmin_x 
    341         self.state.qmax = self.qmax_x 
    342          
    343         #update model plot with new data information 
    344         if flag: 
    345             #set model view button 
    346             if self.data.__class__.__name__ == "Data2D": 
    347                 self.enable2D = True 
    348                 self.model_view.SetLabel("2D Mode") 
    349             else: 
    350                 self.enable2D = False 
    351                 self.model_view.SetLabel("1D Mode") 
    352                  
    353             self.model_view.Disable() 
    354              
    355             wx.PostEvent(self._manager.parent,  
    356                              NewPlotEvent(group_id=group_id, 
    357                                                action="delete")) 
    358             #plot the current selected data 
    359             wx.PostEvent(self._manager.parent, NewPlotEvent(plot=self.data,  
    360                                                     title=str(self.data.title))) 
    361             self._manager.store_data(uid=self.uid, data=data, 
    362                                      data_list=self.data_list, 
    363                                       caption=self.window_name) 
    364             self._draw_model() 
     44            dname_color = wx.RED 
     45        self.data_box_description.SetForegroundColour(dname_color) 
     46        boxsizer1 = wx.StaticBoxSizer(self.data_box_description, wx.VERTICAL) 
     47        #---------------------------------------------------------- 
     48        sizer_data = wx.BoxSizer(wx.VERTICAL) 
     49        text1 = wx.StaticText(self, -1, ' - Choose a file to set initial fit parameters -') 
     50        text1.SetForegroundColour(wx.RED) 
     51        sizer_data.Add(text1) 
     52        text2 = wx.StaticText(self, -1, ' - This panel is not designed to view individual fits. - ') 
     53        text2.SetForegroundColour(wx.RED) 
     54        sizer_data.Add(text2) 
     55         
     56        combo = wx.BoxSizer(wx.HORIZONTAL) 
     57        self.dataSource = wx.ComboBox(self, -1, style=wx.CB_READONLY) 
     58        wx.EVT_COMBOBOX(self.dataSource, -1, self.on_select_data) 
     59        self.dataSource.SetMinSize((_DATA_BOX_WIDTH, -1)) 
     60         
     61        combo.Add(wx.StaticText(self, -1, 'Name : ')) 
     62        combo.Add((0,5)) 
     63        combo.Add(self.dataSource) 
     64         
     65        sizer_data.Add(combo, 0, wx.ALL, 10) 
     66        boxsizer1.Add(sizer_data, 0, wx.ALL, 0) 
     67        self.sizer0.Add(boxsizer1, 0, wx.EXPAND | wx.ALL, 10) 
     68        self.sizer0.Layout() 
     69 
     70#    COMMENTED OUT TO USE METHODS INHERITED FROM fitpage.py 
     71         
     72#     def _fill_range_sizer(self): 
     73#         """ 
     74#         Fill the sizer containing the plotting range 
     75#         add  access to npts 
     76#         """ 
     77#         is_2Ddata = False 
     78#          
     79#         # Check if data is 2D 
     80#         if self.data.__class__.__name__ ==  "Data2D" or \ 
     81#                         self.enable2D: 
     82#             is_2Ddata = True 
     83#              
     84#         title = "Fitting"      
     85#         self._get_smear_info() 
     86#          
     87#         #Sizers 
     88#         box_description_range = wx.StaticBox(self, -1, str(title)) 
     89#         boxsizer_range = wx.StaticBoxSizer(box_description_range, wx.VERTICAL)       
     90#         self.sizer_set_smearer = wx.BoxSizer(wx.VERTICAL) 
     91#         #sizer_smearer = wx.BoxSizer(wx.HORIZONTAL) 
     92#         self.sizer_new_smear = wx.BoxSizer(wx.HORIZONTAL) 
     93#         self.sizer_set_masking = wx.BoxSizer(wx.HORIZONTAL) 
     94#         sizer_chi2 = wx.BoxSizer(wx.VERTICAL) 
     95#  
     96#         sizer_fit = wx.GridSizer(2, 4, 2, 6) 
     97#         #Fit button 
     98#         self.btFit = wx.Button(self, wx.NewId(), 'Fit', size=(88, 25)) 
     99#         self.default_bt_colour =  self.btFit.GetDefaultAttributes() 
     100#         self.btFit.Bind(wx.EVT_BUTTON, self._onFit, id= self.btFit.GetId()) 
     101#         self.btFit.SetToolTipString("Start fitting.") 
     102#  
     103#         # Update and Draw button 
     104#         self.draw_button = wx.Button(self, wx.NewId(), 'Compute', size=(88, 24)) 
     105#         self.draw_button.Bind(wx.EVT_BUTTON, \ 
     106#                               self._onDraw,id=self.draw_button.GetId()) 
     107#         self.draw_button.SetToolTipString("Compute and Draw.")   
     108#         sizer_fit.Add(self.draw_button, 0, 0) 
     109#         sizer_fit.Add(self.btFit, 0, 0)  
     110#         sizer_chi2.Add((-1, 5)) 
     111#         # get smear_selection 
     112#         self.current_smearer = smear_selection( self.data, self.model ) 
     113#         boxsizer_range.Add(self.sizer_set_masking) 
     114#          #2D data? default 
     115#         is_2Ddata = False 
     116#          
     117#         #check if it is 2D data 
     118#         if self.data.__class__.__name__ ==  "Data2D" or \ 
     119#                         self.enable2D: 
     120#             is_2Ddata = True 
     121#              
     122#         self.sizer5.Clear(True) 
     123#       
     124#         self.qmin  = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),  
     125#                                           style=wx.TE_PROCESS_ENTER,  
     126#                                     text_enter_callback = self._onQrangeEnter) 
     127#         self.qmin.SetValue(str(self.qmin_x)) 
     128#         self.qmin.SetToolTipString("Minimun value of Q in linear scale.") 
     129#       
     130#         self.qmax  = self.ModelTextCtrl(self, -1, size=(_BOX_WIDTH, 20),  
     131#                                           style=wx.TE_PROCESS_ENTER,  
     132#                                         text_enter_callback=self._onQrangeEnter) 
     133#         self.qmax.SetValue(str(self.qmax_x)) 
     134#         self.qmax.SetToolTipString("Maximum value of Q in linear scale.") 
     135#          
     136#         id = wx.NewId() 
     137#         self.reset_qrange =wx.Button(self, id, 'Reset', size=(77, 20)) 
     138#        
     139#         self.reset_qrange.Bind(wx.EVT_BUTTON, self.on_reset_clicked, id=id) 
     140#         self.reset_qrange.SetToolTipString(\ 
     141#                                     "Reset Q range to the default values") 
     142#       
     143#         sizer_horizontal = wx.BoxSizer(wx.HORIZONTAL) 
     144#         sizer = wx.GridSizer(2, 4, 2, 6) 
     145#  
     146#         self.btEditMask = wx.Button(self, wx.NewId(),'Editor', size=(88, 23)) 
     147#         self.btEditMask.Bind(wx.EVT_BUTTON,  
     148#                              self._onMask,id=self.btEditMask.GetId()) 
     149#         self.btEditMask.SetToolTipString("Edit Mask.") 
     150#         self.EditMask_title = wx.StaticText(self, -1, ' Masking(2D)') 
     151#  
     152#         sizer.Add(wx.StaticText(self, -1, 'Q range'))      
     153#         sizer.Add(wx.StaticText(self, -1, ' Min[1/A]')) 
     154#         sizer.Add(wx.StaticText(self, -1, ' Max[1/A]')) 
     155#         sizer.Add(self.EditMask_title) 
     156 
     157#         sizer.Add(self.reset_qrange)    
     158#         sizer.Add(self.qmin) 
     159#         sizer.Add(self.qmax) 
     160#  
     161#         sizer.Add(self.btEditMask) 
     162#         boxsizer_range.Add(sizer_chi2)  
     163#         boxsizer_range.Add((10, 10)) 
     164#         boxsizer_range.Add(sizer) 
     165#          
     166#         boxsizer_range.Add((10, 15)) 
     167#         boxsizer_range.Add(sizer_fit) 
     168#         if is_2Ddata: 
     169#             self.btEditMask.Enable()   
     170#             self.EditMask_title.Enable()  
     171#         else: 
     172#             self.btEditMask.Disable()   
     173#             self.EditMask_title.Disable() 
     174#  
     175#         ## save state 
     176#         #self.save_current_state() 
     177#  
     178#         self.sizer5.Add(boxsizer_range, 0, wx.EXPAND | wx.ALL, 10) 
     179#         self.sizer5.Layout() 
     180#         
     181#     def _on_select_model(self, event=None):  
     182#         """ 
     183#         call back for model selection 
     184#         """   
     185#          
     186#         self.Show(False)     
     187#         self._on_select_model_helper()  
     188#         self.set_model_param_sizer(self.model)                    
     189#         if self.model is None: 
     190#             self._set_bookmark_flag(False) 
     191#             self._keep.Enable(False) 
     192#             self._set_save_flag(False) 
     193#         self.enable_disp.SetValue(False) 
     194#         self.disable_disp.SetValue(True) 
     195#         try: 
     196#             self.set_dispers_sizer() 
     197#         except: 
     198#             pass 
     199#         self.state.structurecombobox = self.structurebox.GetCurrentSelection() 
     200#         self.state.formfactorcombobox = self.formfactorbox.GetCurrentSelection() 
     201#        
     202#         if self.model != None: 
     203#             self._set_copy_flag(True) 
     204#             self._set_paste_flag(True) 
     205#             if self.data != None: 
     206#                 self._set_bookmark_flag(False) 
     207#                 self._keep.Enable(False) 
     208#                  
     209#             temp_smear = None 
     210#             ## event to post model to fit to fitting plugins 
     211#             (ModelEventbox, _) = wx.lib.newevent.NewEvent() 
     212#           
     213#             ## set smearing value whether or not  
     214#             #    the data contain the smearing info 
     215#             evt = ModelEventbox(model=self.model,  
     216#                                         smearer=temp_smear,  
     217#                                         qmin=float(self.qmin_x), 
     218#                                         uid=self.uid, 
     219#                                      qmax=float(self.qmax_x))  
     220#     
     221#             self._manager._on_model_panel(evt=evt) 
     222#             self.mbox_description.SetLabel("Model [%s]" % str(self.model.name)) 
     223#             self.state.model = self.model.clone() 
     224#             self.state.model.name = self.model.name 
     225#  
     226#              
     227#         if event != None: 
     228#             ## post state to fit panel 
     229#             new_event = PageInfoEvent(page = self) 
     230#             wx.PostEvent(self.parent, new_event)  
     231#             #update list of plugins if new plugin is available 
     232#             if self.plugin_rbutton.GetValue(): 
     233#                 temp = self.parent.update_model_list() 
     234#                 if temp: 
     235#                     self.model_list_box = temp 
     236#                     current_val = self.formfactorbox.GetValue() 
     237#                     pos = self.formfactorbox.GetSelection() 
     238#                     self._show_combox_helper() 
     239#                     self.formfactorbox.SetSelection(pos) 
     240#                     self.formfactorbox.SetValue(current_val) 
     241#             self._onDraw(event=None) 
     242#         else: 
     243#             self._draw_model() 
     244#         self.SetupScrolling() 
     245#         self.Show(True)    
     246#          
     247#     def _update_paramv_on_fit(self): 
     248#         """ 
     249#         make sure that update param values just before the fitting 
     250#         """ 
     251#         #flag for qmin qmax check values 
     252#         flag = True 
     253#         self.fitrange = True 
     254#         is_modified = False 
     255#  
     256#         if self.model != None:            
     257#             ##Check the values 
     258#             self._check_value_enter( self.fittable_param, is_modified) 
     259#             self._check_value_enter( self.fixed_param, is_modified) 
     260#             self._check_value_enter( self.parameters, is_modified) 
     261#  
     262#             # If qmin and qmax have been modified, update qmin and qmax and  
     263#              # Here we should check whether the boundaries have been modified. 
     264#             # If qmin and qmax have been modified, update qmin and qmax and  
     265#             # set the is_modified flag to True 
     266#             self.fitrange = self._validate_qrange(self.qmin, self.qmax) 
     267#             if self.fitrange: 
     268#                 tempmin = float(self.qmin.GetValue()) 
     269#                 if tempmin != self.qmin_x: 
     270#                     self.qmin_x = tempmin 
     271#                 tempmax = float(self.qmax.GetValue()) 
     272#                 if tempmax != self.qmax_x: 
     273#                     self.qmax_x = tempmax 
     274#                 if tempmax == tempmin: 
     275#                     flag = False     
     276#                 #temp_smearer = None 
     277#                 if self._is_2D(): 
     278#                     # only 2D case set mask   
     279#                     flag = self._validate_Npts() 
     280#                     if not flag: 
     281#                         return flag 
     282#             else: flag = False 
     283#         else:  
     284#             flag = False 
     285#  
     286#         #For invalid q range, disable the mask editor and fit button, vs.     
     287#         if not self.fitrange: 
     288#             #self.btFit.Disable() 
     289#             if self._is_2D(): 
     290#                 self.btEditMask.Disable() 
     291#         else: 
     292#             #self.btFit.Enable(True) 
     293#             if self._is_2D() and  self.data != None: 
     294#                 self.btEditMask.Enable(True) 
     295#  
     296#         if not flag: 
     297#             msg = "Cannot Plot or Fit :Must select a " 
     298#             msg += " model or Fitting range is not valid!!!  " 
     299#             wx.PostEvent(self.parent.parent, StatusEvent(status=msg)) 
     300#          
     301#         self.save_current_state() 
     302#     
     303#         return flag   
     304#     def save_current_state(self): 
     305#         """ 
     306#         Currently no save option implemented for batch page 
     307#         """ 
     308#         pass  
     309#     def save_current_state_fit(self): 
     310#         """ 
     311#         Currently no save option implemented for batch page 
     312#         """ 
     313#         pass 
     314#     def set_data(self, data): 
     315#         """ 
     316#         reset the current data  
     317#         """ 
     318#         #id = None 
     319#         group_id = None 
     320#         flag = False 
     321#         if self.data is None and data is not None: 
     322#             flag = True 
     323#         if data is not None: 
     324#             #id = data.id 
     325#             group_id = data.group_id 
     326#             if self.data is not None: 
     327#                 flag = (data.id != self.data.id) 
     328#         self.data = data 
     329#         if self.data is None: 
     330#             data_min = "" 
     331#             data_max = "" 
     332#             data_name = "" 
     333#             self._set_bookmark_flag(False) 
     334#             self._keep.Enable(False) 
     335#             self._set_save_flag(False) 
     336#         else: 
     337#             if self.model != None: 
     338#                 self._set_bookmark_flag(False) 
     339#                 self._keep.Enable(False) 
     340#             self._set_save_flag(False) 
     341#             self._set_preview_flag(True) 
     342#    
     343#             self.formfactorbox.Enable() 
     344#             self.structurebox.Enable() 
     345#             data_name = self.data.name 
     346#             #set maximum range for x in linear scale 
     347#             if not hasattr(self.data,"data"): #Display only for 1D data fit 
     348#                 # Minimum value of data    
     349#                 data_min = min(self.data.x) 
     350#                 # Maximum value of data   
     351#                 data_max = max(self.data.x) 
     352#                 self.btEditMask.Disable()   
     353#                 self.EditMask_title.Disable() 
     354#             else: 
     355#                  
     356#                 ## Minimum value of data  
     357#                 data_min = 0 
     358#                 x = max(math.fabs(self.data.xmin), math.fabs(self.data.xmax))  
     359#                 y = max(math.fabs(self.data.ymin), math.fabs(self.data.ymax)) 
     360#                 ## Maximum value of data   
     361#                 data_max = math.sqrt(x*x + y*y) 
     362#                 self.btEditMask.Enable()   
     363#                 self.EditMask_title.Enable()  
     364#  
     365#         self.dataSource.SetValue(data_name) 
     366#         self.qmin_x = data_min 
     367#         self.qmax_x = data_max 
     368#         #self.minimum_q.SetValue(str(data_min)) 
     369#         #self.maximum_q.SetValue(str(data_max)) 
     370#         self.qmin.SetValue(str(data_min)) 
     371#         self.qmax.SetValue(str(data_max)) 
     372#         self.qmin.SetBackgroundColour("white") 
     373#         self.qmax.SetBackgroundColour("white") 
     374#         self.state.data = data 
     375#         self.state.qmin = self.qmin_x 
     376#         self.state.qmax = self.qmax_x 
     377#          
     378#         #update model plot with new data information 
     379#         if flag: 
     380#             #set model view button 
     381#             if self.data.__class__.__name__ == "Data2D": 
     382#                 self.enable2D = True 
     383#                 self.model_view.SetLabel("2D Mode") 
     384#             else: 
     385#                 self.enable2D = False 
     386#                 self.model_view.SetLabel("1D Mode") 
     387#                  
     388#             self.model_view.Disable() 
     389#              
     390#             wx.PostEvent(self._manager.parent,  
     391#                              NewPlotEvent(group_id=group_id, 
     392#                                                action="delete")) 
     393#             #plot the current selected data 
     394#             wx.PostEvent(self._manager.parent, NewPlotEvent(plot=self.data,  
     395#                                                     title=str(self.data.title))) 
     396#             self._manager.store_data(uid=self.uid, data=data, 
     397#                                      data_list=self.data_list, 
     398#                                       caption=self.window_name) 
     399#             self._draw_model() 
    365400     
    366401 
  • src/sas/perspectives/fitting/fitpanel.py

    r79492222 rfa09d62  
    371371        """ 
    372372        from fitpage import FitPage 
    373         panel = FitPage(parent=self) 
     373        from batchfitpage import BatchFitPage 
    374374        if self.batch_on: 
     375            panel = BatchFitPage(parent=self) 
    375376            self.batch_page_index += 1 
    376377            caption = "BatchPage" + str(self.batch_page_index) 
     
    378379        else: 
    379380            #Increment index of fit page 
     381            panel = FitPage(parent=self) 
    380382            self.fit_page_index += 1 
    381383            caption = "FitPage" + str(self.fit_page_index) 
     
    467469        if data_1d_list and data_2d_list: 
    468470            # need to warning the user that this batch is a special case 
    469             from sas import BatchDataDialog 
     471            from sas.perspectives.fitting.fitting_widgets import BatchDataDialog 
    470472            dlg = BatchDataDialog(self) 
    471473            if dlg.ShowModal() == wx.ID_OK: 
Note: See TracChangeset for help on using the changeset viewer.