示例#1
0
    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("Normalization")
        if len(element_list)>0:
            instrument_dom = element_list[0]

            #Peak from/to pixels
            self.NormPeakPixels[0] = BaseScriptElement.getStringElement(instrument_dom, "from_peak_pixels")
            self.NormPeakPixels[1] = BaseScriptElement.getStringElement(instrument_dom, "to_peak_pixels")

            #background flag
            self.NormBackgroundFlag = BaseScriptElement.getBoolElement(instrument_dom, "background_flag")
            
            #background from/to pixels
            self.NormBackgroundRoi[0] = BaseScriptElement.getStringElement(instrument_dom, "from_back_pixels")
            self.NormBackgroundRoi[1] = BaseScriptElement.getStringElement(instrument_dom, "to_back_pixels")
示例#2
0
    def from_xml(self, xml_str):
        """ 'Public' method to read in data from XML
            @param xml_str: text to read the data from
        """       
        dom = xml.dom.minidom.parseString(xml_str)
        element_list = dom.getElementsByTagName("AdvancedSetup")
        if len(element_list)>0:
            instrument_dom = element_list[0]

            self.unwrapref = getFloatElement(instrument_dom, "unwrapref",
                                             AdvancedSetupScript.unwrapref)

            self.lowresref = getFloatElement(instrument_dom, "lowresref",
                                             AdvancedSetupScript.lowresref)

            self.cropwavelengthmin = getFloatElement(instrument_dom, "cropwavelengthmin",
                                                     AdvancedSetupScript.cropwavelengthmin)


            self.removepropmppulsewidth = getFloatElement(instrument_dom, "removepromptpulsewidth",
                                                          AdvancedSetupScript.removepropmppulsewidth)

            try:
                self.maxchunksize = BaseScriptElement.getIntElement(instrument_dom,
                    "maxchunksize", default=AdvancedSetupScript.maxchunksize)
            except ValueError:
                self.maxchunksize = AdvancedSetupScript.maxchunksize

            self.filterbadpulses = getFloatElement(instrument_dom,
                    "filterbadpulses", AdvancedSetupScript.filterbadpulses)

            self.pushdatapositive = BaseScriptElement.getStringElement(instrument_dom,
                    "pushdatapositive", default=AdvancedSetupScript.pushdatapositive)

            self.stripvanadiumpeaks = getBooleanElement(instrument_dom, 
                    "stripvanadiumpeaks", AdvancedSetupScript.stripvanadiumpeaks)

            self.vanadiumfwhm = getFloatElement(instrument_dom, "vanadiumfwhm",
                                                AdvancedSetupScript.vanadiumfwhm)

            self.vanadiumpeaktol = getFloatElement(instrument_dom, "vanadiumpeaktol",
                                                   AdvancedSetupScript.vanadiumpeaktol)

            self.vanadiumsmoothparams = BaseScriptElement.getStringElement(instrument_dom,
                "vanadiumsmoothparams", default=AdvancedSetupScript.vanadiumsmoothparams)

            self.extension = BaseScriptElement.getStringElement(instrument_dom, 
                    "extension", default=AdvancedSetupScript.extension)

            self.preserveevents = getBooleanElement(instrument_dom, "preserveevents",
                                                    default=AdvancedSetupScript.preserveevents)

            self.outputfileprefix = BaseScriptElement.getStringElement(instrument_dom,
                    "outputfileprefix", default = AdvancedSetupScript.outputfileprefix)

            self.scaledata = getFloatElement(instrument_dom, "scaledata",
                                             AdvancedSetupScript.scaledata)

            return
    def from_xml(self, xml_str):
        """
            Read in data from XML
            @param xml_str: text to read the data from
        """
        self.reset()
        super(ReductionOptions, self).from_xml(xml_str)

        dom = xml.dom.minidom.parseString(xml_str)

        # TOF cutoff and correction
        element_list = dom.getElementsByTagName("TOFcorr")
        if len(element_list) > 0:
            tof_dom = element_list[0]

            self.use_config_cutoff = BaseScriptElement.getBoolElement(
                tof_dom,
                "use_config_cutoff",
                default=ReductionOptions.use_config_cutoff)
            self.correct_for_flight_path = BaseScriptElement.getBoolElement(
                tof_dom,
                "perform_flight_path_corr",
                default=ReductionOptions.correct_for_flight_path)
            self.low_TOF_cut = BaseScriptElement.getFloatElement(
                tof_dom, "low_tof_cut", default=ReductionOptions.low_TOF_cut)
            self.high_TOF_cut = BaseScriptElement.getFloatElement(
                tof_dom, "high_tof_cut", default=ReductionOptions.high_TOF_cut)

        # Mask
        self.use_config_mask = BaseScriptElement.getBoolElement(
            dom, "UseConfigMask", default=ReductionOptions.use_config_mask)

        # Resolution
        self.compute_resolution = BaseScriptElement.getBoolElement(
            dom,
            "ComputeResolution",
            default=ReductionOptions.compute_resolution)
        self.sample_aperture_diameter = BaseScriptElement.getFloatElement(
            dom,
            "SampleApertureDiameter",
            default=ReductionOptions.sample_aperture_diameter)

        # TOF correction
        self.perform_TOF_correction = BaseScriptElement.getBoolElement(
            dom,
            "PerformTOFCorrection",
            default=ReductionOptions.perform_TOF_correction)
        # Normalization option
        self.use_beam_monitor = BaseScriptElement.getBoolElement(
            dom, "UseBeamMonitor", default=ReductionOptions.use_beam_monitor)
        self.beam_monitor_reference = BaseScriptElement.getStringElement(
            dom,
            "BeamMonitorRef",
            default=ReductionOptions.beam_monitor_reference)
