Exemplo n.º 1
0
    def __init__(self):
        """
        """
        EDPluginExecProcessScript.__init__(self)
        self.__strCommandBeamSize = None
        self.__strCommandBeamFlux = None
        self.__strCommandBeamWavelength = None

        self.__strCommandCrystalSize = None
        self.__strCommandCrystalCell = None
        self.__strCommandCrystalNRES = None
        self.__strCommandCrystalNMON = None
        self.__strCommandCrystalNDNA = None
        self.__strCommandCrystalNRNA = None
        self.__strCommandCrystalPATM = None
        self.__strCommandCrystalSATM = None

        self.__strCommandExposureTime = None
        self.__strCommandImages = None

        self.__listCommandsRaddose = []

        self.__dictResults = {}

        # ugly workaround while waiting for RADDOSE XML output file
        for strAbsorbedDoseKeyword in EDPluginRaddosev10.__listABSORBED_DOSE:
            self.__dictResults[strAbsorbedDoseKeyword] = None

        self.__dictResults[EDPluginRaddosev10.__strSOLVENT] = None

        self.__fSolvent = None
        self.__fTimeToReachHendersonLimit = None

        self.setXSDataInputClass(XSDataRaddoseInput)
        self.dataOutput = XSDataRaddoseOutput()
Exemplo n.º 2
0
    def postProcess(self, _edObject=None):
        EDPluginExecProcessScript.postProcess(self)

        strRaddoseError = self.readProcessErrorLogFile()
        if ((strRaddoseError is not None) and (strRaddoseError != "")):
            errorMessage = EDMessage.ERROR_EXECUTION_03 % (
                'EDPluginRaddosev10.postProcess', 'EDPluginRaddosev10',
                strRaddoseError)
            self.error(errorMessage)
            self.addErrorMessage(errorMessage)
            raise RuntimeError(errorMessage)

        resultDict = self.analyseScriptLogFileName(
            os.path.join(self.getWorkingDirectory(),
                         self.getScriptLogFileName()))

        strSolvent = self.__dictResults[EDPluginRaddosev10.__strSOLVENT]

        # ugly workaround while waiting for RADDOSE XML output file
        strAbsorbedDose = None
        for strAbsorbedDoseKeyword in EDPluginRaddosev10.__listABSORBED_DOSE:
            strAbsorbedDose = self.__dictResults[strAbsorbedDoseKeyword]
            if (strAbsorbedDose is not None):
                break

        if (strSolvent is None):
            errorMessage = EDMessage.ERROR_EXECUTION_03 % (
                'EDPluginRaddosev10.postProcess', "Raddose",
                "No Result for Keyword [" + EDPluginRaddosev10.__strSOLVENT +
                "] see: " + self.getScriptLogFileName())
            self.error(errorMessage)
            self.addErrorMessage(errorMessage)
            raise RuntimeError(errorMessage)

        if (strAbsorbedDose is None):
            errorMessage = EDMessage.ERROR_EXECUTION_03 % (
                'EDPluginRaddosev10.postProcess', "Raddose",
                "No Result for Keyword [" + strAbsorbedDoseKeyword +
                "] see: " + self.getScriptLogFileName())
            self.error(errorMessage)
            self.addErrorMessage(errorMessage)
            raise RuntimeError(errorMessage)

        self.__fSolvent = float(strSolvent)
        if (self.__fSolvent < EDPluginRaddosev10.__iMIN_SOLVENT_PERCENTAGE
                or self.__fSolvent >
                EDPluginRaddosev10.__iMAX_SOLVENT_PERCENTAGE):
            warningMessage = "Inconsistent solvent percentage value: %.1f" % self.__fSolvent
            self.warning(warningMessage)
            self.addWarningMessage(warningMessage)

        iNumberOfImages = self.getDataInput().getNumberOfImages().getValue()
        fExposureTimePerImageInSec = self.getDataInput().getBeamExposureTime(
        ).getValue()
        fTotalExposureTime = iNumberOfImages * fExposureTimePerImageInSec
        fAbsorbedDoseSpeed = float(strAbsorbedDose) / fTotalExposureTime
        xsDataAbsorbedDoseRate = XSDataAbsorbedDoseRate(fAbsorbedDoseSpeed)

        xsDataAbsorbedDose = XSDataDouble(float(strAbsorbedDose))

        self.__fTimeToReachHendersonLimit = EDPluginRaddosev10.__fHENDERSON_LIMIT / fAbsorbedDoseSpeed

        xsDataRaddosev10Output = XSDataRaddoseOutput()
        xsDataRaddosev10Output.setAbsorbedDose(xsDataAbsorbedDose)
        xsDataRaddosev10Output.setAbsorbedDoseRate(xsDataAbsorbedDoseRate)
        xsDataRaddosev10Output.setTimeToReachHendersonLimit(
            XSDataTime(self.__fTimeToReachHendersonLimit))

        xsDataFilePathToLog = XSDataFile(
            XSDataString(
                os.path.join(self.getWorkingDirectory(),
                             self.getScriptLogFileName())))
        xsDataRaddosev10Output.setPathToLogFile(xsDataFilePathToLog)

        self.setDataOutput(xsDataRaddosev10Output)