Changeset 00f7ff1 in sasview for src/sas/sasgui/perspectives/fitting/simfitpage.py
- Timestamp:
- Jun 21, 2017 11:17:18 AM (7 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, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
- Children:
- 81b35396
- Parents:
- 2a0f33f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sasgui/perspectives/fitting/simfitpage.py
r959eb01 r00f7ff1 9 9 from wx.lib.scrolledpanel import ScrolledPanel 10 10 11 from sas.sascalc.fit.pagestate import SimFitPageState 11 12 from sas.sasgui.guiframe.events import StatusEvent, PanelOnFocusEvent 12 13 from sas.sasgui.guiframe.panel_base import PanelBase … … 46 47 47 48 return fittable_param 48 49 49 50 50 class SimultaneousFitPage(ScrolledPanel, PanelBase): … … 143 143 return self.state 144 144 145 def load_from_save_state(self, sim_state): 146 """ 147 Load in a simultaneous/constrained fit from a save state 148 :param fit: Fitpanel object 149 :return: None 150 """ 151 model_map = {} 152 # Process each model and associate old M# with new M# 153 i = 0 154 for model in self.model_list: 155 model_id = self._format_id(model[1].keys()[0]) 156 for saved_model in sim_state.model_list: 157 save_id = saved_model.pop('name') 158 saved_model['name'] = save_id 159 save_id = self._format_id(save_id) 160 if save_id == model_id: 161 model_map[saved_model.pop('fit_page_source')] = \ 162 model[3].name 163 check = bool(saved_model.pop('checked')) 164 self.model_list[i][0].SetValue(check) 165 break 166 i += 1 167 168 self.check_model_name(None) 169 170 if len(sim_state.constraints_list) > 0: 171 self.hide_constraint.SetValue(False) 172 self.show_constraint.SetValue(True) 173 self._display_constraint(None) 174 175 for index, item in enumerate(sim_state.constraints_list): 176 model_cbox = item.pop('model_cbox') 177 if model_cbox != "": 178 constraint_value = item.pop('constraint') 179 param = item.pop('param_cbox') 180 equality = item.pop('egal_txt') 181 for key, value in model_map.iteritems(): 182 model_cbox.replace(key, value) 183 constraint_value.replace(key, value) 184 185 self.constraints_list[index][0].SetValue(model_cbox) 186 self._on_select_model(None) 187 self.constraints_list[index][1].SetValue(param) 188 self.constraints_list[index][2].SetLabel(equality) 189 self.constraints_list[index][3].SetValue(constraint_value) 190 self._on_add_constraint(None) 191 self._manager.sim_page = self 192 193 def _format_id(self, original_id): 194 original_id = original_id.rstrip('1234567890.') 195 new_id_list = original_id.split() 196 new_id = ' '.join(new_id_list) 197 return new_id 198 199 200 145 201 def draw_page(self): 146 202 """ 147 203 Construct the Simultaneous/Constrained fit page. fills the first 148 region (sizer1) with the list of available fit page pairs of data 204 region (sizer1) with the list of available fit page pairs of data 149 205 and models. Then fills sizer2 with the checkbox for adding 150 206 constraints, and finally fills sizer3 with the fit button and … … 1020 1076 cbox.Append(name, value) 1021 1077 cbox.SetStringSelection(selected) 1022 1023 1024 class SimFitPageState:1025 """1026 State of the simultaneous fit page for saving purposes1027 """1028 1029 def __init__(self):1030 # Sim Fit Page Number1031 self.fit_page_no = None1032 # Select all data1033 self.select_all = False1034 # Data sets sent to fit page1035 self.model_list = []1036 # Data sets to be fit1037 self.model_to_fit = []1038 # Number of constraints1039 self.no_constraint = 01040 # Dictionary of constraints1041 self.constraint_dict = {}1042 # List of constraints1043 self.constraints_list = []1044 1045 def load_from_save_state(self, fit):1046 """1047 Load in a simultaneous/constrained fit from a save state1048 :param fit: Fitpanel object1049 :return: None1050 """1051 1052 model_map = {}1053 if fit.fit_panel.sim_page is None:1054 fit.fit_panel.add_sim_page()1055 sim_page = fit.fit_panel.sim_page1056 1057 # Process each model and associate old M# with new M#1058 i = 01059 for model in sim_page.model_list:1060 model_id = self._format_id(model[1].keys()[0])1061 for saved_model in self.model_list:1062 save_id = saved_model.pop('name')1063 saved_model['name'] = save_id1064 save_id = self._format_id(save_id)1065 if save_id == model_id:1066 model_map[saved_model.pop('fit_page_source')] = \1067 model[3].name1068 check = bool(saved_model.pop('checked'))1069 sim_page.model_list[i][0].SetValue(check)1070 break1071 i += 11072 sim_page.check_model_name(None)1073 1074 if len(self.constraints_list) > 0:1075 sim_page.hide_constraint.SetValue(False)1076 sim_page.show_constraint.SetValue(True)1077 sim_page._display_constraint(None)1078 1079 for index, item in enumerate(self.constraints_list):1080 model_cbox = item.pop('model_cbox')1081 if model_cbox != "":1082 constraint_value = item.pop('constraint')1083 param = item.pop('param_cbox')1084 equality = item.pop('egal_txt')1085 for key, value in model_map.iteritems():1086 model_cbox.replace(key, value)1087 constraint_value.replace(key, value)1088 1089 sim_page.constraints_list[index][0].SetValue(model_cbox)1090 sim_page._on_select_model(None)1091 sim_page.constraints_list[index][1].SetValue(param)1092 sim_page.constraints_list[index][2].SetLabel(equality)1093 sim_page.constraints_list[index][3].SetValue(constraint_value)1094 sim_page._on_add_constraint(None)1095 sim_page._manager.sim_page = sim_page1096 1097 def _format_id(self, original_id):1098 original_id = original_id.rstrip('1234567890.')1099 new_id_list = original_id.split()1100 new_id = ' '.join(new_id_list)1101 return new_id
Note: See TracChangeset
for help on using the changeset viewer.