示例#4
0
    def from_setup_info(self, xml_str):
        """
            Read in data from XML using the string representation of the setup algorithm used
            to prepare the reduction properties.
            @param xml_str: text to read the data from
        """
        self.reset()
        super(Background, self).from_setup_info(xml_str)

        (alg, _) = BaseScriptElement.getAlgorithmFromXML(xml_str)
        self.combine_transmission_frames = BaseScriptElement.getPropertyValue(alg, "BckFitFramesTogether",
                                                                              default=SampleData.combine_transmission_frames)
 def from_xml(self, dom):
     """
         Read in data from XML
         @param dom: text to read the data from
     """
     element_list = dom.getElementsByTagName("DirectBeam")
     if len(element_list)>0:
         instrument_dom = element_list[0]
         self.sample_file = BaseScriptElement.getStringElement(instrument_dom, "sample_file")
         self.direct_beam = BaseScriptElement.getStringElement(instrument_dom, "direct_beam")
         self.beam_radius = BaseScriptElement.getFloatElement(instrument_dom, "beam_radius",
                                                              default=SampleData.DirectBeam.beam_radius)
示例#6
0
 def from_xml(self, dom):
     """
         Read in data from XML
         @param dom: text to read the data from
     """
     element_list = dom.getElementsByTagName("DirectBeam")
     if len(element_list)>0:
         instrument_dom = element_list[0]
         self.sample_file = BaseScriptElement.getStringElement(instrument_dom, "sample_file")
         self.direct_beam = BaseScriptElement.getStringElement(instrument_dom, "direct_beam")
         self.beam_radius = BaseScriptElement.getFloatElement(instrument_dom, "beam_radius",
                                                              default=SampleData.DirectBeam.beam_radius)
示例#7
0
        def from_setup_info(self, xml_str):
            """
                Read in data from XML using the string representation of the setup algorithm used
                to prepare the reduction properties.
                @param xml_str: text to read the data from
            """
            self.reset()
            (alg, _) = BaseScriptElement.getAlgorithmFromXML(xml_str)

            self.sample_file = BaseScriptElement.getPropertyValue(alg, "BckTransmissionSampleDataFile", default='')
            self.direct_beam = BaseScriptElement.getPropertyValue(alg, "BckTransmissionEmptyDataFile", default='')
            self.beam_radius = BaseScriptElement.getPropertyValue(alg, "BckTransmissionBeamRadius",
                                                                  default=SampleData.DirectBeam.beam_radius)
示例#8
0
    def from_setup_info(self, xml_str):
        """
            Read in data from XML using the string representation of the setup algorithm used
            to prepare the reduction properties.
            @param xml_str: text to read the data from
        """
        self.reset()
        from mantid.api import Algorithm
        dom = xml.dom.minidom.parseString(xml_str)

        process_dom = dom.getElementsByTagName("SASProcess")[0]
        setup_alg_str = BaseScriptElement.getStringElement(process_dom, 'SetupInfo')
        alg=Algorithm.fromString(str(setup_alg_str))

        # Transmission
        self.transmission = BaseScriptElement.getPropertyValue(alg, "TransmissionValue", default=SampleData.transmission)
        self.transmission_spread = BaseScriptElement.getPropertyValue(alg, "TransmissionError", default=SampleData.transmission_spread)
        self.dark_current = BaseScriptElement.getPropertyValue(alg, "TransmissionDarkCurrentFile", default='')
        self.theta_dependent = BaseScriptElement.getPropertyValue(alg, "ThetaDependentTransmission",
                                                                  default = SampleData.theta_dependent)
        self.sample_thickness = BaseScriptElement.getPropertyValue(alg, "SampleThickness",
                                                                   default = SampleData.sample_thickness)

        trans_method = BaseScriptElement.getPropertyValue(alg, "TransmissionMethod", default='Value')

        self.calculate_transmission = trans_method in ['DirectBeam', 'BeamSpreader']
        if trans_method=='DirectBeam':
            self.calculation_method = SampleData.DirectBeam()
            self.calculation_method.from_setup_info(xml_str)
        elif trans_method=='BeamSpreader':
            self.calculation_method = SampleData.BeamSpreader()
            self.calculation_method.from_setup_info(xml_str)

        # Data file section
        self.data_files = [BaseScriptElement.getStringElement(process_dom, 'Filename', '')]
示例#9
0
 def to_xml(self):
     """
         Create XML from the current data.
     """
     xml_str = super(Background, self).to_xml()
     return BaseScriptElement.addElementToSection(xml_str, "Background", "combine_transmission_frames",
                                                  str(self.combine_transmission_frames))
示例#10
0
 def to_xml(self):
     """
         Create XML from the current data.
     """
     xml_str = super(SampleData, self).to_xml()
     return BaseScriptElement.addElementToSection(xml_str, "Transmission", "combine_transmission_frames",
                                                  str(self.combine_transmission_frames))
    def getStringElement(self, instrument_dom, xmlname, default):
        """ Get a float value from xml
        """
        value = BaseScriptElement.getStringElement(instrument_dom, xmlname,
                                                   default)

        return value
示例#12
0
    def getStringElement(self, instrument_dom, xmlname, default):
        """ Get a float value from xml
        """
        value = BaseScriptElement.getStringElement(instrument_dom, xmlname,
                                                   default)

        return value
示例#13
0
    def from_setup_info(self, xml_str):
        """
            Read in data from XML using the string representation of the setup algorithm used
            to prepare the reduction properties.
            @param xml_str: text to read the data from
        """
        self.reset()
        super(SampleData, self).from_setup_info(xml_str)

        from mantid.api import Algorithm
        dom = xml.dom.minidom.parseString(xml_str)

        process_dom = dom.getElementsByTagName("SASProcess")[0]
        setup_alg_str = BaseScriptElement.getStringElement(process_dom, 'SetupInfo')
        alg=Algorithm.fromString(str(setup_alg_str))
        self.combine_transmission_frames = BaseScriptElement.getPropertyValue(alg, "FitFramesTogether",
                                                                              default=SampleData.combine_transmission_frames)
