Пример #1
0
    def parseExcludedDetFile(self, instrument, excldetfname):
        """ Parse excluded detectors file

        Return :: 2 -tuple (list/None, error message)
        """
        if instrument.upper() == 'HB2A':
            excldetlist, errmsg = hutil.parseDetExclusionFile(excldetfname)
        else:
            raise NotImplementedError('Instrument %s is not supported for parsing excluded detectors file.'%(instrument))

        return excldetlist, errmsg
Пример #2
0
    def parseExcludedDetFile(self, instrument, excldetfname):
        """ Parse excluded detectors file

        Return :: 2 -tuple (list/None, error message)
        """
        if instrument.upper() == 'HB2A':
            excldetlist, errmsg = hutil.parseDetExclusionFile(excldetfname)
        else:
            raise NotImplementedError(
                'Instrument %s is not supported for parsing excluded detectors file.'
                % (instrument))

        return excldetlist, errmsg
Пример #3
0
    def parseDetEffCorrFile(self, instrument, vancorrfname):
        """ Parse detector efficiency correction file='HB2A

        Return :: 2-tuple (table workspace and or
        """
        if instrument.upper() == 'HB2A':
            vancorrdict, errmsg = hutil.parseDetEffCorrFile(vancorrfname)
            if len(vancorrdict) > 0:
                detefftablews = self._generateTableWS(vancorrdict)
            else:
                detefftablews = None
        else:
            detefftablews = None
            errmsg = "Instrument %s is not supported for parsing vanadium (detector efficiency) correction."

        return (detefftablews, errmsg)
Пример #4
0
    def parseDetEffCorrFile(self, instrument, vancorrfname):
        """ Parse detector efficiency correction file='HB2A

        Return :: 2-tuple (table workspace and or
        """
        if instrument.upper() == 'HB2A':
            vancorrdict, errmsg = hutil.parseDetEffCorrFile(vancorrfname)
            if len(vancorrdict) > 0:
                detefftablews = self._generateTableWS(vancorrdict)
            else:
                detefftablews = None
        else:
            detefftablews = None
            errmsg = "Instrument %s is not supported for parsing vanadium (detector efficiency) correction."

        return (detefftablews, errmsg)
Пример #5
0
    def retrieveCorrectionData(self, instrument, exp, scan, localdatadir):
        """ Retrieve including dowloading and/or local locating
        powder diffraction's correction files

        Arguments:
         - instrument :: name of powder diffractometer in upper case
         - exp :: integer as epxeriment number
         - scan :: integer as scan number

        Return :: 2-tuple (True, list of returned file names) or (False, error reason)
        """
        if instrument.upper() == 'HB2A':
            # For HFIR HB2A only

            try:
                wsmanager = self._myWorkspaceDict[(exp, scan)]
            except KeyError as e:
                raise e

            # Get parameter m1 and colltrans
            m1 = self._getValueFromTable(wsmanager.getRawSpiceTable(), 'm1')
            colltrans = self._getValueFromTable(wsmanager.getRawSpiceTable(), 'colltrans')

            # detector efficiency file
            try:
                detefffname, deteffurl, wavelength = hutil.makeHB2ADetEfficiencyFileName(exp, m1, colltrans)
            except NotImplementedError as e:
                raise e
            if detefffname is not None:
                localdetefffname = os.path.join(localdatadir, detefffname)
                print "[DB] Detector efficiency file name: %s From %s" % (detefffname, deteffurl)
                if os.path.exists(localdetefffname) is False:
                    downloadFile(deteffurl, localdetefffname)
                else:
                    print "[Info] Detector efficiency file %s exists in directory %s." % (detefffname, localdatadir)
            else:
                localdetefffname = None
            # ENDIF

            # excluded detectors file
            excldetfname, exclurl = hutil.makeExcludedDetectorFileName(exp)
            localexcldetfname = os.path.join(localdatadir, excldetfname)
            print "[DB] Excluded det file name: %s From %s" % (excldetfname, exclurl)
            if os.path.exists(localexcldetfname) is False:
                downloadstatus, errmsg = downloadFile(exclurl, localexcldetfname)
                if downloadstatus is False:
                    localexcldetfname = None
                    print "[Error] %s" % (errmsg)
            else:
                print "[Info] Detector exclusion file %s exists in directory %s." % (excldetfname, localdatadir)

            # Set to ws manager
            wsmanager.setWavelength(wavelength)
            # wsmanager.setDetEfficencyFile()
            # wsmanager.setExcludedDetFile()

        else:
            # Other instruments
            raise NotImplementedError("Instrument %s is not supported to retrieve correction file." % (instrument))


        return (True, [wavelength, localdetefffname, localexcldetfname])
Пример #6
0
    def retrieveCorrectionData(self, instrument, exp, scan, localdatadir):
        """ Retrieve including dowloading and/or local locating
        powder diffraction's correction files

        Arguments:
         - instrument :: name of powder diffractometer in upper case
         - exp :: integer as epxeriment number
         - scan :: integer as scan number

        Return :: 2-tuple (True, list of returned file names) or (False, error reason)
        """
        if instrument.upper() == 'HB2A':
            # For HFIR HB2A only

            try:
                wsmanager = self._myWorkspaceDict[(exp, scan)]
            except KeyError as e:
                raise e

            # Get parameter m1 and colltrans
            m1 = self._getValueFromTable(wsmanager.getRawSpiceTable(), 'm1')
            colltrans = self._getValueFromTable(wsmanager.getRawSpiceTable(),
                                                'colltrans')

            # detector efficiency file
            try:
                detefffname, deteffurl, wavelength = hutil.makeHB2ADetEfficiencyFileName(
                    exp, m1, colltrans)
            except NotImplementedError as e:
                raise e
            if detefffname is not None:
                localdetefffname = os.path.join(localdatadir, detefffname)
                print "[DB] Detector efficiency file name: %s From %s" % (
                    detefffname, deteffurl)
                if os.path.exists(localdetefffname) is False:
                    downloadFile(deteffurl, localdetefffname)
                else:
                    print "[Info] Detector efficiency file %s exists in directory %s." % (
                        detefffname, localdatadir)
            else:
                localdetefffname = None
            # ENDIF

            # excluded detectors file
            excldetfname, exclurl = hutil.makeExcludedDetectorFileName(exp)
            localexcldetfname = os.path.join(localdatadir, excldetfname)
            print "[DB] Excluded det file name: %s From %s" % (excldetfname,
                                                               exclurl)
            if os.path.exists(localexcldetfname) is False:
                downloadstatus, errmsg = downloadFile(exclurl,
                                                      localexcldetfname)
                if downloadstatus is False:
                    localexcldetfname = None
                    print "[Error] %s" % (errmsg)
            else:
                print "[Info] Detector exclusion file %s exists in directory %s." % (
                    excldetfname, localdatadir)

            # Set to ws manager
            wsmanager.setWavelength(wavelength)
            # wsmanager.setDetEfficencyFile()
            # wsmanager.setExcludedDetFile()

        else:
            # Other instruments
            raise NotImplementedError(
                "Instrument %s is not supported to retrieve correction file." %
                (instrument))

        return (True, [wavelength, localdetefffname, localexcldetfname])