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)
            EDVerbose.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())
            EDVerbose.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())
            EDVerbose.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
            EDVerbose.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)
Exemplo n.º 2
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()
    def testExecute(self):
        self.run()

        # Checks the expected result
        strExpectedOutput = self.readAndParseFile (self.getReferenceDataOutputFile())

        from XSDataRaddosev10 import XSDataRaddoseOutput
        xsDataOutputExpected = XSDataRaddoseOutput.parseString(strExpectedOutput)
        xsDataOutputObtained = self.getPlugin().getDataOutput()
Exemplo n.º 4
0
    def testExecute(self):
        self.run()

        # Checks the expected result
        strExpectedOutput = self.readAndParseFile(
            self.getReferenceDataOutputFile())

        from XSDataRaddosev10 import XSDataRaddoseOutput
        xsDataOutputExpected = XSDataRaddoseOutput.parseString(
            strExpectedOutput)
        xsDataOutputObtained = self.getPlugin().getDataOutput()
    def testExecute(self):
        self.run()

        if self.getPlugin().findStringInLog("version 2"):
            self.setReferenceDataOutputFile(os.path.join(self.getPluginTestsDataHome(), "XSDataRaddosev10Output_reference_Raddosev2.xml"))

        # Checks the expected result
        strExpectedOutput = self.readAndParseFile (self.getReferenceDataOutputFile())

        from XSDataRaddosev10 import XSDataRaddoseOutput
        xsDataOutputExpected = XSDataRaddoseOutput.parseString(strExpectedOutput)
        xsDataOutputObtained = self.getPlugin().getDataOutput()

        EDAssert.equal(xsDataOutputExpected.marshal(), xsDataOutputObtained.marshal())
    def testExecute(self):
        self.run()

        if self.getPlugin().findStringInLog("version 2"):
            self.setReferenceDataOutputFile(
                os.path.join(self.getPluginTestsDataHome(),
                             "XSDataRaddosev10Output_reference_Raddosev2.xml"))

        # Checks the expected result
        strExpectedOutput = self.readAndParseFile(
            self.getReferenceDataOutputFile())

        from XSDataRaddosev10 import XSDataRaddoseOutput
        xsDataOutputExpected = XSDataRaddoseOutput.parseString(
            strExpectedOutput)
        xsDataOutputObtained = self.getPlugin().getDataOutput()

        EDAssert.equal(xsDataOutputExpected.marshal(),
                       xsDataOutputObtained.marshal())
Exemplo n.º 7
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)