示例#14
0
    def from_setup_info(self, xml_str):
        """
            Read in data from XML using the string representation of the setup algorithm used
            to prepare the reduction properties.
            @param xml_str: text to read the data from
        """
        self.reset()
        alg, filename = BaseScriptElement.getAlgorithmFromXML(xml_str)

        # Transmission
        self.transmission = BaseScriptElement.getPropertyValue(alg, "TransmissionValue", default=SampleData.transmission)
        self.transmission_spread = BaseScriptElement.getPropertyValue(alg, "TransmissionError", default=SampleData.transmission_spread)
        self.dark_current = BaseScriptElement.getPropertyValue(alg, "TransmissionDarkCurrentFile", default='')
        self.theta_dependent = BaseScriptElement.getPropertyValue(alg, "ThetaDependentTransmission",
                                                                  default = SampleData.theta_dependent)
        self.sample_thickness = BaseScriptElement.getPropertyValue(alg, "SampleThickness",
                                                                   default = SampleData.sample_thickness)

        trans_method = BaseScriptElement.getPropertyValue(alg, "TransmissionMethod", default='Value')

        self.calculate_transmission = trans_method in ['DirectBeam', 'BeamSpreader']
        if trans_method=='DirectBeam':
            self.calculation_method = SampleData.DirectBeam()
            self.calculation_method.from_setup_info(xml_str)
        elif trans_method=='BeamSpreader':
            self.calculation_method = SampleData.BeamSpreader()
            self.calculation_method.from_setup_info(xml_str)

        # Data file section
        self.data_files = [filename]
示例#15
0
    def from_setup_info(self, xml_str):
        """
            Read in data from XML using the string representation of the setup algorithm used
            to prepare the reduction properties.
            @param xml_str: text to read the data from
        """
        self.reset()
        (alg, _) = BaseScriptElement.getAlgorithmFromXML(xml_str)

        self.background_file = BaseScriptElement.getPropertyValue(alg, "BackgroundFiles", default='')
        self.background_corr = len(self.background_file)>0
        self.bck_transmission_enabled = True
        trans_method = BaseScriptElement.getPropertyValue(alg, "BckTransmissionMethod", default='Value')

        # Transmission
        self.bck_transmission = BaseScriptElement.getPropertyValue(alg, "BckTransmissionValue", default=SampleData.transmission)
        self.bck_transmission_spread = BaseScriptElement.getPropertyValue(alg, "BckTransmissionError",
                                                                          default=SampleData.transmission_spread)

        self.trans_dark_current = BaseScriptElement.getPropertyValue(alg, "BckTransmissionDarkCurrentFile", default='')
        self.theta_dependent = BaseScriptElement.getPropertyValue(alg, "BckThetaDependentTransmission",
                                                                  default = SampleData.theta_dependent)

        self.calculate_transmission = trans_method in ['DirectBeam', 'BeamSpreader']
        if trans_method=='DirectBeam':
            self.trans_calculation_method = Background.DirectBeam()
            self.trans_calculation_method.from_setup_info(xml_str)
        elif trans_method=='BeamSpreader':
            self.trans_calculation_method = Background.BeamSpreader()
            self.trans_calculation_method.from_setup_info(xml_str)
示例#16
0
    def from_xml(self, xml_str):
        """
            Read in data from XML
            @param xml_str: text to read the data from
        """    
        self.reset()   
        super(ReductionOptions, self).from_xml(xml_str)
        
        dom = xml.dom.minidom.parseString(xml_str)
        
        # TOF cutoff and correction
        element_list = dom.getElementsByTagName("TOFcorr")
        if len(element_list)>0: 
            tof_dom = element_list[0]

            self.use_config_cutoff = BaseScriptElement.getBoolElement(tof_dom, "use_config_cutoff",
                                                                      default = ReductionOptions.use_config_cutoff)
            self.correct_for_flight_path = BaseScriptElement.getBoolElement(tof_dom, "perform_flight_path_corr",
                                                                            default = ReductionOptions.correct_for_flight_path)
            self.low_TOF_cut = BaseScriptElement.getFloatElement(tof_dom, "low_tof_cut", 
                                                                 default=ReductionOptions.low_TOF_cut)
            self.high_TOF_cut = BaseScriptElement.getFloatElement(tof_dom, "high_tof_cut", 
                                                                  default=ReductionOptions.high_TOF_cut)
        
        # Mask
        self.use_config_mask = BaseScriptElement.getBoolElement(dom, "UseConfigMask",
                                                                default = ReductionOptions.use_config_mask)
        
        # Resolution
        self.compute_resolution = BaseScriptElement.getBoolElement(dom, "ComputeResolution",
                                                                   default = ReductionOptions.compute_resolution)
        self.sample_aperture_diameter = BaseScriptElement.getFloatElement(dom, "SampleApertureDiameter",
                                                                         default = ReductionOptions.sample_aperture_diameter)
示例#17
0
    def from_setup_info(self, xml_str):
        """
            Read in data from XML using the string representation of the setup algorithm used
            to prepare the reduction properties.
            @param xml_str: text to read the data from
        """
        self.reset()
        alg, filename = BaseScriptElement.getAlgorithmFromXML(xml_str)

        # Transmission
        self.transmission = BaseScriptElement.getPropertyValue(alg, "TransmissionValue", default=SampleData.transmission)
        self.transmission_spread = BaseScriptElement.getPropertyValue(alg, "TransmissionError", default=SampleData.transmission_spread)
        self.dark_current = BaseScriptElement.getPropertyValue(alg, "TransmissionDarkCurrentFile", default='')
        self.theta_dependent = BaseScriptElement.getPropertyValue(alg, "ThetaDependentTransmission",
                                                                  default = SampleData.theta_dependent)
        self.sample_thickness = BaseScriptElement.getPropertyValue(alg, "SampleThickness",
                                                                   default = SampleData.sample_thickness)

        trans_method = BaseScriptElement.getPropertyValue(alg, "TransmissionMethod", default='Value')

        self.calculate_transmission = trans_method in ['DirectBeam', 'BeamSpreader']
        if trans_method=='DirectBeam':
            self.calculation_method = SampleData.DirectBeam()
            self.calculation_method.from_setup_info(xml_str)
        elif trans_method=='BeamSpreader':
            self.calculation_method = SampleData.BeamSpreader()
            self.calculation_method.from_setup_info(xml_str)

        # Data file section
        self.data_files = [filename]
