Changeset fa09d62 in sasview for src/sas/perspectives
- Timestamp:
- Feb 18, 2015 10:01:28 AM (10 years ago)
- 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
- Location:
- src/sas/perspectives/fitting
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/perspectives/fitting/batchfitpage.py
r79492222 rfa09d62 17 17 from sas.models.qsmearing import smear_selection 18 18 from sas.perspectives.fitting.fitpage import FitPage 19 from sas.perspectives.fitting.fitpage import check_data_validity 19 20 20 21 class BatchFitPage(FitPage): … … 30 31 """ 31 32 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): 38 37 """ 39 Fill the sizer containing the plotting range 40 add access to npts 38 fill sizer 0 with data info 41 39 """ 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 136 43 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() 365 400 366 401 -
src/sas/perspectives/fitting/fitpanel.py
r79492222 rfa09d62 371 371 """ 372 372 from fitpage import FitPage 373 panel = FitPage(parent=self)373 from batchfitpage import BatchFitPage 374 374 if self.batch_on: 375 panel = BatchFitPage(parent=self) 375 376 self.batch_page_index += 1 376 377 caption = "BatchPage" + str(self.batch_page_index) … … 378 379 else: 379 380 #Increment index of fit page 381 panel = FitPage(parent=self) 380 382 self.fit_page_index += 1 381 383 caption = "FitPage" + str(self.fit_page_index) … … 467 469 if data_1d_list and data_2d_list: 468 470 # need to warning the user that this batch is a special case 469 from sas import BatchDataDialog471 from sas.perspectives.fitting.fitting_widgets import BatchDataDialog 470 472 dlg = BatchDataDialog(self) 471 473 if dlg.ShowModal() == wx.ID_OK:
Note: See TracChangeset
for help on using the changeset viewer.