def preProcess(self):
        """
        PreProcess of the execution test: download a set of images  from http://www.edna-site.org
        and remove any existing output file 
        """
        EDTestCasePluginExecute.preProcess(self)
        #EDVerbose.DEBUG(str([ "bioSaxsIntegrated%02i.edf" % i for i in range(1, 11) ] + ["bioSaxsAveraged.dat", "bioSaxsAveraged.edf"]))
        self.loadTestImage([ "bioSaxsIntegrated%02i.edf" % i for i in range(1, 11) ] + ["bioSaxsAveraged.dat", "bioSaxsAveraged.edf"])
        strExpectedOutput = self.readAndParseFile (self.getReferenceDataOutputFile())
        EDVerbose.DEBUG("strExpectedOutput:" + strExpectedOutput)
        xsDataResultReference = XSDataResultBioSaxsAveragev1_0.parseString(strExpectedOutput)
        self.averagedCurve = xsDataResultReference.getAveragedCurve().getPath().value
        EDVerbose.DEBUG("Output file is %s" % self.averagedCurve)
        if not os.path.isdir(os.path.dirname(self.averagedCurve)):
            os.makedirs(os.path.dirname(self.averagedCurve))
        if os.path.isfile(self.averagedCurve):
            EDVerbose.DEBUG(" Output Averaged Curve file exists %s, I will remove it" % self.averagedCurve)
            os.remove(self.averagedCurve)

        self.AveragedImage = xsDataResultReference.getAveragedImage().getPath().value
        EDVerbose.DEBUG("Output Integrated Image file is %s" % self.AveragedImage)
        if not os.path.isdir(os.path.dirname(self.AveragedImage)):
            os.makedirs(os.path.dirname(self.AveragedImage))
        if os.path.isfile(self.AveragedImage):
            EDVerbose.DEBUG(" Output Integrated Image file exists %s, I will remove it" % self.AveragedImage)
            os.remove(self.AveragedImage)
    def preProcess(self):
        """
        PreProcess of the execution test: download a set of images  from http://www.edna-site.org
        and remove any existing output file 
        """
        EDTestCasePluginExecute.preProcess(self)
        #EDVerbose.DEBUG(str([ "bioSaxsIntegrated%02i.edf" % i for i in range(1, 11) ] + ["bioSaxsAveraged.dat", "bioSaxsAveraged.edf"]))
        self.loadTestImage([ "bioSaxsIntegrated%02i.edf" % i for i in range(1, 11) ] + ["bioSaxsAveraged.dat", "bioSaxsAveraged.edf"])
        strExpectedOutput = self.readAndParseFile (self.getReferenceDataOutputFile())
        EDVerbose.DEBUG("strExpectedOutput:" + strExpectedOutput)
        xsDataResultReference = XSDataResultBioSaxsAveragev1_0.parseString(strExpectedOutput)
        self.averagedCurve = xsDataResultReference.getAveragedCurve().getPath().value
        EDVerbose.DEBUG("Output file is %s" % self.averagedCurve)
        if not os.path.isdir(os.path.dirname(self.averagedCurve)):
            os.makedirs(os.path.dirname(self.averagedCurve))
        if os.path.isfile(self.averagedCurve):
            EDVerbose.DEBUG(" Output Averaged Curve file exists %s, I will remove it" % self.averagedCurve)
            os.remove(self.averagedCurve)

        self.AveragedImage = xsDataResultReference.getAveragedImage().getPath().value
        EDVerbose.DEBUG("Output Integrated Image file is %s" % self.AveragedImage)
        if not os.path.isdir(os.path.dirname(self.AveragedImage)):
            os.makedirs(os.path.dirname(self.AveragedImage))
        if os.path.isfile(self.AveragedImage):
            EDVerbose.DEBUG(" Output Integrated Image file exists %s, I will remove it" % self.AveragedImage)
            os.remove(self.AveragedImage)
예제 #3
0
    def __init__(self):
        """
        """
        EDPluginControl.__init__(self)
        self.setXSDataInputClass(XSDataInputBioSaxsAveragev1_0)
        self.__strControlledPluginWaitMultiFile = "EDPluginWaitMultiFile"
        self.__strControlledPluginSaxsMac = "EDPluginExecSaxsMacv1_0"
        self.__strControlledPluginAsciiExport = "EDPluginBioSaxsAsciiExportv1_0"
        self.__strControlledPluginSaxsGetMetadata = "EDPluginBioSaxsMetadatav1_1"
        self.__strControlledPluginSaxsSetMetadata = "EDPluginBioSaxsMetadatav1_1"
        self.__edPluginWaitMultiFile = None
        self.__edPluginSaxsMac = None
        self.__edPluginAsciiExport = None
        self.__edPluginSaxsGetMetadata = None
        self.__edPluginSaxsSetMetadata = None

        self.xsdMetadata = None

        self.averagedImage = None
        self.integratedImages = []
        self.averagedCurve = None
        self.normalizationFactor = None
        self.correctedImage = None
        self.concentration = None
        self.comments = None
        self.code = None

        self.strLogFile = None
        self.strProcessLog = ""
        self.xsdResult = XSDataResultBioSaxsAveragev1_0()
    def testExecute(self):
        """
        """
        self.run()
        plugin = self.getPlugin()