示例#18
0
        def from_setup_info(self, xml_str):
            """
                Read in data from XML using the string representation of the setup algorithm used
                to prepare the reduction properties.
                @param xml_str: text to read the data from
            """
            self.reset()
            (alg, _) = BaseScriptElement.getAlgorithmFromXML(xml_str)

            self.sample_scatt = BaseScriptElement.getPropertyValue(
                alg, "TransSampleScatteringFilename", default='')
            self.sample_spreader = BaseScriptElement.getPropertyValue(
                alg, "TransSampleSpreaderFilename", default='')
            self.direct_scatt = BaseScriptElement.getPropertyValue(
                alg, "TransDirectScatteringFilename", default='')
            self.direct_spreader = BaseScriptElement.getPropertyValue(
                alg, "TransDirectSpreaderFilename", default='')
            self.spreader_trans = BaseScriptElement.getPropertyValue(
                alg,
                "SpreaderTransmissionValue",
                default=SampleData.BeamSpreader.spreader_trans)
            self.spreader_trans_spread = BaseScriptElement.getPropertyValue(
                alg,
                "SpreaderTransmissionError",
                default=SampleData.BeamSpreader.spreader_trans_spread)
        def from_setup_info(self, xml_str):
            """
                Read in data from XML using the string representation of the setup algorithm used
                to prepare the reduction properties.
                @param xml_str: text to read the data from
            """
            self.reset()
            from mantid.api import Algorithm
            dom = xml.dom.minidom.parseString(xml_str)

            process_dom = dom.getElementsByTagName("SASProcess")[0]
            setup_alg_str = BaseScriptElement.getStringElement(
                process_dom, 'SetupInfo')
            alg = Algorithm.fromString(str(setup_alg_str))

            self.sample_scatt = BaseScriptElement.getPropertyValue(
                alg, "BckTransSampleScatteringFilename", default='')
            self.sample_spreader = BaseScriptElement.getPropertyValue(
                alg, "BckTransSampleSpreaderFilename", default='')
            self.direct_scatt = BaseScriptElement.getPropertyValue(
                alg, "BckTransDirectScatteringFilename", default='')
            self.direct_spreader = BaseScriptElement.getPropertyValue(
                alg, "BckTransDirectSpreaderFilename", default='')
            self.spreader_trans = BaseScriptElement.getPropertyValue(
                alg,
                "BckSpreaderTransmissionValue",
                default=SampleData.BeamSpreader.spreader_trans)
            self.spreader_trans_spread = BaseScriptElement.getPropertyValue(
                alg,
                "BckSpreaderTransmissionError",
                default=SampleData.BeamSpreader.spreader_trans_spread)
示例#20
0
        def from_setup_info(self, xml_str):
            """
                Read in data from XML using the string representation of the setup algorithm used
                to prepare the reduction properties.
                @param xml_str: text to read the data from
            """
            self.reset()
            from mantid.api import Algorithm
            dom = xml.dom.minidom.parseString(xml_str)

            process_dom = dom.getElementsByTagName("SASProcess")[0]
            setup_alg_str = BaseScriptElement.getStringElement(process_dom, 'SetupInfo')
            alg=Algorithm.fromString(str(setup_alg_str))

            self.sample_file = BaseScriptElement.getPropertyValue(alg, "TransmissionSampleDataFile", default='')
            self.direct_beam = BaseScriptElement.getPropertyValue(alg, "TransmissionEmptyDataFile", default='')
            self.beam_radius = BaseScriptElement.getPropertyValue(alg, "TransmissionBeamRadius",
                                                                  default=SampleData.DirectBeam.beam_radius)
def getFloatElement(instrument_dom, keyname, default):
    """Get a float from the xml document. Conversion errors
    return the default value.
    """
    try:
        return BaseScriptElement.getFloatElement(instrument_dom,\
                               keyname, default=default)
    except ValueError:
        return default
def getFloatElement(instrument_dom, keyname, default):
    """Get a float from the xml document. Conversion errors
    return the default value.
    """
    try:
        return BaseScriptElement.getFloatElement(instrument_dom,
                                                 keyname, default=default)
    except ValueError:
        return default
示例#23
0
        def from_setup_info(self, xml_str):
            """
                Read in data from XML using the string representation of the setup algorithm used
                to prepare the reduction properties.
                @param xml_str: text to read the data from
            """
            self.reset()
            from mantid.api import Algorithm
            dom = xml.dom.minidom.parseString(xml_str)

            process_dom = dom.getElementsByTagName("SASProcess")[0]
            setup_alg_str = BaseScriptElement.getStringElement(process_dom, 'SetupInfo')
            alg=Algorithm.fromString(str(setup_alg_str))

            self.sample_file = BaseScriptElement.getPropertyValue(alg, "BckTransmissionSampleDataFile", default='')
            self.direct_beam = BaseScriptElement.getPropertyValue(alg, "BckTransmissionEmptyDataFile", default='')
            self.beam_radius = BaseScriptElement.getPropertyValue(alg, "BckTransmissionBeamRadius",
                                                                  default=SampleData.DirectBeam.beam_radius)
