def from_xml_element(self, instrument_dom): """ Read in data from XML @param xml_str: text to read the data from """ #Peak selection self.DataPeakSelectionType = BaseScriptElement.getStringElement(instrument_dom, "peak_selection_type") #Peak from/to pixels self.DataPeakPixels = [BaseScriptElement.getIntElement(instrument_dom, "from_peak_pixels"), BaseScriptElement.getIntElement(instrument_dom, "to_peak_pixels")] #data metadata _tthd_value = BaseScriptElement.getStringElement(instrument_dom, "tthd_value") if (_tthd_value == ''): _tthd_value = 'N/A' self.tthd_value = _tthd_value _ths_value = BaseScriptElement.getStringElement(instrument_dom, "ths_value") if (_ths_value == ''): _ths_value = 'N/A' self.ths_value = _ths_value #low resolution range self.data_x_range_flag = BaseScriptElement.getBoolElement(instrument_dom, "x_range_flag", default=DataSets.data_x_range_flag) self.data_x_range = [BaseScriptElement.getIntElement(instrument_dom, "x_min_pixel"), BaseScriptElement.getIntElement(instrument_dom, "x_max_pixel")] self.norm_x_range_flag = BaseScriptElement.getBoolElement(instrument_dom, "norm_x_range_flag", default=DataSets.norm_x_range_flag) self.norm_x_range = [BaseScriptElement.getIntElement(instrument_dom, "norm_x_min"), BaseScriptElement.getIntElement(instrument_dom, "norm_x_max")] #discrete selection string self.DataPeakDiscreteSelection = BaseScriptElement.getStringElement(instrument_dom, "peak_discrete_selection") #background flag self.DataBackgroundFlag = BaseScriptElement.getBoolElement(instrument_dom, "background_flag", default=DataSets.DataBackgroundFlag) #background from/to pixels self.DataBackgroundRoi = [BaseScriptElement.getIntElement(instrument_dom, "back_roi1_from"), BaseScriptElement.getIntElement(instrument_dom, "back_roi1_to"), BaseScriptElement.getIntElement(instrument_dom, "back_roi2_from"), BaseScriptElement.getIntElement(instrument_dom, "back_roi2_to")] #from TOF and to TOF self.TofRangeFlag = BaseScriptElement.getBoolElement(instrument_dom, "tof_range_flag", default=DataSets.TofRangeFlag) self.DataTofRange = [BaseScriptElement.getFloatElement(instrument_dom, "from_tof_range"), BaseScriptElement.getFloatElement(instrument_dom, "to_tof_range")] self.data_files = BaseScriptElement.getIntList(instrument_dom, "data_sets") #with or without norm self.NormFlag = BaseScriptElement.getBoolElement(instrument_dom, "norm_flag", default=DataSets.NormFlag) #Peak from/to pixels self.NormPeakPixels = [BaseScriptElement.getIntElement(instrument_dom, "norm_from_peak_pixels"), BaseScriptElement.getIntElement(instrument_dom, "norm_to_peak_pixels")] #background flag self.NormBackgroundFlag = BaseScriptElement.getBoolElement(instrument_dom, "norm_background_flag", default=DataSets.NormBackgroundFlag) #background from/to pixels self.NormBackgroundRoi = [BaseScriptElement.getIntElement(instrument_dom, "norm_from_back_pixels"), BaseScriptElement.getIntElement(instrument_dom, "norm_to_back_pixels")] self.norm_file = BaseScriptElement.getIntElement(instrument_dom, "norm_dataset") # Q cut self.q_min = BaseScriptElement.getFloatElement(instrument_dom, "q_min", default=DataSets.q_min) self.q_step = BaseScriptElement.getFloatElement(instrument_dom, "q_step", default=DataSets.q_step) self.auto_q_binning = BaseScriptElement.getBoolElement(instrument_dom, "auto_q_binning", default=False) # Angle offset self.angle_offset = BaseScriptElement.getFloatElement(instrument_dom, "angle_offset", default=DataSets.angle_offset) self.angle_offset_error = BaseScriptElement.getFloatElement(instrument_dom, "angle_offset_error", default=DataSets.angle_offset_error) #scaling factor file and options self.scaling_factor_file = BaseScriptElement.getStringElement(instrument_dom, "scaling_factor_file") self.slits_width_flag = BaseScriptElement.getBoolElement(instrument_dom, "slits_width_flag") self.scaling_factor_file_flag = BaseScriptElement.getBoolElement(instrument_dom, "scaling_factor_flag") #incident medium selected if BaseScriptElement.getStringList(instrument_dom, "incident_medium_list") != []: self.incident_medium_list = BaseScriptElement.getStringList(instrument_dom, "incident_medium_list") self.incident_medium_index_selected = BaseScriptElement.getIntElement(instrument_dom, "incident_medium_index_selected") else: self.incident_medium_list = ['H2O'] self.incident_medium_index_selected = 0 #fourth column (precision) self.fourth_column_flag = BaseScriptElement.getBoolElement(instrument_dom, "fourth_column_flag") self.fourth_column_dq0 = BaseScriptElement.getFloatElement(instrument_dom, "fourth_column_dq0") self.fourth_column_dq_over_q = BaseScriptElement.getFloatElement(instrument_dom, "fourth_column_dq_over_q")
def from_xml(self, xml_str): """ Read in data from XML @param xml_str: text to read the data from """ self.reset() dom = xml.dom.minidom.parseString(xml_str) instrument_dom = dom.getElementsByTagName("Instrument")[0] self.nx_pixels = BaseScriptElement.getIntElement( instrument_dom, "nx_pixels", default=ReductionOptions.nx_pixels) self.ny_pixels = BaseScriptElement.getIntElement( instrument_dom, "ny_pixels", default=ReductionOptions.ny_pixels) self.instrument_name = BaseScriptElement.getStringElement( instrument_dom, "name") self.pixel_size = BaseScriptElement.getFloatElement( instrument_dom, "pixel_size", default=ReductionOptions.pixel_size) self.sample_detector_distance = BaseScriptElement.getFloatElement( instrument_dom, "sample_det_dist", default=ReductionOptions.sample_detector_distance) self.detector_offset = BaseScriptElement.getFloatElement( instrument_dom, "detector_offset", default=ReductionOptions.detector_offset) self.wavelength = BaseScriptElement.getFloatElement( instrument_dom, "wavelength", default=ReductionOptions.wavelength) self.wavelength_spread = BaseScriptElement.getFloatElement( instrument_dom, "wavelength_spread", default=ReductionOptions.wavelength_spread) self.solid_angle_corr = BaseScriptElement.getBoolElement( instrument_dom, "solid_angle_corr", default=ReductionOptions.solid_angle_corr) # Output directory self.use_data_directory = BaseScriptElement.getBoolElement( instrument_dom, "UseDataDirectory", default=ReductionOptions.use_data_directory) self.output_directory = BaseScriptElement.getStringElement( instrument_dom, "OutputDirectory", default=ReductionOptions.output_directory) # Dark current self.dark_current_corr = BaseScriptElement.getBoolElement( instrument_dom, "dark_current_corr", default=ReductionOptions.dark_current_corr) self.dark_current_data = BaseScriptElement.getStringElement( instrument_dom, "dark_current_data") self.n_q_bins = BaseScriptElement.getIntElement( instrument_dom, "n_q_bins", default=ReductionOptions.n_q_bins) self.n_sub_pix = BaseScriptElement.getIntElement( instrument_dom, "n_sub_pix", default=ReductionOptions.n_sub_pix) self.log_binning = BaseScriptElement.getBoolElement( instrument_dom, "log_binning", default=ReductionOptions.log_binning) self.align_log_with_decades = BaseScriptElement.getBoolElement( instrument_dom, "align_log_with_decades", default=ReductionOptions.align_log_with_decades) self.error_weighting = BaseScriptElement.getBoolElement( instrument_dom, "error_weighting", default=ReductionOptions.error_weighting) self.n_wedges = BaseScriptElement.getIntElement( instrument_dom, "n_wedges", default=ReductionOptions.n_wedges) self.wedge_angle = BaseScriptElement.getFloatElement( instrument_dom, "wedge_angle", default=ReductionOptions.wedge_angle) self.wedge_offset = BaseScriptElement.getFloatElement( instrument_dom, "wedge_offset", default=ReductionOptions.wedge_offset) self.normalization = BaseScriptElement.getIntElement( instrument_dom, "normalization", default=ReductionOptions.normalization) # Mask element_list = dom.getElementsByTagName("Mask") if len(element_list) > 0: mask_dom = element_list[0] self.top = BaseScriptElement.getIntElement( mask_dom, "mask_top", default=ReductionOptions.top) self.bottom = BaseScriptElement.getIntElement( mask_dom, "mask_bottom", default=ReductionOptions.bottom) self.right = BaseScriptElement.getIntElement( mask_dom, "mask_right", default=ReductionOptions.right) self.left = BaseScriptElement.getIntElement( mask_dom, "mask_left", default=ReductionOptions.left) self.masked_side = BaseScriptElement.getStringElement( mask_dom, "mask_side", default=ReductionOptions.masked_side) self.shapes = [] shapes_dom_list = mask_dom.getElementsByTagName("Shapes") if len(shapes_dom_list) > 0: shapes_dom = shapes_dom_list[0] for item in shapes_dom.getElementsByTagName("rect"): x_min = float(item.getAttribute("x_min")) x_max = float(item.getAttribute("x_max")) y_min = float(item.getAttribute("y_min")) y_max = float(item.getAttribute("y_max")) self.shapes.append( ReductionOptions.RectangleMask(x_min, x_max, y_min, y_max)) self.detector_ids = BaseScriptElement.getIntList(mask_dom, "DetectorIDs", default=[]) self.mask_file = BaseScriptElement.getStringElement( mask_dom, "mask_file") self.use_mask_file = BaseScriptElement.getBoolElement( mask_dom, "use_mask_file", default=ReductionOptions.use_mask_file) # Absolute scaling element_list = dom.getElementsByTagName("AbsScale") if len(element_list) > 0: scale_dom = element_list[0] self.manual_beam_diam = BaseScriptElement.getBoolElement( scale_dom, "manual_beam_diam", default=ReductionOptions.manual_beam_diam) self.scaling_factor = BaseScriptElement.getFloatElement( scale_dom, "scaling_factor", default=ReductionOptions.scaling_factor) self.calculate_scale = BaseScriptElement.getBoolElement( scale_dom, "calculate_scale", default=ReductionOptions.calculate_scale) self.scaling_direct_file = BaseScriptElement.getStringElement( scale_dom, "scaling_direct_file") self.scaling_att_trans = BaseScriptElement.getFloatElement( scale_dom, "scaling_att_trans", default=ReductionOptions.scaling_att_trans) self.scaling_beam_diam = BaseScriptElement.getFloatElement( scale_dom, "scaling_beam_diam", default=ReductionOptions.scaling_beam_diam)
def from_xml_element(self, instrument_dom): """ Read in data from XML @param xml_str: text to read the data from """ #Peak selection self.DataPeakSelectionType = BaseScriptElement.getStringElement( instrument_dom, "peak_selection_type") #Peak from/to pixels self.DataPeakPixels = [ BaseScriptElement.getIntElement(instrument_dom, "from_peak_pixels"), BaseScriptElement.getIntElement(instrument_dom, "to_peak_pixels") ] #data metadata _tthd_value = BaseScriptElement.getStringElement( instrument_dom, "tthd_value") if _tthd_value == '': _tthd_value = 'N/A' self.tthd_value = _tthd_value _ths_value = BaseScriptElement.getStringElement( instrument_dom, "ths_value") if _ths_value == '': _ths_value = 'N/A' self.ths_value = _ths_value #low resolution range self.data_x_range_flag = BaseScriptElement.getBoolElement( instrument_dom, "x_range_flag", default=DataSets.data_x_range_flag) self.data_x_range = [ BaseScriptElement.getIntElement(instrument_dom, "x_min_pixel"), BaseScriptElement.getIntElement(instrument_dom, "x_max_pixel") ] self.norm_x_range_flag = BaseScriptElement.getBoolElement( instrument_dom, "norm_x_range_flag", default=DataSets.norm_x_range_flag) self.norm_x_range = [ BaseScriptElement.getIntElement(instrument_dom, "norm_x_min"), BaseScriptElement.getIntElement(instrument_dom, "norm_x_max") ] #discrete selection string self.DataPeakDiscreteSelection = BaseScriptElement.getStringElement( instrument_dom, "peak_discrete_selection") #background flag self.DataBackgroundFlag = BaseScriptElement.getBoolElement( instrument_dom, "background_flag", default=DataSets.DataBackgroundFlag) #background from/to pixels self.DataBackgroundRoi = [ BaseScriptElement.getIntElement(instrument_dom, "back_roi1_from"), BaseScriptElement.getIntElement(instrument_dom, "back_roi1_to"), BaseScriptElement.getIntElement(instrument_dom, "back_roi2_from"), BaseScriptElement.getIntElement(instrument_dom, "back_roi2_to") ] #from TOF and to TOF self.TofRangeFlag = BaseScriptElement.getBoolElement( instrument_dom, "tof_range_flag", default=DataSets.TofRangeFlag) self.DataTofRange = [ BaseScriptElement.getFloatElement(instrument_dom, "from_tof_range"), BaseScriptElement.getFloatElement(instrument_dom, "to_tof_range") ] self.data_files = BaseScriptElement.getIntList(instrument_dom, "data_sets") #with or without norm self.NormFlag = BaseScriptElement.getBoolElement( instrument_dom, "norm_flag", default=DataSets.NormFlag) #Peak from/to pixels self.NormPeakPixels = [ BaseScriptElement.getIntElement(instrument_dom, "norm_from_peak_pixels"), BaseScriptElement.getIntElement(instrument_dom, "norm_to_peak_pixels") ] #background flag self.NormBackgroundFlag = BaseScriptElement.getBoolElement( instrument_dom, "norm_background_flag", default=DataSets.NormBackgroundFlag) #background from/to pixels self.NormBackgroundRoi = [ BaseScriptElement.getIntElement(instrument_dom, "norm_from_back_pixels"), BaseScriptElement.getIntElement(instrument_dom, "norm_to_back_pixels") ] self.norm_file = BaseScriptElement.getIntElement( instrument_dom, "norm_dataset") # Q cut self.q_min = BaseScriptElement.getFloatElement(instrument_dom, "q_min", default=DataSets.q_min) self.q_step = BaseScriptElement.getFloatElement( instrument_dom, "q_step", default=DataSets.q_step) self.auto_q_binning = BaseScriptElement.getBoolElement( instrument_dom, "auto_q_binning", default=False) # overlap_lowest_error self.overlap_lowest_error = BaseScriptElement.getBoolElement( instrument_dom, "overlap_lowest_error", default=True) self.overlap_mean_value = BaseScriptElement.getBoolElement( instrument_dom, "overlap_mean_value", default=False) # Angle offset self.angle_offset = BaseScriptElement.getFloatElement( instrument_dom, "angle_offset", default=DataSets.angle_offset) self.angle_offset_error = BaseScriptElement.getFloatElement( instrument_dom, "angle_offset_error", default=DataSets.angle_offset_error) #scaling factor file and options self.scaling_factor_file = BaseScriptElement.getStringElement( instrument_dom, "scaling_factor_file") self.slits_width_flag = BaseScriptElement.getBoolElement( instrument_dom, "slits_width_flag") self.scaling_factor_file_flag = BaseScriptElement.getBoolElement( instrument_dom, "scaling_factor_flag") # geometry correction switch self.geometry_correction_switch = BaseScriptElement.getBoolElement( instrument_dom, "geometry_correction_switch") #incident medium selected if BaseScriptElement.getStringList(instrument_dom, "incident_medium_list") != []: self.incident_medium_list = BaseScriptElement.getStringList( instrument_dom, "incident_medium_list") self.incident_medium_index_selected = BaseScriptElement.getIntElement( instrument_dom, "incident_medium_index_selected") else: self.incident_medium_list = ['H2O'] self.incident_medium_index_selected = 0 #fourth column (precision) self.fourth_column_flag = BaseScriptElement.getBoolElement( instrument_dom, "fourth_column_flag") self.fourth_column_dq0 = BaseScriptElement.getFloatElement( instrument_dom, "fourth_column_dq0") self.fourth_column_dq_over_q = BaseScriptElement.getFloatElement( instrument_dom, "fourth_column_dq_over_q") # Primary fraction self.clocking_from = BaseScriptElement.getIntElement(instrument_dom, "clocking_from", default=None) self.clocking_to = BaseScriptElement.getIntElement(instrument_dom, "clocking_to", default=None)
def from_xml(self, xml_str): """ Read in data from XML @param xml_str: text to read the data from """ self.reset() dom = xml.dom.minidom.parseString(xml_str) instrument_dom = dom.getElementsByTagName("Instrument")[0] self.nx_pixels = BaseScriptElement.getIntElement(instrument_dom, "nx_pixels", default=ReductionOptions.nx_pixels) self.ny_pixels = BaseScriptElement.getIntElement(instrument_dom, "ny_pixels", default=ReductionOptions.ny_pixels) self.instrument_name = BaseScriptElement.getStringElement( instrument_dom, "name") self.pixel_size = BaseScriptElement.getFloatElement(instrument_dom, "pixel_size", default=ReductionOptions.pixel_size) self.sample_detector_distance = BaseScriptElement.getFloatElement(instrument_dom, "sample_det_dist", default=ReductionOptions.sample_detector_distance) self.detector_offset = BaseScriptElement.getFloatElement(instrument_dom, "detector_offset", default=ReductionOptions.detector_offset) self.wavelength = BaseScriptElement.getFloatElement(instrument_dom, "wavelength", default=ReductionOptions.wavelength) self.wavelength_spread = BaseScriptElement.getFloatElement(instrument_dom, "wavelength_spread", default=ReductionOptions.wavelength_spread) self.solid_angle_corr = BaseScriptElement.getBoolElement(instrument_dom, "solid_angle_corr", default=ReductionOptions.solid_angle_corr) # Output directory self.use_data_directory = BaseScriptElement.getBoolElement(instrument_dom, "UseDataDirectory", default=ReductionOptions.use_data_directory) self.output_directory = BaseScriptElement.getStringElement(instrument_dom, "OutputDirectory", default=ReductionOptions.output_directory) # Dark current self.dark_current_corr = BaseScriptElement.getBoolElement(instrument_dom, "dark_current_corr", default=ReductionOptions.dark_current_corr) self.dark_current_data = BaseScriptElement.getStringElement( instrument_dom, "dark_current_data") self.n_q_bins = BaseScriptElement.getIntElement(instrument_dom, "n_q_bins", default=ReductionOptions.n_q_bins) self.n_sub_pix = BaseScriptElement.getIntElement(instrument_dom, "n_sub_pix", default=ReductionOptions.n_sub_pix) self.log_binning = BaseScriptElement.getBoolElement(instrument_dom, "log_binning", default=ReductionOptions.log_binning) self.align_log_with_decades = BaseScriptElement.getBoolElement(instrument_dom, "align_log_with_decades", default=ReductionOptions.align_log_with_decades) self.error_weighting = BaseScriptElement.getBoolElement(instrument_dom, "error_weighting", default=ReductionOptions.error_weighting) self.n_wedges = BaseScriptElement.getIntElement(instrument_dom, "n_wedges", default=ReductionOptions.n_wedges) self.wedge_angle = BaseScriptElement.getFloatElement(instrument_dom, "wedge_angle", default=ReductionOptions.wedge_angle) self.wedge_offset = BaseScriptElement.getFloatElement(instrument_dom, "wedge_offset", default=ReductionOptions.wedge_offset) self.normalization = BaseScriptElement.getIntElement(instrument_dom, "normalization", default=ReductionOptions.normalization) # Mask element_list = dom.getElementsByTagName("Mask") if len(element_list) > 0: mask_dom = element_list[0] self.top = BaseScriptElement.getIntElement( mask_dom, "mask_top", default=ReductionOptions.top) self.bottom = BaseScriptElement.getIntElement( mask_dom, "mask_bottom", default=ReductionOptions.bottom) self.right = BaseScriptElement.getIntElement( mask_dom, "mask_right", default=ReductionOptions.right) self.left = BaseScriptElement.getIntElement( mask_dom, "mask_left", default=ReductionOptions.left) self.masked_side = BaseScriptElement.getStringElement( mask_dom, "mask_side", default=ReductionOptions.masked_side) self.shapes = [] shapes_dom_list = mask_dom.getElementsByTagName("Shapes") if len(shapes_dom_list) > 0: shapes_dom = shapes_dom_list[0] for item in shapes_dom.getElementsByTagName("rect"): x_min = float(item.getAttribute("x_min")) x_max = float(item.getAttribute("x_max")) y_min = float(item.getAttribute("y_min")) y_max = float(item.getAttribute("y_max")) self.shapes.append(ReductionOptions.RectangleMask( x_min, x_max, y_min, y_max)) self.detector_ids = BaseScriptElement.getIntList( mask_dom, "DetectorIDs", default=[]) self.mask_file = BaseScriptElement.getStringElement( mask_dom, "mask_file") self.use_mask_file = BaseScriptElement.getBoolElement(mask_dom, "use_mask_file", default=ReductionOptions.use_mask_file) # Absolute scaling element_list = dom.getElementsByTagName("AbsScale") if len(element_list) > 0: scale_dom = element_list[0] self.manual_beam_diam = BaseScriptElement.getBoolElement(scale_dom, "manual_beam_diam", default=ReductionOptions.manual_beam_diam) self.scaling_factor = BaseScriptElement.getFloatElement(scale_dom, "scaling_factor", default=ReductionOptions.scaling_factor) self.calculate_scale = BaseScriptElement.getBoolElement(scale_dom, "calculate_scale", default=ReductionOptions.calculate_scale) self.scaling_direct_file = BaseScriptElement.getStringElement( scale_dom, "scaling_direct_file") self.scaling_att_trans = BaseScriptElement.getFloatElement(scale_dom, "scaling_att_trans", default=ReductionOptions.scaling_att_trans) self.scaling_beam_diam = BaseScriptElement.getFloatElement(scale_dom, "scaling_beam_diam", default=ReductionOptions.scaling_beam_diam)
def from_xml(self, xml_str): """ Read in data from XML @param xml_str: text to read the data from """ self.reset() dom = xml.dom.minidom.parseString(xml_str) # Get Mantid version mtd_version = BaseScriptElement.getMantidBuildVersion(dom) instrument_dom = dom.getElementsByTagName("Instrument")[0] self.nx_pixels = BaseScriptElement.getIntElement(instrument_dom, "nx_pixels", default=ReductionOptions.nx_pixels) self.ny_pixels = BaseScriptElement.getIntElement(instrument_dom, "ny_pixels", default=ReductionOptions.ny_pixels) self.instrument_name = BaseScriptElement.getStringElement(instrument_dom, "name") self.pixel_size = BaseScriptElement.getFloatElement(instrument_dom, "pixel_size", default=ReductionOptions.pixel_size) self.sample_detector_distance = BaseScriptElement.getFloatElement(instrument_dom, "sample_det_dist", default=ReductionOptions.sample_detector_distance) self.detector_offset = BaseScriptElement.getFloatElement(instrument_dom, "detector_offset", default=ReductionOptions.detector_offset) self.wavelength = BaseScriptElement.getFloatElement(instrument_dom, "wavelength", default=ReductionOptions.wavelength) self.wavelength_spread = BaseScriptElement.getFloatElement(instrument_dom, "wavelength_spread", default=ReductionOptions.wavelength_spread) self.solid_angle_corr = BaseScriptElement.getBoolElement(instrument_dom, "solid_angle_corr", default = ReductionOptions.solid_angle_corr) # Output directory self.use_data_directory = BaseScriptElement.getBoolElement(instrument_dom, "UseDataDirectory", default = ReductionOptions.use_data_directory) self.output_directory = BaseScriptElement.getStringElement(instrument_dom, "OutputDirectory", default = ReductionOptions.output_directory) # Dark current - take care of backward compatibility if mtd_version!=0 and mtd_version<BaseScriptElement.UPDATE_1_CHANGESET_CUTOFF: bck_entries = dom.getElementsByTagName("Background") if len(bck_entries)>0: self.dark_current_corr = BaseScriptElement.getBoolElement(bck_entries[0], "dark_current_corr", default = ReductionOptions.dark_current_corr) self.dark_current_data = BaseScriptElement.getStringElement(bck_entries[0], "dark_current_file") else: self.dark_current_corr = BaseScriptElement.getBoolElement(instrument_dom, "dark_current_corr", default = ReductionOptions.dark_current_corr) self.dark_current_data = BaseScriptElement.getStringElement(instrument_dom, "dark_current_data") self.n_q_bins = BaseScriptElement.getIntElement(instrument_dom, "n_q_bins", default=ReductionOptions.n_q_bins) self.n_sub_pix = BaseScriptElement.getIntElement(instrument_dom, "n_sub_pix", default=ReductionOptions.n_sub_pix) self.log_binning = BaseScriptElement.getBoolElement(instrument_dom, "log_binning", default = ReductionOptions.log_binning) self.normalization = BaseScriptElement.getIntElement(instrument_dom, "normalization", default=ReductionOptions.normalization) # Mask - take care of backward compatibility if mtd_version!=0 and mtd_version<BaseScriptElement.UPDATE_1_CHANGESET_CUTOFF: self.top = BaseScriptElement.getIntElement(instrument_dom, "mask_top", default=ReductionOptions.top) self.bottom = BaseScriptElement.getIntElement(instrument_dom, "mask_bottom", default=ReductionOptions.bottom) self.right = BaseScriptElement.getIntElement(instrument_dom, "mask_right", default=ReductionOptions.right) self.left = BaseScriptElement.getIntElement(instrument_dom, "mask_left", default=ReductionOptions.left) else: element_list = dom.getElementsByTagName("Mask") if len(element_list)>0: mask_dom = element_list[0] self.top = BaseScriptElement.getIntElement(mask_dom, "mask_top", default=ReductionOptions.top) self.bottom = BaseScriptElement.getIntElement(mask_dom, "mask_bottom", default=ReductionOptions.bottom) self.right = BaseScriptElement.getIntElement(mask_dom, "mask_right", default=ReductionOptions.right) self.left = BaseScriptElement.getIntElement(mask_dom, "mask_left", default=ReductionOptions.left) self.shapes = [] shapes_dom_list = mask_dom.getElementsByTagName("Shapes") if len(shapes_dom_list)>0: shapes_dom = shapes_dom_list[0] for item in shapes_dom.getElementsByTagName("rect"): x_min = float(item.getAttribute("x_min")) x_max = float(item.getAttribute("x_max")) y_min = float(item.getAttribute("y_min")) y_max = float(item.getAttribute("y_max")) self.shapes.append(ReductionOptions.RectangleMask(x_min, x_max, y_min, y_max)) self.detector_ids = BaseScriptElement.getIntList(mask_dom, "DetectorIDs", default=[]) self.mask_file = BaseScriptElement.getStringElement(mask_dom, "mask_file") self.use_mask_file = BaseScriptElement.getBoolElement(mask_dom, "use_mask_file", default = ReductionOptions.use_mask_file) # Absolute scaling element_list = dom.getElementsByTagName("AbsScale") if len(element_list)>0: scale_dom = element_list[0] self.manual_beam_diam = BaseScriptElement.getBoolElement(scale_dom, "manual_beam_diam", default = ReductionOptions.manual_beam_diam) self.scaling_factor = BaseScriptElement.getFloatElement(scale_dom, "scaling_factor", default=ReductionOptions.scaling_factor) self.calculate_scale = BaseScriptElement.getBoolElement(scale_dom, "calculate_scale", default = ReductionOptions.calculate_scale) self.scaling_direct_file = BaseScriptElement.getStringElement(scale_dom, "scaling_direct_file") self.scaling_att_trans = BaseScriptElement.getFloatElement(scale_dom, "scaling_att_trans", default=ReductionOptions.scaling_att_trans) self.scaling_beam_diam = BaseScriptElement.getFloatElement(scale_dom, "scaling_beam_diam", default=ReductionOptions.scaling_beam_diam)