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) # Sensitivity correction element_list = dom.getElementsByTagName("Sensitivity") if len(element_list)>0: instrument_dom = element_list[0] self.sensitivity_corr = BaseScriptElement.getBoolElement(instrument_dom, "sensitivity_corr", default = Detector.sensitivity_corr) self.sensitivity_data = BaseScriptElement.getStringElement(instrument_dom, "sensitivity_data") self.sensitivity_dark = BaseScriptElement.getStringElement(instrument_dom, "sensitivity_dark") self.use_sample_dark = BaseScriptElement.getBoolElement(instrument_dom, "use_sample_dark", default = Detector.use_sample_dark) self.min_sensitivity = BaseScriptElement.getFloatElement(instrument_dom, "sensitivity_min", default=Detector.min_sensitivity) self.max_sensitivity = BaseScriptElement.getFloatElement(instrument_dom, "sensitivity_max", default=Detector.max_sensitivity) self.use_sample_beam_center = BaseScriptElement.getBoolElement(instrument_dom, "use_sample_beam_center", default = Detector.use_sample_beam_center) beam_center_list = instrument_dom.getElementsByTagName("FloodBeamFinder") if len(beam_center_list)>0: beam_finder_dom = beam_center_list[0] self.flood_x_position = BaseScriptElement.getFloatElement(beam_finder_dom, "x", default=Detector.flood_x_position) self.flood_y_position = BaseScriptElement.getFloatElement(beam_finder_dom, "y", default=Detector.flood_y_position) self.flood_use_finder = BaseScriptElement.getBoolElement(beam_finder_dom, "use_finder", default = Detector.flood_use_finder) self.flood_beam_file = BaseScriptElement.getStringElement(beam_finder_dom, "beam_file") self.flood_beam_radius = BaseScriptElement.getFloatElement(beam_finder_dom, "beam_radius", default=Detector.flood_beam_radius) self.flood_use_direct_beam = BaseScriptElement.getBoolElement(beam_finder_dom, "use_direct_beam", default = Detector.flood_use_direct_beam) element_list = dom.getElementsByTagName("BeamFinder") if len(element_list)>0: beam_finder_dom = element_list[0] self.x_position = BaseScriptElement.getFloatElement(beam_finder_dom, "x", default=Detector.x_position) self.y_position = BaseScriptElement.getFloatElement(beam_finder_dom, "y", default=Detector.y_position) self.use_finder = BaseScriptElement.getBoolElement(beam_finder_dom, "use_finder", default = Detector.use_finder) self.beam_file = BaseScriptElement.getStringElement(beam_finder_dom, "beam_file") self.beam_radius = BaseScriptElement.getFloatElement(beam_finder_dom, "beam_radius", default=Detector.beam_radius) self.use_direct_beam = BaseScriptElement.getBoolElement(beam_finder_dom, "use_direct_beam", default = Detector.use_direct_beam)
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) element_list = dom.getElementsByTagName("Transmission") if len(element_list)>0: instrument_dom = element_list[0] self.transmission = BaseScriptElement.getFloatElement(instrument_dom, "trans", default=SampleData.transmission) self.transmission_spread = BaseScriptElement.getFloatElement(instrument_dom, "trans_spread", default=SampleData.transmission_spread) self.calculate_transmission = BaseScriptElement.getBoolElement(instrument_dom, "calculate_trans", default = SampleData.calculate_transmission) self.theta_dependent = BaseScriptElement.getBoolElement(instrument_dom, "theta_dependent", default = SampleData.theta_dependent) self.dark_current = BaseScriptElement.getStringElement(instrument_dom, "dark_current") for m in self.option_list: method = m() if method.find(instrument_dom): method.from_xml(instrument_dom) self.calculation_method = method break # Data file section - take care of backward compatibility if mtd_version!=0 and mtd_version<BaseScriptElement.UPDATE_1_CHANGESET_CUTOFF: element_list = dom.getElementsByTagName("Instrument") else: element_list = dom.getElementsByTagName("SampleData") if len(element_list)>0: sample_data_dom = element_list[0] self.data_files = BaseScriptElement.getStringList(sample_data_dom, "data_file") self.sample_thickness = BaseScriptElement.getFloatElement(sample_data_dom, "sample_thickness", default=SampleData.sample_thickness)
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 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 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)