示例#24
0
    def from_setup_info(self, xml_str):
        """
            Read in data from XML using the string representation of the setup algorithm used
            to prepare the reduction properties.
            @param xml_str: text to read the data from
        """
        self.reset()
        super(Background, self).from_setup_info(xml_str)

        from mantid.api import Algorithm
        dom = xml.dom.minidom.parseString(xml_str)

        process_dom = dom.getElementsByTagName("SASProcess")[0]
        setup_alg_str = BaseScriptElement.getStringElement(
            process_dom, 'SetupInfo')
        alg = Algorithm.fromString(str(setup_alg_str))
        self.combine_transmission_frames = BaseScriptElement.getPropertyValue(
            alg,
            "BckFitFramesTogether",
            default=SampleData.combine_transmission_frames)
 def from_xml(self, xml_str):
     """
         Read in data from XML
         @param xml_str: text to read the data from
     """
     dom = xml.dom.minidom.parseString(xml_str)
     element_list = dom.getElementsByTagName("PdAndScConversion")
     if len(element_list)>0:
         instrument_dom = element_list[0]
         self.do_pd_convert = BaseScriptElement.getBoolElement(instrument_dom,
                                                               "do_powder_conversion",
                                                               default=PdAndScConversionScript.do_pd_convert)
         self.pd_q_range_low = BaseScriptElement.getStringElement(instrument_dom,
                                                                  "pd_q_range/low",
                                                                  default=PdAndScConversionScript.pd_q_range_low)
         self.pd_q_range_width = BaseScriptElement.getStringElement(instrument_dom,
                                                                    "pd_q_range/width",
                                                                    default=PdAndScConversionScript.pd_q_range_width)
         self.pd_q_range_high = BaseScriptElement.getStringElement(instrument_dom,
                                                                   "pd_q_range/high",
                                                                   default=PdAndScConversionScript.pd_q_range_high)
         self.save_powder_nxs = BaseScriptElement.getBoolElement(instrument_dom,
                                                                 "save_powder_nexus",
                                                                 default=PdAndScConversionScript.save_powder_nxs)
         self.save_powder_nxs_file = BaseScriptElement.getStringElement(instrument_dom,
                                                                        "save_powder_nexus_filename",
                                                                        default=PdAndScConversionScript.save_powder_nxs_file)
 def from_xml(self, xml_str):
     """
         Read in data from XML
         @param xml_str: text to read the data from
     """
     dom = xml.dom.minidom.parseString(xml_str)
     element_list = dom.getElementsByTagName("PdAndScConversion")
     if len(element_list) > 0:
         instrument_dom = element_list[0]
         self.do_pd_convert = BaseScriptElement.getBoolElement(
             instrument_dom,
             "do_powder_conversion",
             default=PdAndScConversionScript.do_pd_convert)
         self.pd_q_range_low = BaseScriptElement.getStringElement(
             instrument_dom,
             "pd_q_range/low",
             default=PdAndScConversionScript.pd_q_range_low)
         self.pd_q_range_width = BaseScriptElement.getStringElement(
             instrument_dom,
             "pd_q_range/width",
             default=PdAndScConversionScript.pd_q_range_width)
         self.pd_q_range_high = BaseScriptElement.getStringElement(
             instrument_dom,
             "pd_q_range/high",
             default=PdAndScConversionScript.pd_q_range_high)
         self.save_powder_nxs = BaseScriptElement.getBoolElement(
             instrument_dom,
             "save_powder_nexus",
             default=PdAndScConversionScript.save_powder_nxs)
         self.save_powder_nxs_file = BaseScriptElement.getStringElement(
             instrument_dom,
             "save_powder_nexus_filename",
             default=PdAndScConversionScript.save_powder_nxs_file)
示例#27
0
    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)

        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
        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)
            self.separate_jobs = BaseScriptElement.getBoolElement(
                sample_data_dom,
                "separate_jobs",
                default=SampleData.separate_jobs)
示例#28
0
    def from_xml(self, xml_str):
        """
            Read in data from XML
            @param xml_str: text to read the data from
        """
        self.reset()
        super(Background, self).from_xml(xml_str)

        dom = xml.dom.minidom.parseString(xml_str)
        element_list = dom.getElementsByTagName("Background")
        if len(element_list)>0:
            instrument_dom = element_list[0]
            self.combine_transmission_frames = BaseScriptElement.getBoolElement(instrument_dom, "combine_transmission_frames",
                                                                                default = Background.combine_transmission_frames)
示例#29
0
    def from_xml(self, xml_str):
        """
            Read in data from XML
            @param xml_str: text to read the data from
        """
        self.reset()
        super(SampleData, self).from_xml(xml_str)

        dom = xml.dom.minidom.parseString(xml_str)
        element_list = dom.getElementsByTagName("Transmission")
        if len(element_list)>0:
            instrument_dom = element_list[0]
            self.combine_transmission_frames = BaseScriptElement.getBoolElement(instrument_dom, "combine_transmission_frames",
                                                                                default = SampleData.combine_transmission_frames)
    def getIntegerElement(self, instrument_dom, xmlname, default):
        """ Get a float value from xml
        """
        integerstr = BaseScriptElement.getStringElement(instrument_dom, xmlname, default)
        if integerstr != "" and integerstr is not None and integerstr != "None":
            try:
                value = int(integerstr)
            except ValueError:
                print "Warning! XML field %s value %s cannot be converted to integer" % (xmlname, integerstr)
                value = None
        else:
            value = None

        return value
    def getIntegerElement(self, instrument_dom, xmlname, default):
        """ Get a float value from xml
        """
        integerstr = BaseScriptElement.getStringElement(instrument_dom, xmlname, default)
        if integerstr != "" and integerstr is not None and integerstr != "None":
            try:
                value = int(integerstr)
            except ValueError:
                print ("Warning! XML field %s value %s cannot be converted to integer" % (xmlname, integerstr))
                value = None
        else:
            value = None

        return value
    def getFloatElement(self, instrument_dom, xmlname, default):
        """ Get a float value from xml
        """
        floatstr = BaseScriptElement.getStringElement(instrument_dom, xmlname, default)

        if floatstr != "" and floatstr is not None and floatstr != "None":
            try:
                value = float(floatstr)
            except ValueError:
                print "Warning! XML field %s value %s cannot be converted to float" % (xmlname, floatstr)
                value = None
        else:
            value = None

        return value
