Changes in src/sas/sascalc/dataloader/readers/cansas_reader.py [ae69c690:a78a02f] in sasview
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/sas/sascalc/dataloader/readers/cansas_reader.py
rae69c690 ra78a02f 130 130 self.current_datainfo.meta_data[PREPROCESS] = self.processing_instructions 131 131 self._parse_entry(entry) 132 self.data_cleanup() 132 has_error_dx = self.current_dataset.dx is not None 133 has_error_dy = self.current_dataset.dy is not None 134 self.remove_empty_q_values(has_error_dx=has_error_dx, 135 has_error_dy=has_error_dy) 136 self.send_to_output() # Combine datasets with DataInfo 137 self.current_datainfo = DataInfo() # Reset DataInfo 133 138 except FileContentsException as fc_exc: 134 139 # File doesn't meet schema - try loading with a less strict schema … … 149 154 self.load_file_and_schema(xml_file) # Reload strict schema so we can find where error are in file 150 155 invalid_xml = self.find_invalid_xml() 151 if invalid_xml != "": 152 invalid_xml = INVALID_XML.format(basename + self.extension) + invalid_xml 153 raise DataReaderException(invalid_xml) # Handled by base class 156 invalid_xml = INVALID_XML.format(basename + self.extension) + invalid_xml 157 raise DataReaderException(invalid_xml) # Handled by base class 154 158 except FileContentsException as fc_exc: 155 159 msg = "CanSAS Reader could not load the file {}".format(xml_file) … … 275 279 # I and Q points 276 280 elif tagname == 'I' and isinstance(self.current_dataset, plottable_1D): 277 self.current_dataset.yaxis("Intensity", unit) 281 unit_list = unit.split("|") 282 if len(unit_list) > 1: 283 self.current_dataset.yaxis(unit_list[0].strip(), 284 unit_list[1].strip()) 285 else: 286 self.current_dataset.yaxis("Intensity", unit) 278 287 self.current_dataset.y = np.append(self.current_dataset.y, data_point) 279 288 elif tagname == 'Idev' and isinstance(self.current_dataset, plottable_1D): 280 289 self.current_dataset.dy = np.append(self.current_dataset.dy, data_point) 281 290 elif tagname == 'Q': 282 self.current_dataset.xaxis("Q", unit) 291 unit_list = unit.split("|") 292 if len(unit_list) > 1: 293 self.current_dataset.xaxis(unit_list[0].strip(), 294 unit_list[1].strip()) 295 else: 296 self.current_dataset.xaxis("Q", unit) 283 297 self.current_dataset.x = np.append(self.current_dataset.x, data_point) 284 298 elif tagname == 'Qdev': 285 299 self.current_dataset.dx = np.append(self.current_dataset.dx, data_point) 286 300 elif tagname == 'dQw': 287 self.current_dataset.dxw = np.append(self.current_dataset.dxw, data_point) 301 if self.current_dataset.dxw is None: 302 self.current_dataset.dxw = np.empty(0) 303 self.current_dataset.dxw = np.append(self.current_dataset.dxw, data_point) 288 304 elif tagname == 'dQl': 305 if self.current_dataset.dxl is None: 306 self.current_dataset.dxl = np.empty(0) 289 307 self.current_dataset.dxl = np.append(self.current_dataset.dxl, data_point) 290 308 elif tagname == 'Qmean': … … 294 312 elif tagname == 'Sesans': 295 313 self.current_datainfo.isSesans = bool(data_point) 296 self.current_dataset.xaxis(attr.get('x_axis'),297 attr.get('x_unit'))298 self.current_dataset.yaxis(attr.get('y_axis'),299 attr.get('y_unit'))300 314 elif tagname == 'yacceptance': 301 315 self.current_datainfo.sample.yacceptance = (data_point, unit) … … 498 512 for error in self.errors: 499 513 self.current_datainfo.errors.add(error) 500 self.data_cleanup() 501 self.sort_one_d_data() 502 self.sort_two_d_data() 503 self.reset_data_list() 514 self.errors.clear() 515 self.send_to_output() 504 516 empty = None 505 517 return self.output[0], empty 506 507 def data_cleanup(self):508 """509 Clean up the data sets and refresh everything510 :return: None511 """512 has_error_dx = self.current_dataset.dx is not None513 has_error_dxl = self.current_dataset.dxl is not None514 has_error_dxw = self.current_dataset.dxw is not None515 has_error_dy = self.current_dataset.dy is not None516 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 DataInfo521 self.current_datainfo = DataInfo() # Reset DataInfo522 518 523 519 def _is_call_local(self): … … 646 642 value_unit = local_unit 647 643 except KeyError: 648 # Do not throw an error for loading Sesans data in cansas xml 649 # This is a temporary fix. 650 if local_unit != "A" and local_unit != 'pol': 651 err_msg = "CanSAS reader: unexpected " 652 err_msg += "\"{0}\" unit [{1}]; " 653 err_msg = err_msg.format(tagname, local_unit) 654 err_msg += "expecting [{0}]".format(default_unit) 644 err_msg = "CanSAS reader: unexpected " 645 err_msg += "\"{0}\" unit [{1}]; " 646 err_msg = err_msg.format(tagname, local_unit) 647 err_msg += "expecting [{0}]".format(default_unit) 655 648 value_unit = local_unit 656 649 except: … … 682 675 di_exists = True 683 676 if dqw_exists and not dql_exists: 684 array_size = self.current_dataset.dxw.size 685 self.current_dataset.dxl = np.zeros(array_size) 677 array_size = self.current_dataset.dxw.size - 1 678 self.current_dataset.dxl = np.append(self.current_dataset.dxl, 679 np.zeros([array_size])) 686 680 elif dql_exists and not dqw_exists: 687 array_size = self.current_dataset.dxl.size 688 self.current_dataset.dxw = np.zeros(array_size) 681 array_size = self.current_dataset.dxl.size - 1 682 self.current_dataset.dxw = np.append(self.current_dataset.dxw, 683 np.zeros([array_size])) 689 684 elif not dql_exists and not dqw_exists and not dq_exists: 690 array_size = self.current_dataset.x.size 685 array_size = self.current_dataset.x.size - 1 691 686 self.current_dataset.dx = np.append(self.current_dataset.dx, 692 687 np.zeros([array_size])) 693 688 if not di_exists: 694 array_size = self.current_dataset.y.size 689 array_size = self.current_dataset.y.size - 1 695 690 self.current_dataset.dy = np.append(self.current_dataset.dy, 696 691 np.zeros([array_size])) … … 862 857 node.append(point) 863 858 self.write_node(point, "Q", datainfo.x[i], 864 {'unit': datainfo. x_unit})859 {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 865 860 if len(datainfo.y) >= i: 866 861 self.write_node(point, "I", datainfo.y[i], 867 {'unit': datainfo. y_unit})862 {'unit': datainfo._yaxis + " | " + datainfo._yunit}) 868 863 if datainfo.dy is not None and len(datainfo.dy) > i: 869 864 self.write_node(point, "Idev", datainfo.dy[i], 870 {'unit': datainfo. y_unit})865 {'unit': datainfo._yaxis + " | " + datainfo._yunit}) 871 866 if datainfo.dx is not None and len(datainfo.dx) > i: 872 867 self.write_node(point, "Qdev", datainfo.dx[i], 873 {'unit': datainfo. x_unit})868 {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 874 869 if datainfo.dxw is not None and len(datainfo.dxw) > i: 875 870 self.write_node(point, "dQw", datainfo.dxw[i], 876 {'unit': datainfo. x_unit})871 {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 877 872 if datainfo.dxl is not None and len(datainfo.dxl) > i: 878 873 self.write_node(point, "dQl", datainfo.dxl[i], 879 {'unit': datainfo. x_unit})874 {'unit': datainfo._xaxis + " | " + datainfo._xunit}) 880 875 if datainfo.isSesans: 881 sesans_attrib = {'x_axis': datainfo._xaxis, 882 'y_axis': datainfo._yaxis, 883 'x_unit': datainfo.x_unit, 884 'y_unit': datainfo.y_unit} 885 sesans = self.create_element("Sesans", attrib=sesans_attrib) 876 sesans = self.create_element("Sesans") 886 877 sesans.text = str(datainfo.isSesans) 887 entry_node.append(sesans)888 self.write_node( entry_node, "yacceptance", datainfo.sample.yacceptance[0],878 node.append(sesans) 879 self.write_node(node, "yacceptance", datainfo.sample.yacceptance[0], 889 880 {'unit': datainfo.sample.yacceptance[1]}) 890 self.write_node( entry_node, "zacceptance", datainfo.sample.zacceptance[0],881 self.write_node(node, "zacceptance", datainfo.sample.zacceptance[0], 891 882 {'unit': datainfo.sample.zacceptance[1]}) 892 883
Note: See TracChangeset
for help on using the changeset viewer.