Changeset 66d4370 in sasview for src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
- Timestamp:
- Sep 6, 2018 9:03:25 AM (6 years ago)
- Branches:
- ESS_GUI, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc
- Children:
- 9d23e4c, 40975f8, 73665a8
- Parents:
- dda8f16
- git-author:
- Piotr Rozyczko <rozyczko@…> (09/06/18 09:01:55)
- git-committer:
- Piotr Rozyczko <rozyczko@…> (09/06/18 09:03:25)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/qtgui/Perspectives/Fitting/FittingWidget.py
rf84d793 r66d4370 247 247 # copy of current kernel model 248 248 self.kernel_module_copy = None 249 250 # dictionaries of current params 251 self.poly_params = {} 252 self.magnet_params = {} 249 253 250 254 # Page id for fitting … … 1186 1190 # Update the sasmodel 1187 1191 # PD[ratio] -> width, npts -> npts, nsigs -> nsigmas 1188 self.kernel_module.setParam(parameter_name + '.' + delegate.columnDict()[model_column], value) 1192 #self.kernel_module.setParam(parameter_name + '.' + delegate.columnDict()[model_column], value) 1193 key = parameter_name + '.' + delegate.columnDict()[model_column] 1194 self.poly_params[key] = value 1189 1195 1190 1196 # Update plot 1191 1197 self.updateData() 1192 1193 # update in param model1194 if model_column in [delegate.poly_pd, delegate.poly_error, delegate.poly_min, delegate.poly_max]:1195 row = self.getRowFromName(parameter_name)1196 param_item = self._model_model.item(row)1197 param_item.child(0).child(0, model_column).setText(item.text())1198 1198 1199 1199 def onMagnetModelChange(self, item): … … 1224 1224 # Unparsable field 1225 1225 return 1226 1227 property_index = self._magnet_model.headerData(1, model_column)-1 # Value, min, max, etc. 1228 1229 # Update the parameter value - note: this supports +/-inf as well 1230 self.kernel_module.params[parameter_name] = value 1231 1232 # min/max to be changed in self.kernel_module.details[parameter_name] = ['Ang', 0.0, inf] 1233 self.kernel_module.details[parameter_name][property_index] = value 1234 1235 # Force the chart update when actual parameters changed 1236 if model_column == 1: 1226 delegate = self.lstMagnetic.itemDelegate() 1227 1228 if model_column > 1: 1229 if model_column == delegate.mag_min: 1230 pos = 1 1231 elif model_column == delegate.mag_max: 1232 pos = 2 1233 elif model_column == delegate.mag_unit: 1234 pos = 0 1235 else: 1236 raise AttributeError("Wrong column in magnetism table.") 1237 # min/max to be changed in self.kernel_module.details[parameter_name] = ['Ang', 0.0, inf] 1238 self.kernel_module.details[parameter_name][pos] = value 1239 else: 1240 self.magnet_params[parameter_name] = value 1241 #self.kernel_module.setParam(parameter_name) = value 1242 # Force the chart update when actual parameters changed 1237 1243 self.recalculatePlotData() 1238 1244 … … 1495 1501 # Data going in 1496 1502 data = self.logic.data 1497 model = self.kernel_module1503 model = copy.deepcopy(self.kernel_module) 1498 1504 qmin = self.q_range_min 1499 1505 qmax = self.q_range_max 1506 # add polydisperse/magnet parameters if asked 1507 self.updateKernelModelWithExtraParams(model) 1500 1508 1501 1509 params_to_fit = self.main_params_to_fit … … 1974 1982 1975 1983 # Add polydispersity to the model 1984 self.poly_params = {} 1976 1985 self.setPolyModel() 1977 1986 # Add magnetic parameters to the model 1987 self.magnet_params = {} 1978 1988 self.setMagneticModel() 1979 1989 … … 2237 2247 return self.completed1D if isinstance(self.data, Data1D) else self.completed2D 2238 2248 2249 def updateKernelModelWithExtraParams(self, model=None): 2250 """ 2251 Updates kernel model 'model' with extra parameters from 2252 the polydisp and magnetism tab, if the tabs are enabled 2253 """ 2254 if model is None: return 2255 if not hasattr(model, 'setParam'): return 2256 2257 # add polydisperse parameters if asked 2258 if self.chkPolydispersity.isChecked(): 2259 for key, value in self.poly_params.items(): 2260 model.setParam(key, value) 2261 # add magnetic params if asked 2262 if self.chkMagnetism.isChecked(): 2263 for key, value in self.magnet_params.items(): 2264 model.setParam(key, value) 2265 2239 2266 def calculateQGridForModelExt(self, data=None, model=None, completefn=None, use_threads=True): 2240 2267 """ … … 2244 2271 data = self.data 2245 2272 if model is None: 2246 model = self.kernel_module 2273 model = copy.deepcopy(self.kernel_module) 2274 self.updateKernelModelWithExtraParams(model) 2275 2247 2276 if completefn is None: 2248 2277 completefn = self.methodCompleteForData() … … 2338 2367 """ 2339 2368 fitted_data = self.logic.new2DPlot(return_data) 2340 self.calculateResiduals(fitted_data)2369 residuals = self.calculateResiduals(fitted_data) 2341 2370 self.model_data = fitted_data 2371 new_plots = [fitted_data] 2372 if residuals is not None: 2373 new_plots.append(residuals) 2374 2375 # Update/generate plots 2376 for plot in new_plots: 2377 self.communicate.plotUpdateSignal.emit([plot]) 2342 2378 2343 2379 def calculateResiduals(self, fitted_data): … … 2470 2506 _, min, max = self.kernel_module.details[param_name] 2471 2507 2508 # Update local param dict 2509 self.poly_params[param_name + '.width'] = width 2510 self.poly_params[param_name + '.npts'] = npts 2511 self.poly_params[param_name + '.nsigmas'] = nsigs 2512 2472 2513 # Construct a row with polydisp. related variable. 2473 2514 # This will get added to the polydisp. model … … 2643 2684 str(param.limits[1]), 2644 2685 param.units] 2686 2687 self.magnet_params[param.name] = param.default 2645 2688 2646 2689 FittingUtilities.addCheckedListToModel(model, checked_list)
Note: See TracChangeset
for help on using the changeset viewer.