def getBooleanElement(instrument_dom, keyname, default):
    """ Get a boolean value from an element.
    Boolean can be recorded as
    (1) True/False
    (2) 1/0
    """
    tempbool = BaseScriptElement.getStringElement(instrument_dom,\
            keyname, default=default)

    if tempbool == "True":
        tempbool = 1
    elif tempbool == "False":
        tempbool = 0

    return bool(int(tempbool))
def getBooleanElement(instrument_dom, keyname, default):
    """ Get a boolean value from an element.
    Boolean can be recorded as
    (1) True/False
    (2) 1/0
    """
    tempbool = BaseScriptElement.getStringElement(instrument_dom,
                                                  keyname, default=default)

    if tempbool == "True":
        tempbool = 1
    elif tempbool == "False":
        tempbool = 0

    return bool(int(tempbool))
    def getFloatElement(self, instrument_dom, xmlname, default):
        """ Get a float value from xml
        """
        floatstr = BaseScriptElement.getStringElement(instrument_dom, xmlname, default)

        if floatstr != "" and floatstr is not None and floatstr != "None":
            try:
                value = float(floatstr)
            except ValueError:
                print ("Warning! XML field %s value %s cannot be converted to float" % (xmlname, floatstr))
                value = None
        else:
            value = None

        return value
示例#36
0
    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
        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)      
            self.separate_jobs = BaseScriptElement.getBoolElement(sample_data_dom, "separate_jobs",
                                                                  default = SampleData.separate_jobs) 
示例#37
0
        def from_setup_info(self, xml_str):
            """
                Read in data from XML using the string representation of the setup algorithm used
                to prepare the reduction properties.
                @param xml_str: text to read the data from
            """
            self.reset()
            (alg, _) = BaseScriptElement.getAlgorithmFromXML(xml_str)

            self.sample_scatt = BaseScriptElement.getPropertyValue(alg, "BckTransSampleScatteringFilename", default='')
            self.sample_spreader = BaseScriptElement.getPropertyValue(alg, "BckTransSampleSpreaderFilename", default='')
            self.direct_scatt = BaseScriptElement.getPropertyValue(alg, "BckTransDirectScatteringFilename", default='')
            self.direct_spreader = BaseScriptElement.getPropertyValue(alg, "BckTransDirectSpreaderFilename", default='')
            self.spreader_trans = BaseScriptElement.getPropertyValue(alg, "BckSpreaderTransmissionValue",
                                                                     default=SampleData.BeamSpreader.spreader_trans)
            self.spreader_trans_spread = BaseScriptElement.getPropertyValue(alg, "BckSpreaderTransmissionError",
                                                                            default=SampleData.BeamSpreader.spreader_trans_spread)
示例#38
0
 def from_xml(self, dom):
     """
         Read in data from XML
         @param dom: text to read the data from
     """
     element_list = dom.getElementsByTagName("BeamSpreader")
     if len(element_list)>0:
         instrument_dom = element_list[0]
         self.sample_scatt = BaseScriptElement.getStringElement(instrument_dom, "sample_scatt")
         self.sample_spreader = BaseScriptElement.getStringElement(instrument_dom, "sample_spreader")
         self.direct_scatt = BaseScriptElement.getStringElement(instrument_dom, "direct_scatt")
         self.direct_spreader = BaseScriptElement.getStringElement(instrument_dom, "direct_spreader")
         self.spreader_trans = BaseScriptElement.getFloatElement(instrument_dom, "spreader_trans",
                                                                 default=SampleData.BeamSpreader.spreader_trans)
         self.spreader_trans_spread = BaseScriptElement.getFloatElement(instrument_dom, "spreader_trans_spread",
                                                                        default=SampleData.BeamSpreader.spreader_trans_spread)
示例#39
0
 def from_xml(self, dom):
     """
         Read in data from XML
         @param dom: text to read the data from
     """
     element_list = dom.getElementsByTagName("BeamSpreader")
     if len(element_list)>0:
         instrument_dom = element_list[0]
         self.sample_scatt = BaseScriptElement.getStringElement(instrument_dom, "sample_scatt")
         self.sample_spreader = BaseScriptElement.getStringElement(instrument_dom, "sample_spreader")
         self.direct_scatt = BaseScriptElement.getStringElement(instrument_dom, "direct_scatt")
         self.direct_spreader = BaseScriptElement.getStringElement(instrument_dom, "direct_spreader")
         self.spreader_trans = BaseScriptElement.getFloatElement(instrument_dom, "spreader_trans",
                                                                 default=SampleData.BeamSpreader.spreader_trans)
         self.spreader_trans_spread = BaseScriptElement.getFloatElement(instrument_dom, "spreader_trans_spread",
                                                                        default=SampleData.BeamSpreader.spreader_trans_spread)
示例#40
0
        def from_setup_info(self, xml_str):
            """
                Read in data from XML using the string representation of the setup algorithm used
                to prepare the reduction properties.
                @param xml_str: text to read the data from
            """
            self.reset()
            from mantid.api import Algorithm
            dom = xml.dom.minidom.parseString(xml_str)

            process_dom = dom.getElementsByTagName("SASProcess")[0]
            setup_alg_str = BaseScriptElement.getStringElement(process_dom, 'SetupInfo')
            alg=Algorithm.fromString(str(setup_alg_str))

            self.sample_scatt = BaseScriptElement.getPropertyValue(alg, "BckTransSampleScatteringFilename", default='')
            self.sample_spreader = BaseScriptElement.getPropertyValue(alg, "BckTransSampleSpreaderFilename", default='')
            self.direct_scatt = BaseScriptElement.getPropertyValue(alg, "BckTransDirectScatteringFilename", default='')
            self.direct_spreader = BaseScriptElement.getPropertyValue(alg, "BckTransDirectSpreaderFilename", default='')
            self.spreader_trans = BaseScriptElement.getPropertyValue(alg, "BckSpreaderTransmissionValue",
                                                                     default=SampleData.BeamSpreader.spreader_trans)
            self.spreader_trans_spread = BaseScriptElement.getPropertyValue(alg, "BckSpreaderTransmissionError",
                                                                            default=SampleData.BeamSpreader.spreader_trans_spread)
