Changeset 18b7ca96 in sasview for src/sas/sasgui
- Timestamp:
- Jan 13, 2017 10:52:21 AM (8 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, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- eb2dc13
- Parents:
- 1905128 (diff), 12361fd (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Location:
- src/sas/sasgui
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sasgui/guiframe/local_perspectives/plotting/plotting.py
r6ffa0dd rca224b1 134 134 """ 135 135 for group_id in self.plot_panels.keys(): 136 panel = self.plot_panels[group_id] 137 panel.graph.reset() 138 self.hide_panel(group_id) 136 self.clear_panel_by_id(group_id) 139 137 self.plot_panels = {} 140 138 -
src/sas/sasgui/perspectives/fitting/basepage.py
r505706a ra6fccd7 1105 1105 """ 1106 1106 for key, value in self.master_category_dict.iteritems(): 1107 formfactor = state.formfactorcombobox.split(":") 1108 if isinstance(formfactor, list): 1109 formfactor = formfactor[0] 1107 1110 for list_item in value: 1108 if state.formfactorcomboboxin list_item:1111 if formfactor in list_item: 1109 1112 return self.categorybox.Items.index(key) 1110 1113 return 0 … … 1152 1155 self._show_combox_helper() 1153 1156 # select the current model 1154 try: 1155 # to support older version 1156 category_pos = int(state.categorycombobox) 1157 except: 1158 state.formfactorcombobox = state.formfactorcombobox.lower() 1159 state.formfactorcombobox = \ 1160 state.formfactorcombobox.replace('model', '') 1161 state.formfactorcombobox = unicode(state.formfactorcombobox) 1162 state.categorycombobox = unicode(state.categorycombobox) 1163 if state.categorycombobox in self.categorybox.Items: 1164 category_pos = self.categorybox.Items.index( 1165 state.categorycombobox) 1166 else: 1167 # Look in master list for model name (model.lower) 1168 category_pos = self.get_cat_combo_box_pos(state) 1157 state._convert_to_sasmodels() 1158 state.categorycombobox = unicode(state.categorycombobox) 1159 if state.categorycombobox in self.categorybox.Items: 1160 category_pos = self.categorybox.Items.index( 1161 state.categorycombobox) 1162 else: 1163 # Look in master list for model name (model.lower) 1164 category_pos = self.get_cat_combo_box_pos(state) 1169 1165 1170 1166 self.categorybox.Select(category_pos) 1171 1167 self._show_combox(None) 1172 try: 1173 # to support older version 1174 formfactor_pos = int(state.formfactorcombobox) 1175 except: 1176 formfactor_pos = 0 1177 for ind_form in range(self.formfactorbox.GetCount()): 1178 if self.formfactorbox.GetString(ind_form) == \ 1179 (state.formfactorcombobox): 1180 formfactor_pos = int(ind_form) 1168 from models import PLUGIN_NAME_BASE 1169 if self.categorybox.GetValue() == 'Customized Models' \ 1170 and PLUGIN_NAME_BASE not in state.formfactorcombobox: 1171 state.formfactorcombobox = \ 1172 PLUGIN_NAME_BASE + state.formfactorcombobox 1173 formfactor_pos = 0 1174 for ind_form in range(self.formfactorbox.GetCount()): 1175 if self.formfactorbox.GetString(ind_form) == \ 1176 (state.formfactorcombobox): 1177 formfactor_pos = int(ind_form) 1178 break 1179 1180 self.formfactorbox.Select(formfactor_pos) 1181 1182 structfactor_pos = 0 1183 if state.structurecombobox is not None: 1184 state.structurecombobox = unicode(state.structurecombobox) 1185 for ind_struct in range(self.structurebox.GetCount()): 1186 if self.structurebox.GetString(ind_struct) == \ 1187 (state.structurecombobox): 1188 structfactor_pos = int(ind_struct) 1181 1189 break 1182 1183 self.formfactorbox.Select(formfactor_pos)1184 1185 structfactor_pos = 01186 try:1187 # to support older version1188 structfactor_pos = int(state.structurecombobox)1189 except:1190 if state.structurecombobox is not None:1191 state.structurecombobox = unicode(state.structurecombobox)1192 for ind_struct in range(self.structurebox.GetCount()):1193 if self.structurebox.GetString(ind_struct) == \1194 (state.structurecombobox):1195 structfactor_pos = int(ind_struct)1196 break1197 1190 1198 1191 self.structurebox.SetSelection(structfactor_pos) … … 1384 1377 # self.state.struct_rbutton = self.struct_rbutton.GetValue() 1385 1378 # self.state.plugin_rbutton = self.plugin_rbutton.GetValue() 1386 self.state.structurecombobox = self.structurebox.Get Label()1387 self.state.formfactorcombobox = self.formfactorbox.Get Label()1388 self.state.categorycombobox = self.categorybox.Get Label()1379 self.state.structurecombobox = self.structurebox.GetValue() 1380 self.state.formfactorcombobox = self.formfactorbox.GetValue() 1381 self.state.categorycombobox = self.categorybox.GetValue() 1389 1382 1390 1383 # post state to fit panel … … 1587 1580 if len(statelist) == 0 or len(listtorestore) == 0: 1588 1581 return 1589 if len(statelist) != len(listtorestore):1590 return1591 1582 1592 1583 for j in range(len(listtorestore)): 1593 item_page = listtorestore[j] 1594 item_page_info = statelist[j] 1595 # change the state of the check box for simple parameters 1596 if item_page[0] is not None: 1597 item_page[0].SetValue(item_page_info[0]) 1598 if item_page[2] is not None: 1599 item_page[2].SetValue(item_page_info[2]) 1600 if item_page[2].__class__.__name__ == "ComboBox": 1601 if item_page_info[2] in self.model.fun_list: 1602 fun_val = self.model.fun_list[item_page_info[2]] 1603 self.model.setParam(item_page_info[1], fun_val) 1604 if item_page[3] is not None: 1605 # show or hide text +/- 1606 if item_page_info[2]: 1607 item_page[3].Show(True) 1608 else: 1609 item_page[3].Hide() 1610 if item_page[4] is not None: 1611 # show of hide the text crtl for fitting error 1612 if item_page_info[4][0]: 1613 item_page[4].Show(True) 1614 item_page[4].SetValue(item_page_info[4][1]) 1615 else: 1616 item_page[3].Hide() 1617 if item_page[5] is not None: 1618 # show of hide the text crtl for fitting error 1619 item_page[5].Show(item_page_info[5][0]) 1620 item_page[5].SetValue(item_page_info[5][1]) 1621 1622 if item_page[6] is not None: 1623 # show of hide the text crtl for fitting error 1624 item_page[6].Show(item_page_info[6][0]) 1625 item_page[6].SetValue(item_page_info[6][1]) 1584 for param in statelist: 1585 if param[1] == listtorestore[j][1]: 1586 item_page = listtorestore[j] 1587 item_page_info = param 1588 if (item_page_info[1] == "theta" or item_page_info[1] == 1589 "phi") and not self._is_2D(): 1590 break 1591 # change the state of the check box for simple parameters 1592 if item_page[0] is not None: 1593 item_page[0].SetValue(item_page_info[0]) 1594 if item_page[2] is not None: 1595 item_page[2].SetValue(item_page_info[2]) 1596 if item_page[2].__class__.__name__ == "ComboBox": 1597 if item_page_info[2] in self.model.fun_list: 1598 fun_val = self.model.fun_list[item_page_info[2]] 1599 self.model.setParam(item_page_info[1], fun_val) 1600 if item_page[3] is not None: 1601 # show or hide text +/- 1602 if item_page_info[2]: 1603 item_page[3].Show(True) 1604 else: 1605 item_page[3].Hide() 1606 if item_page[4] is not None: 1607 # show of hide the text crtl for fitting error 1608 if item_page_info[4][0]: 1609 item_page[4].Show(True) 1610 item_page[4].SetValue(str(item_page_info[4][1])) 1611 else: 1612 item_page[3].Hide() 1613 if item_page[5] is not None: 1614 # show of hide the text crtl for fitting error 1615 item_page[5].Show(True) 1616 item_page[5].SetValue(str(item_page_info[5][1])) 1617 if item_page[6] is not None: 1618 # show of hide the text crtl for fitting error 1619 item_page[6].Show(True) 1620 item_page[6].SetValue(str(item_page_info[6][1])) 1621 break 1626 1622 1627 1623 def _reset_strparam_state(self, listtorestore, statelist): -
src/sas/sasgui/perspectives/fitting/fitpage.py
r24fd27a ra6fccd7 1190 1190 self.state.slit_smearer = self.slit_smearer.GetValue() 1191 1191 1192 self.state.structurecombobox = self.structurebox.GetLabel() 1193 self.state.formfactorcombobox = self.formfactorbox.GetLabel() 1192 self.state.structurecombobox = self.structurebox.GetValue() 1193 self.state.formfactorcombobox = self.formfactorbox.GetValue() 1194 self.state.categorycombobox = self.categorybox.GetValue() 1194 1195 self.enable_fit_button() 1195 1196 if self.model is not None: -
src/sas/sasgui/perspectives/fitting/models.py
r313c5c9 r0de74af 23 23 PLUGIN_LOG = os.path.join(os.path.expanduser("~"), '.sasview', PLUGIN_DIR, 24 24 "plugins.log") 25 PLUGIN_NAME_BASE = '[plug-in] ' 25 26 26 27 def get_model_python_path(): … … 181 182 try: 182 183 model = load_custom_model(path) 183 model.name = "[plug-in] "+model.name184 model.name = PLUGIN_NAME_BASE + model.name 184 185 plugins[model.name] = model 185 186 except Exception: -
src/sas/sasgui/perspectives/fitting/pagestate.py
raf08e55 r18b7ca96 25 25 from lxml import etree 26 26 27 from sasmodels import convert 27 28 import sasmodels.weights 28 29 … … 271 272 # store value of chisqr 272 273 self.tcChi = None 274 self.version = (1,0,0) 273 275 274 276 def clone(self): … … 349 351 obj.cb1 = copy.deepcopy(self.cb1) 350 352 obj.smearer = copy.deepcopy(self.smearer) 353 obj.version = copy.deepcopy(self.version) 351 354 352 355 for name, state in self.saved_states.iteritems(): … … 355 358 obj.saved_states[copy_name] = copy_state 356 359 return obj 360 361 def _old_first_model(self): 362 """ 363 Handle save states from 4.0.1 and before where the first item in the 364 selection boxes of category, formfactor and structurefactor were not 365 saved. 366 :return: None 367 """ 368 if self.formfactorcombobox == '': 369 if self.categorycombobox == '' and len(self.parameters) == 3: 370 self.categorycombobox = "Shape-Independent" 371 self.formfactorcombobox = 'PowerLawAbsModel' 372 elif self.categorycombobox == '' and len(self.parameters) == 9: 373 self.categorycombobox = 'Cylinder' 374 self.formfactorcombobox = 'barbell' 375 elif self.categorycombobox == 'Shapes': 376 self.formfactorcombobox = 'BCCrystalModel' 377 elif self.categorycombobox == 'Uncategorized': 378 self.formfactorcombobox = 'LineModel' 379 elif self.categorycombobox == 'StructureFactor': 380 self.structurecombobox = 'HardsphereStructure' 381 elif self.categorycombobox == 'Customized Models': 382 self.formfactorcombobox = 'MySumFunction' 383 elif self.categorycombobox == 'Ellipsoid': 384 self.formfactorcombobox = 'core_shell_ellipsoid' 385 elif self.categorycombobox == 'Lamellae': 386 self.formfactorcombobox = 'lamellar' 387 elif self.categorycombobox == 'Paracrystal': 388 self.formfactorcombobox = 'bcc_paracrystal' 389 elif self.categorycombobox == 'Parallelepiped': 390 self.formfactorcombobox = 'core_shell_parallelepiped' 391 elif self.categorycombobox == 'Shape Independent': 392 self.formfactorcombobox = 'be_polyelectrolyte' 393 elif self.categorycombobox == 'Sphere': 394 self.formfactorcombobox = 'adsorbed_layer' 395 elif self.categorycombobox == 'Structure Factor': 396 self.formfactorcombobox = 'hardsphere' 397 398 @staticmethod 399 def param_remap_to_sasmodels_convert(params, is_string=False): 400 """ 401 Remaps the parameters for sasmodels conversion 402 403 :param params: list of parameters (likely self.parameters) 404 :return: remapped dictionary of parameters 405 """ 406 p = dict() 407 for fittable, name, value, _, uncert, lower, upper, units in params: 408 if not value: 409 value = numpy.nan 410 if not uncert or uncert[1] == '' or uncert[1] == 'None': 411 uncert[0] = False 412 uncert[1] = numpy.nan 413 if not upper or upper[1] == '' or upper[1] == 'None': 414 upper[0] = False 415 upper[1] = numpy.nan 416 if not lower or lower[1] == '' or lower[1] == 'None': 417 lower[0] = False 418 lower[1] = numpy.nan 419 if is_string: 420 p[name] = str(value) 421 else: 422 p[name] = float(value) 423 p[name + ".fittable"] = bool(fittable) 424 p[name + ".std"] = float(uncert[1]) 425 p[name + ".upper"] = float(upper[1]) 426 p[name + ".lower"] = float(lower[1]) 427 p[name + ".units"] = units 428 return p 429 430 @staticmethod 431 def param_remap_from_sasmodels_convert(params): 432 """ 433 Converts {name : value} map back to [] param list 434 :param params: parameter map returned from sasmodels 435 :return: None 436 """ 437 p_map = [] 438 for name, info in params.iteritems(): 439 if ".fittable" in name or ".std" in name or ".upper" in name or \ 440 ".lower" in name or ".units" in name: 441 pass 442 else: 443 fittable = params.get(name + ".fittable", True) 444 std = params.get(name + ".std", '0.0') 445 upper = params.get(name + ".upper", 'inf') 446 lower = params.get(name + ".lower", '-inf') 447 units = params.get(name + ".units") 448 if std is not None and std is not numpy.nan: 449 std = [True, str(std)] 450 else: 451 std = [False, ''] 452 if lower is not None and lower is not numpy.nan: 453 lower = [True, str(lower)] 454 else: 455 lower = [True, '-inf'] 456 if upper is not None and upper is not numpy.nan: 457 upper = [True, str(upper)] 458 else: 459 upper = [True, 'inf'] 460 param_list = [bool(fittable), str(name), str(info), 461 "+/-", std, lower, upper, str(units)] 462 p_map.append(param_list) 463 return p_map 464 465 def _convert_to_sasmodels(self): 466 """ 467 Convert parameters to a form usable by sasmodels converter 468 469 :return: None 470 """ 471 # Create conversion dictionary to send to sasmodels 472 self._old_first_model() 473 p = self.param_remap_to_sasmodels_convert(self.parameters) 474 structurefactor, params = convert.convert_model(self.structurecombobox, 475 p, False, self.version) 476 formfactor, params = convert.convert_model(self.formfactorcombobox, 477 params, False, self.version) 478 if len(self.str_parameters) > 0: 479 str_pars = self.param_remap_to_sasmodels_convert( 480 self.str_parameters, True) 481 formfactor, str_params = convert.convert_model( 482 self.formfactorcombobox, str_pars, False, self.version) 483 for key, value in str_params.iteritems(): 484 params[key] = value 485 486 if self.formfactorcombobox == 'SphericalSLDModel': 487 self.multi_factor += 1 488 self.formfactorcombobox = formfactor 489 self.structurecombobox = structurefactor 490 self.parameters = [] 491 self.parameters = self.param_remap_from_sasmodels_convert(params) 357 492 358 493 def _repr_helper(self, list, rep): … … 682 817 683 818 attr = newdoc.createAttribute("version") 684 attr.nodeValue = '1.0' 819 import sasview 820 attr.nodeValue = sasview.__version__ 821 # attr.nodeValue = '1.0' 685 822 top_element.setAttributeNode(attr) 686 823 … … 875 1012 raise RuntimeError, msg 876 1013 877 if node.get('version') and node.get('version') == '1.0': 1014 if node.get('version'): 1015 # Get the version for model conversion purposes 1016 self.version = tuple(int(e) for e in 1017 str.split(node.get('version'), ".")) 1018 # The tuple must be at least 3 items long 1019 while len(self.version) < 3: 1020 ver_list = list(self.version) 1021 ver_list.append(0) 1022 self.version = tuple(ver_list) 878 1023 879 1024 # Get file name … … 1191 1336 name = original_fname 1192 1337 state.data.group_id = name 1338 state.version = fitstate.version 1193 1339 # store state in fitting 1194 1340 self.call_back(state=state, -
src/sas/sasgui/perspectives/invariant/invariant_state.py
rcb93b40 rdb5294e 423 423 for item in DEFAULT_STATE: 424 424 input_field = get_content('ns:%s' % item, entry) 425 val = str(input_field.text.strip()) 425 if input_field.text is not None: 426 val = str(input_field.text.strip()) 427 else: 428 val = '' 426 429 if input_field is not None: 427 430 temp_state[item] = val … … 433 436 for item in DEFAULT_STATE: 434 437 input_field = get_content('ns:%s' % item, entry) 435 val = str(input_field.text.strip()) 438 if input_field.text is not None: 439 val = str(input_field.text.strip()) 440 else: 441 val = '' 436 442 if input_field is not None: 437 443 self.set_saved_state(name=item, value=val) -
src/sas/sasgui/perspectives/fitting/model_thread.py
rd3911e3 rc1681ea 197 197 output[index] = self.model.evalDistribution(self.data.x[index]) 198 198 199 sq_model = None 200 pq_model = None 199 sq_values = None 200 pq_values = None 201 s_model = None 202 p_model = None 201 203 if isinstance(self.model, MultiplicationModel): 202 sq_model = numpy.zeros((len(self.data.x))) 203 pq_model = numpy.zeros((len(self.data.x))) 204 sq_model[index] = self.model.s_model.evalDistribution(self.data.x[index]) 205 pq_model[index] = self.model.p_model.evalDistribution(self.data.x[index]) 204 s_model = self.model.s_model 205 p_model = self.model.p_model 206 elif hasattr(self.model, "get_composition_models"): 207 p_model, s_model = self.model.get_composition_models() 208 209 if p_model is not None and s_model is not None: 210 sq_values = numpy.zeros((len(self.data.x))) 211 pq_values = numpy.zeros((len(self.data.x))) 212 sq_values[index] = s_model.evalDistribution(self.data.x[index]) 213 pq_values[index] = p_model.evalDistribution(self.data.x[index]) 206 214 207 215 elapsed = time.time() - self.starttime … … 220 228 unsmeared_data=unsmeared_data, 221 229 unsmeared_error=unsmeared_error, 222 pq_model=pq_ model,223 sq_model=sq_ model)230 pq_model=pq_values, 231 sq_model=sq_values) 224 232 225 233 def results(self):
Note: See TracChangeset
for help on using the changeset viewer.