Changes in / [72d3f1e:53b8266] in sasview
- Files:
-
- 2 added
- 2 deleted
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/dataloader/data_info.py
rdeaa0c6 r17e257b5 1176 1176 final_dataset.yaxis(data._yaxis, data._yunit) 1177 1177 final_dataset.zaxis(data._zaxis, data._zunit) 1178 if len(data.data.shape) == 2: 1179 n_rows, n_cols = data.data.shape 1180 final_dataset.y_bins = data.qy_data[0::int(n_cols)] 1181 final_dataset.x_bins = data.qx_data[:int(n_cols)] 1178 final_dataset.x_bins = data.x_bins 1179 final_dataset.y_bins = data.y_bins 1182 1180 else: 1183 1181 return_string = "Should Never Happen: _combine_data_info_with_plottable input is not a plottable1d or " + \ -
src/sas/sascalc/dataloader/file_reader_base_class.py
rdeaa0c6 rae69c690 167 167 dataset.x_bins = dataset.qx_data[:int(n_cols)] 168 168 dataset.data = dataset.data.flatten() 169 if len(dataset.data) > 0:170 dataset.xmin = np.min(dataset.qx_data)171 dataset.xmax = np.max(dataset.qx_data)172 dataset.ymin = np.min(dataset.qy_data)173 dataset.ymax = np.max(dataset.qx_data)174 169 175 170 def format_unit(self, unit=None): … … 196 191 self.output = [] 197 192 198 def data_cleanup(self): 199 """ 200 Clean up the data sets and refresh everything 201 :return: None 202 """ 203 self.remove_empty_q_values() 204 self.send_to_output() # Combine datasets with DataInfo 205 self.current_datainfo = DataInfo() # Reset DataInfo 206 207 def remove_empty_q_values(self): 193 def remove_empty_q_values(self, has_error_dx=False, has_error_dy=False, 194 has_error_dxl=False, has_error_dxw=False): 208 195 """ 209 196 Remove any point where Q == 0 210 197 """ 211 if isinstance(self.current_dataset, plottable_1D): 212 # Booleans for resolutions 213 has_error_dx = self.current_dataset.dx is not None 214 has_error_dxl = self.current_dataset.dxl is not None 215 has_error_dxw = self.current_dataset.dxw is not None 216 has_error_dy = self.current_dataset.dy is not None 217 # Create arrays of zeros for non-existent resolutions 218 if has_error_dxw and not has_error_dxl: 219 array_size = self.current_dataset.dxw.size - 1 220 self.current_dataset.dxl = np.append(self.current_dataset.dxl, 221 np.zeros([array_size])) 222 has_error_dxl = True 223 elif has_error_dxl and not has_error_dxw: 224 array_size = self.current_dataset.dxl.size - 1 225 self.current_dataset.dxw = np.append(self.current_dataset.dxw, 226 np.zeros([array_size])) 227 has_error_dxw = True 228 elif not has_error_dxl and not has_error_dxw and not has_error_dx: 229 array_size = self.current_dataset.x.size - 1 230 self.current_dataset.dx = np.append(self.current_dataset.dx, 231 np.zeros([array_size])) 232 has_error_dx = True 233 if not has_error_dy: 234 array_size = self.current_dataset.y.size - 1 235 self.current_dataset.dy = np.append(self.current_dataset.dy, 236 np.zeros([array_size])) 237 has_error_dy = True 238 239 # Remove points where q = 0 240 x = self.current_dataset.x 241 self.current_dataset.x = self.current_dataset.x[x != 0] 242 self.current_dataset.y = self.current_dataset.y[x != 0] 243 if has_error_dy: 244 self.current_dataset.dy = self.current_dataset.dy[x != 0] 245 if has_error_dx: 246 self.current_dataset.dx = self.current_dataset.dx[x != 0] 247 if has_error_dxl: 248 self.current_dataset.dxl = self.current_dataset.dxl[x != 0] 249 if has_error_dxw: 250 self.current_dataset.dxw = self.current_dataset.dxw[x != 0] 251 elif isinstance(self.current_dataset, plottable_2D): 252 has_error_dqx = self.current_dataset.dqx_data is not None 253 has_error_dqy = self.current_dataset.dqy_data is not None 254 has_error_dy = self.current_dataset.err_data is not None 255 has_mask = self.current_dataset.mask is not None 256 x = self.current_dataset.qx_data 257 self.current_dataset.data = self.current_dataset.data[x != 0] 258 self.current_dataset.qx_data = self.current_dataset.qx_data[x != 0] 259 self.current_dataset.qy_data = self.current_dataset.qy_data[x != 0] 260 self.current_dataset.q_data = np.sqrt( 261 np.square(self.current_dataset.qx_data) + np.square( 262 self.current_dataset.qy_data)) 263 if has_error_dy: 264 self.current_dataset.err_data = self.current_dataset.err_data[x != 0] 265 if has_error_dqx: 266 self.current_dataset.dqx_data = self.current_dataset.dqx_data[x != 0] 267 if has_error_dqy: 268 self.current_dataset.dqy_data = self.current_dataset.dqy_data[x != 0] 269 if has_mask: 270 self.current_dataset.mask = self.current_dataset.mask[x != 0] 198 x = self.current_dataset.x 199 self.current_dataset.x = self.current_dataset.x[x != 0] 200 self.current_dataset.y = self.current_dataset.y[x != 0] 201 if has_error_dy: 202 self.current_dataset.dy = self.current_dataset.dy[x != 0] 203 if has_error_dx: 204 self.current_dataset.dx = self.current_dataset.dx[x != 0] 205 if has_error_dxl: 206 self.current_dataset.dxl = self.current_dataset.dxl[x != 0] 207 if has_error_dxw: 208 self.current_dataset.dxw = self.current_dataset.dxw[x != 0] 271 209 272 210 def reset_data_list(self, no_lines=0): -
src/sas/sascalc/dataloader/readers/abs_reader.py
rffb6474 rad92c5a 109 109 # Sample thickness in mm 110 110 try: 111 value = float(line_toks[5] [:-1])111 value = float(line_toks[5]) 112 112 if self.has_converter and \ 113 113 self.current_datainfo.sample.thickness_unit != 'cm': … … 202 202 is_data_started = True 203 203 204 self.remove_empty_q_values( )204 self.remove_empty_q_values(True, True) 205 205 206 206 # Sanity check -
src/sas/sascalc/dataloader/readers/ascii_reader.py
r7b07fbe rf994e8b1 156 156 raise FileContentsException(msg) 157 157 158 self.remove_empty_q_values( )158 self.remove_empty_q_values(has_error_dx, has_error_dy) 159 159 self.current_dataset.xaxis("\\rm{Q}", 'A^{-1}') 160 160 self.current_dataset.yaxis("\\rm{Intensity}", "cm^{-1}") -
src/sas/sascalc/dataloader/readers/cansas_reader.py
r62160509 rae69c690 104 104 xml_file = self.f_open.name 105 105 # We don't sure f_open since lxml handles opnening/closing files 106 if not self.f_open.closed: 107 self.f_open.close() 108 109 basename, _ = os.path.splitext(os.path.basename(xml_file)) 110 106 111 try: 107 112 # Raises FileContentsException 108 113 self.load_file_and_schema(xml_file, schema_path) 114 self.current_datainfo = DataInfo() 115 # Raises FileContentsException if file doesn't meet CanSAS schema 116 self.is_cansas(self.extension) 117 self.invalid = False # If we reach this point then file must be valid CanSAS 118 109 119 # Parse each SASentry 110 entry_list = self.xmlroot.xpath('/ns:SASroot/ns:SASentry', 111 namespaces={ 112 'ns': self.cansas_defaults.get( 113 "ns") 114 }) 115 self.is_cansas(self.extension) 120 entry_list = self.xmlroot.xpath('/ns:SASroot/ns:SASentry', namespaces={ 121 'ns': self.cansas_defaults.get("ns") 122 }) 123 # Look for a SASentry 124 self.names.append("SASentry") 116 125 self.set_processing_instructions() 126 117 127 for entry in entry_list: 128 self.current_datainfo.filename = basename + self.extension 129 self.current_datainfo.meta_data["loader"] = "CanSAS XML 1D" 130 self.current_datainfo.meta_data[PREPROCESS] = self.processing_instructions 118 131 self._parse_entry(entry) 119 132 self.data_cleanup() … … 137 150 invalid_xml = self.find_invalid_xml() 138 151 if invalid_xml != "": 139 basename, _ = os.path.splitext(140 os.path.basename(self.f_open.name))141 152 invalid_xml = INVALID_XML.format(basename + self.extension) + invalid_xml 142 153 raise DataReaderException(invalid_xml) # Handled by base class … … 153 164 except Exception as e: # Convert all other exceptions to FileContentsExceptions 154 165 raise FileContentsException(e.message) 155 finally: 156 if not self.f_open.closed: 157 self.f_open.close() 166 158 167 159 168 def load_file_and_schema(self, xml_file, schema_path=""): … … 200 209 if not self._is_call_local() and not recurse: 201 210 self.reset_state() 202 if not recurse:211 self.data = [] 203 212 self.current_datainfo = DataInfo() 204 # Raises FileContentsException if file doesn't meet CanSAS schema 205 self.invalid = False 206 # Look for a SASentry 207 self.data = [] 213 self.names.append("SASentry") 208 214 self.parent_class = "SASentry" 209 self.names.append("SASentry")210 self.current_datainfo.meta_data["loader"] = "CanSAS XML 1D"211 self.current_datainfo.meta_data[212 PREPROCESS] = self.processing_instructions213 if self._is_call_local() and not recurse:214 basename, _ = os.path.splitext(os.path.basename(self.f_open.name))215 self.current_datainfo.filename = basename + self.extension216 215 # Create an empty dataset if no data has been passed to the reader 217 216 if self.current_dataset is None: 218 self._initialize_new_data_set(dom) 217 self.current_dataset = plottable_1D(np.empty(0), np.empty(0), 218 np.empty(0), np.empty(0)) 219 219 self.base_ns = "{" + CANSAS_NS.get(self.cansas_version).get("ns") + "}" 220 220 … … 228 228 tagname_original = tagname 229 229 # Skip this iteration when loading in save state information 230 if tagname in ["fitting_plug_in", "pr_inversion", "invariant", "corfunc"]:230 if tagname == "fitting_plug_in" or tagname == "pr_inversion" or tagname == "invariant": 231 231 continue 232 232 # Get where to store content … … 258 258 self._add_intermediate() 259 259 else: 260 # TODO: Clean this up to make it faster (fewer if/elifs)261 260 if isinstance(self.current_dataset, plottable_2D): 262 261 data_point = node.text … … 503 502 self.sort_two_d_data() 504 503 self.reset_data_list() 505 return self.output[0], None 504 empty = None 505 return self.output[0], empty 506 507 def data_cleanup(self): 508 """ 509 Clean up the data sets and refresh everything 510 :return: None 511 """ 512 has_error_dx = self.current_dataset.dx is not None 513 has_error_dxl = self.current_dataset.dxl is not None 514 has_error_dxw = self.current_dataset.dxw is not None 515 has_error_dy = self.current_dataset.dy is not None 516 self.remove_empty_q_values(has_error_dx=has_error_dx, 517 has_error_dxl=has_error_dxl, 518 has_error_dxw=has_error_dxw, 519 has_error_dy=has_error_dy) 520 self.send_to_output() # Combine datasets with DataInfo 521 self.current_datainfo = DataInfo() # Reset DataInfo 506 522 507 523 def _is_call_local(self): … … 537 553 self.aperture = Aperture() 538 554 elif self.parent_class == 'SASdata': 555 self._check_for_empty_resolution() 539 556 self.data.append(self.current_dataset) 540 557 … … 592 609 if 'unit' in attr and attr.get('unit') is not None: 593 610 try: 594 unit = attr['unit'] 595 unit_list = unit.split("|") 596 if len(unit_list) > 1: 597 self.current_dataset.xaxis(unit_list[0].strip(), 598 unit_list[1].strip()) 599 local_unit = unit_list[1] 600 else: 601 local_unit = unit 611 local_unit = attr['unit'] 602 612 unitname = self.ns_list.current_level.get("unit", "") 603 613 if "SASdetector" in self.names: … … 655 665 return node_value, value_unit 656 666 667 def _check_for_empty_resolution(self): 668 """ 669 a method to check all resolution data sets are the same size as I and q 670 """ 671 dql_exists = False 672 dqw_exists = False 673 dq_exists = False 674 di_exists = False 675 if self.current_dataset.dxl is not None: 676 dql_exists = True 677 if self.current_dataset.dxw is not None: 678 dqw_exists = True 679 if self.current_dataset.dx is not None: 680 dq_exists = True 681 if self.current_dataset.dy is not None: 682 di_exists = True 683 if dqw_exists and not dql_exists: 684 array_size = self.current_dataset.dxw.size 685 self.current_dataset.dxl = np.zeros(array_size) 686 elif dql_exists and not dqw_exists: 687 array_size = self.current_dataset.dxl.size 688 self.current_dataset.dxw = np.zeros(array_size) 689 elif not dql_exists and not dqw_exists and not dq_exists: 690 array_size = self.current_dataset.x.size 691 self.current_dataset.dx = np.append(self.current_dataset.dx, 692 np.zeros([array_size])) 693 if not di_exists: 694 array_size = self.current_dataset.y.size 695 self.current_dataset.dy = np.append(self.current_dataset.dy, 696 np.zeros([array_size])) 697 657 698 def _initialize_new_data_set(self, node=None): 658 699 if node is not None: -
src/sas/sasgui/perspectives/corfunc/corfunc_state.py
r1fa4f736 r2a399ca 289 289 namespaces={'ns': CANSAS_NS}) 290 290 for entry in entry_list: 291 sas_entry, _ = self._parse_entry(entry) 291 292 corstate = self._parse_state(entry) 292 293 293 294 if corstate is not None: 294 sas_entry, _ = self._parse_entry(entry)295 295 sas_entry.meta_data['corstate'] = corstate 296 296 sas_entry.filename = corstate.file -
src/sas/sasgui/perspectives/fitting/fitpage.py
r48154abb r79e6a33 2042 2042 # Save state_fit 2043 2043 self.save_current_state_fit() 2044 self.onSmear(None)2045 self._onDraw(None)2046 2044 except: 2047 2045 self._show_combox_helper() -
src/sas/sasgui/perspectives/fitting/pagestate.py
r1fa4f736 rda9b239 1297 1297 namespaces={'ns': CANSAS_NS}) 1298 1298 for entry in entry_list: 1299 try: 1300 sas_entry, _ = self._parse_save_state_entry(entry) 1301 except: 1302 raise 1299 1303 fitstate = self._parse_state(entry) 1304 1300 1305 # state could be None when .svs file is loaded 1301 1306 # in this case, skip appending to output 1302 1307 if fitstate is not None: 1303 try:1304 sas_entry, _ = self._parse_save_state_entry(1305 entry)1306 except:1307 raise1308 1308 sas_entry.meta_data['fitstate'] = fitstate 1309 1309 sas_entry.filename = fitstate.file -
src/sas/sasgui/perspectives/fitting/simfitpage.py
rf73b47c ra9f9ca4 1073 1073 """ 1074 1074 1075 init_map = {} 1076 final_map = {} 1075 model_map = {} 1077 1076 if fit.fit_panel.sim_page is None: 1078 1077 fit.fit_panel.add_sim_page() … … 1088 1087 save_id = self._format_id(save_id) 1089 1088 if save_id == model_id: 1090 inter_id = str(i) + str(i) + str(i) + str(i) + str(i) 1091 init_map[saved_model.pop('fit_page_source')] = inter_id 1092 final_map[inter_id] = model[3].name 1089 model_map[saved_model.pop('fit_page_source')] = \ 1090 model[3].name 1093 1091 check = bool(saved_model.pop('checked')) 1094 1092 sim_page.model_list[i][0].SetValue(check) … … 1108 1106 param = item.pop('param_cbox') 1109 1107 equality = item.pop('egal_txt') 1110 for key, value in init_map.items(): 1111 model_cbox = model_cbox.replace(key, value) 1112 constraint_value = constraint_value.replace(key, value) 1113 for key, value in final_map.items(): 1114 model_cbox = model_cbox.replace(key, value) 1115 constraint_value = constraint_value.replace(key, value) 1108 for key, value in model_map.iteritems(): 1109 model_cbox.replace(key, value) 1110 constraint_value.replace(key, value) 1116 1111 1117 1112 sim_page.constraints_list[index][0].SetValue(model_cbox) -
src/sas/sasgui/perspectives/invariant/invariant_state.py
r1fa4f736 r7432acb 728 728 729 729 for entry in entry_list: 730 731 sas_entry, _ = self._parse_entry(entry) 730 732 invstate = self._parse_state(entry) 733 731 734 # invstate could be None when .svs file is loaded 732 735 # in this case, skip appending to output 733 736 if invstate is not None: 734 sas_entry, _ = self._parse_entry(entry)735 737 sas_entry.meta_data['invstate'] = invstate 736 738 sas_entry.filename = invstate.file -
src/sas/sasgui/perspectives/pr/inversion_state.py
r1fa4f736 ra0e6b1b 472 472 473 473 for entry in entry_list: 474 sas_entry, _ = self._parse_entry(entry) 474 475 prstate = self._parse_prstate(entry) 475 476 #prstate could be None when .svs file is loaded 476 477 #in this case, skip appending to output 477 478 if prstate is not None: 478 sas_entry, _ = self._parse_entry(entry)479 479 sas_entry.meta_data['prstate'] = prstate 480 480 sas_entry.filename = prstate.file
Note: See TracChangeset
for help on using the changeset viewer.