示例#41
0
    def from_xml(self, xml_str):
        """
            Read in data from XML
            @param xml_str: text to read the data from
        """
        dom = xml.dom.minidom.parseString(xml_str)
        element_list = dom.getElementsByTagName("Background")
        if len(element_list)>0:
            instrument_dom = element_list[0]

            self.sample_thickness = BaseScriptElement.getFloatElement(instrument_dom, "sample_thickness",
                                                                      default=Background.sample_thickness)

            self.dark_current_corr = BaseScriptElement.getBoolElement(instrument_dom, "dark_current_corr",
                                                                      default = Background.dark_current_corr)
            self.dark_current_file = BaseScriptElement.getStringElement(instrument_dom, "dark_current_file")

            self.background_corr = BaseScriptElement.getBoolElement(instrument_dom, "background_corr",
                                                                    default = Background.background_corr)
            self.background_file = BaseScriptElement.getStringElement(instrument_dom, "background_file")

            self.bck_transmission_enabled = BaseScriptElement.getBoolElement(instrument_dom, "bck_trans_enabled",
                                                                             default = Background.bck_transmission_enabled)

            self.bck_transmission = BaseScriptElement.getFloatElement(instrument_dom, "bck_trans",
                                                                      default=Background.bck_transmission)
            self.bck_transmission_spread = BaseScriptElement.getFloatElement(instrument_dom, "bck_trans_spread",
                                                                             default=Background.bck_transmission_spread)
            self.calculate_transmission = BaseScriptElement.getBoolElement(instrument_dom, "calculate_trans",
                                                                           default = Background.calculate_transmission)
            self.theta_dependent = BaseScriptElement.getBoolElement(instrument_dom, "theta_dependent",
                                                                    default = Background.theta_dependent)
            self.trans_dark_current = BaseScriptElement.getStringElement(instrument_dom, "trans_dark_current")

            for m in [Background.DirectBeam, Background.BeamSpreader]:
                method = m()
                if method.find(instrument_dom):
                    method.from_xml(instrument_dom)
                    self.trans_calculation_method = method
                    break
示例#42
0
    def from_setup_info(self, xml_str):
        """
            Read in data from XML using the string representation of the setup algorithm used
            to prepare the reduction properties.
            @param xml_str: text to read the data from
        """
        self.reset()
        (alg, _) = BaseScriptElement.getAlgorithmFromXML(xml_str)

        # Sensitivity correction
        self.sensitivity_data = BaseScriptElement.getPropertyValue(alg, "SensitivityFile", default='')
        self.sensitivity_corr = len(self.sensitivity_data)>0
        self.sensitivity_dark = BaseScriptElement.getPropertyValue(alg, "SensitivityDarkCurrentFile", default='')
        self.use_sample_dark = BaseScriptElement.getPropertyValue(alg, "UseDefaultDC",
                                                                  default = Detector.use_sample_dark)
        self.min_sensitivity = BaseScriptElement.getPropertyValue(alg, "MinEfficiency",
                                                                  default=Detector.min_sensitivity)
        self.max_sensitivity = BaseScriptElement.getPropertyValue(alg, "MaxEfficiency",
                                                                  default=Detector.max_sensitivity)

        sensitivity_center_method = BaseScriptElement.getPropertyValue(alg, "SensitivityBeamCenterMethod",
                                                                       default='None')
        self.flood_use_finder = sensitivity_center_method in ['DirectBeam', 'Scattering']
        self.flood_use_direct_beam = sensitivity_center_method=='DirectBeam'
        self.use_sample_beam_center =  sensitivity_center_method=='None'
        self.flood_x_position = BaseScriptElement.getPropertyValue(alg, "SensitivityBeamCenterX",
                                                                   default=Detector.flood_x_position)
        self.flood_y_position = BaseScriptElement.getPropertyValue(alg, "SensitivityBeamCenterY",
                                                                   default=Detector.flood_y_position)
        self.flood_beam_file = BaseScriptElement.getPropertyValue(alg, "SensitivityBeamCenterFile", default='')
        self.flood_beam_radius = BaseScriptElement.getPropertyValue(alg, "SensitivityBeamCenterRadius",
                                                                    default=Detector.flood_beam_radius)

        # Beam center
        center_method = BaseScriptElement.getPropertyValue(alg, "BeamCenterMethod", default='None')
        self.use_finder = center_method in ['DirectBeam', 'Scattering']
        self.use_direct_beam = center_method=='DirectBeam'
        self.x_position = BaseScriptElement.getPropertyValue(alg, "BeamCenterX",
                                                             default=Detector.x_position)
        self.y_position = BaseScriptElement.getPropertyValue(alg, "BeamCenterY",
                                                             default=Detector.y_position)
        self.beam_file = BaseScriptElement.getPropertyValue(alg, "BeamCenterFile", default='')
        self.beam_radius = BaseScriptElement.getPropertyValue(alg, "BeamRadius",
                                                              default=Detector.beam_radius)
示例#43
0
    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)

        # 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)
示例#44
0
    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")
示例#45
0
 def get_bol(tag, default):
     return BaseScriptElement.getBoolElement(dom, tag, default=default)
示例#46
0
 def get_int(tag, default):
     return BaseScriptElement.getIntElement(dom,
                                            tag,
                                            default=default)
示例#47
0
 def get_optFloat(tag, default=None):
     return OptionalFloat(BaseScriptElement.getStringElement(dom, tag, default=default))
示例#48
0
 def get_int(tag, default):
     return BaseScriptElement.getIntElement(dom, tag, default=default)