################################################################################
# Compare XSDataResults
################################################################################

        strExpectedOutput = self.readAndParseFile (self.getReferenceDataOutputFile())
#        strObtainedOutput = self.readAndParseFile (self.m_edObtainedOutputDataFile)
        EDVerbose.DEBUG("Checking obtained result...")
        xsDataResultReference = XSDataResultBioSaxsAveragev1_0.parseString(strExpectedOutput)
        xsDataResultObtained = plugin.getDataOutput()
        EDAssert.strAlmostEqual(xsDataResultReference.marshal(), xsDataResultObtained.marshal(), "XSDataResult output are the same", _strExcluded="bioSaxs")


################################################################################
# Compare spectrum ascii Files
################################################################################

        outputData = open(xsDataResultObtained.getAveragedCurve().getPath().value, "rb").read()
        referenceData = open(os.path.join(self.getTestsDataImagesHome(), "bioSaxsAveraged.dat"), "rb").read()

        EDAssert.strAlmostEqual(referenceData, outputData, _strComment="3-column ascii spectra files spectra are the same", _fRelError=0.1, _fAbsError=0.1, _strExcluded="bioSaxs")

################################################################################
# Compare images 
################################################################################
        edfObt = EdfFile.EdfFile(xsDataResultObtained.getAveragedImage().getPath().value)
        edfRef = EdfFile.EdfFile(os.path.join(self.getTestsDataImagesHome(), "bioSaxsAveraged.edf"))
        outputData = edfObt.GetData(0)
        referenceData = edfRef.GetData(0)
        EDAssert.arraySimilar(outputData, referenceData , _fAbsMaxDelta=0.1, _fScaledMaxDelta=0.05, _strComment="Averaged images are the same")

        headerRef = edfRef.GetHeader(0)
        headerObt = edfObt.GetHeader(0)
        keysRef = headerRef.keys()
        keysObt = headerObt.keys()
        keysRef.sort()
        keysObt.sort()
        for key in ["HeaderID", "Image", 'EDF_BinarySize', "EDF_DataBlockID", "EDF_HeaderSize", "filename", "RasterOrientation", "History-1", "History-1~1" ]:
            if key in keysObt: keysObt.remove(key)
            if key in keysRef: keysRef.remove(key)
        EDAssert.equal(keysRef, keysObt, _strComment="Same keys in the header dictionary for Corrected Images")
        for key in keysRef:
            EDAssert.strAlmostEqual(headerRef[key], headerObt[key], _strComment="header value in Averaged %s are the same" % key, _strExcluded="bioSaxs")
    def testExecute(self):
        """
        """
        self.run()
        plugin = self.getPlugin()

################################################################################
# Compare XSDataResults
################################################################################

        strExpectedOutput = self.readAndParseFile (self.getReferenceDataOutputFile())
#        strObtainedOutput = self.readAndParseFile (self.m_edObtainedOutputDataFile)
        EDVerbose.DEBUG("Checking obtained result...")
        xsDataResultReference = XSDataResultBioSaxsAveragev1_0.parseString(strExpectedOutput)
        xsDataResultObtained = plugin.getDataOutput()
        EDAssert.strAlmostEqual(xsDataResultReference.marshal(), xsDataResultObtained.marshal(), "XSDataResult output are the same", _strExcluded="bioSaxs")


################################################################################
# Compare spectrum ascii Files
################################################################################

        outputData = open(xsDataResultObtained.getAveragedCurve().getPath().value, "rb").read()
        referenceData = open(os.path.join(self.getTestsDataImagesHome(), "bioSaxsAveraged.dat"), "rb").read()

        EDAssert.strAlmostEqual(referenceData, outputData, _strComment="3-column ascii spectra files spectra are the same", _fRelError=0.1, _fAbsError=0.1, _strExcluded="bioSaxs")

################################################################################
# Compare images 
################################################################################
        edfObt = EdfFile.EdfFile(xsDataResultObtained.getAveragedImage().getPath().value)
        edfRef = EdfFile.EdfFile(os.path.join(self.getTestsDataImagesHome(), "bioSaxsAveraged.edf"))
        outputData = edfObt.GetData(0)
        referenceData = edfRef.GetData(0)
        EDAssert.arraySimilar(outputData, referenceData , _fAbsMaxDelta=0.1, _fScaledMaxDelta=0.05, _strComment="Averaged images are the same")

        headerRef = edfRef.GetHeader(0)
        headerObt = edfObt.GetHeader(0)
        keysRef = headerRef.keys()
        keysObt = headerObt.keys()
        keysRef.sort()
        keysObt.sort()
        for key in ["HeaderID", "Image", 'EDF_BinarySize', "EDF_DataBlockID", "EDF_HeaderSize", "filename", "RasterOrientation", "History-1", "History-1~1" ]:
            if key in keysObt: keysObt.remove(key)
            if key in keysRef: keysRef.remove(key)
        EDAssert.equal(keysRef, keysObt, _strComment="Same keys in the header dictionary for Corrected Images")
        for key in keysRef:
            EDAssert.strAlmostEqual(headerRef[key], headerObt[key], _strComment="header value in Averaged %s are the same" % key, _strExcluded="bioSaxs")