示例#49
0
 def get_bol(tag, default):
     return BaseScriptElement.getBoolElement(dom,
                                             tag,
                                             default=default)
示例#50
0
 def get_strlst(tag):
     return BaseScriptElement.getStringList(dom, tag)
示例#51
0
 def get_flt(tag, default):
     return BaseScriptElement.getFloatElement(dom,
                                              tag,
                                              default=default)
    def from_setup_info(self, xml_str):
        """
            Read in data from XML using the string representation of the setup algorithm used
            to prepare the reduction properties.
            @param xml_str: text to read the data from
        """
        self.reset()
        (alg, _) = BaseScriptElement.getAlgorithmFromXML(xml_str)

        self.sample_detector_distance = BaseScriptElement.getPropertyValue(
            alg,
            "SampleDetectorDistance",
            default=ReductionOptions.sample_detector_distance)
        self.detector_offset = BaseScriptElement.getPropertyValue(
            alg,
            "SampleDetectorDistanceOffset",
            default=ReductionOptions.detector_offset)
        self.wavelength = BaseScriptElement.getPropertyValue(
            alg, "Wavelength", default=ReductionOptions.wavelength)
        self.wavelength_spread = BaseScriptElement.getPropertyValue(
            alg,
            "WavelengthSpread",
            default=ReductionOptions.wavelength_spread)

        self.solid_angle_corr = BaseScriptElement.getPropertyValue(
            alg,
            "SolidAngleCorrection",
            default=ReductionOptions.solid_angle_corr)
        self.output_directory = BaseScriptElement.getPropertyValue(
            alg, "OutputDirectory", default=ReductionOptions.output_directory)
        self.use_data_directory = not len(self.output_directory) > 0

        # Dark current
        self.dark_current_data = BaseScriptElement.getPropertyValue(
            alg, "DarkCurrentFile", default='')
        self.dark_current_corr = len(self.dark_current_data) > 0

        self.n_q_bins = BaseScriptElement.getPropertyValue(
            alg, "IQNumberOfBins", default=ReductionOptions.n_q_bins)
        self.n_sub_pix = BaseScriptElement.getPropertyValue(
            alg, "NumberOfSubpixels", default=ReductionOptions.n_sub_pix)
        self.log_binning = BaseScriptElement.getPropertyValue(
            alg, "IQLogBinning", default=ReductionOptions.log_binning)
        self.align_log_with_decades = BaseScriptElement.getPropertyValue(
            alg,
            "IQAlignLogWithDecades",
            default=ReductionOptions.align_log_with_decades)
        self.error_weighting = BaseScriptElement.getPropertyValue(
            alg, "ErrorWeighting", default=ReductionOptions.error_weighting)

        self.n_wedges = BaseScriptElement.getPropertyValue(
            alg, "NumberOfWedges", default=ReductionOptions.n_wedges)
        self.wedge_angle = BaseScriptElement.getPropertyValue(
            alg, "WedgeAngle", default=ReductionOptions.wedge_angle)
        self.wedge_offset = BaseScriptElement.getPropertyValue(
            alg, "WedgeOffset", default=ReductionOptions.wedge_offset)

        # Normalization
        norm_option = BaseScriptElement.getPropertyValue(alg,
                                                         "Normalisation",
                                                         default='Monitor')
        self.normalization = ReductionOptions.normalization
        if norm_option == 'Timer':
            self.normalization = ReductionOptions.NORMALIZATION_TIME
        elif norm_option == 'Monitor' or norm_option == 'BeamProfileAndCharge':
            self.normalization = ReductionOptions.NORMALIZATION_MONITOR
        elif norm_option == 'None':
            self.normalization = ReductionOptions.NORMALIZATION_NONE

        # Mask
        mask = BaseScriptElement.getPropertyValue(alg,
                                                  "MaskedEdges",
                                                  default=[])
        if type(mask).__name__ == 'ndarray':
            mask = mask.tolist()
        if len(mask) == 4:
            self.top = mask[3]
            self.bottom = mask[2]
            self.right = mask[1]
            self.left = mask[0]
        self.detector_ids = BaseScriptElement.getPropertyValue(
            alg, "MaskedDetectorList", default=[])
        if type(self.detector_ids).__name__ == 'ndarray':
            self.detector_ids = self.detector_ids.tolist()
        self.use_mask_file = len(self.detector_ids) > 0

        # Absolute scaling
        scale_option = BaseScriptElement.getPropertyValue(
            alg, "AbsoluteScaleMethod", default='None')
        self.calculate_scale = False
        self.scaling_factor = 1.0
        if scale_option == 'Value':
            self.scaling_factor = BaseScriptElement.getPropertyValue(
                alg,
                "AbsoluteScalingFactor",
                default=ReductionOptions.scaling_factor)
        elif scale_option == 'ReferenceData':
            self.calculate_scale = True
            self.scaling_direct_file = BaseScriptElement.getPropertyValue(
                alg, "AbsoluteScalingReferenceFilename")
            self.scaling_att_trans = BaseScriptElement.getPropertyValue(
                alg,
                "AbsoluteScalingAttenuatorTrans",
                default=ReductionOptions.scaling_att_trans)
            self.manual_beam_diam = False
            if alg.existsProperty("AbsoluteScalingBeamDiameter"):
                if not alg.getProperty(
                        "AbsoluteScalingBeamDiameter").isDefault:
                    self.scaling_beam_diam = BaseScriptElement.getPropertyValue(
                        alg,
                        "AbsoluteScalingBeamDiameter",
                        default=ReductionOptions.scaling_beam_diam)
                    self.manual_beam_diam = True
示例#53
0
 def get_strlst(tag):
     return BaseScriptElement.getStringList(dom, tag)
示例#54
0
 def get_flt(tag, default):
     return BaseScriptElement.getFloatElement(dom, tag, default=default)
示例#55
0
 def get_str(tag, default=''):
     return BaseScriptElement.getStringElement(dom,
                                               tag,
                                               default=default)