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) self.loadTestImage([ "bioSaxsRaw.edf", "bioSaxsMask.edf", "bioSaxsCorrected.edf", "bioSaxsProcessNormalized.edf", "bioSaxsProcessIntegrated.edf", "bioSaxsProcessIntegrated.dat" ]) strExpectedOutput = self.readAndParseFile( self.getReferenceDataOutputFile()) EDVerbose.DEBUG("strExpectedOutput:" + strExpectedOutput) xsDataResultReference = XSDataResultBioSaxsProcessOneFilev1_0.parseString( strExpectedOutput) self.refNormImg = xsDataResultReference.normalizedImage.path.value self.refIntImg = xsDataResultReference.integratedImage.path.value self.refIntCrv = xsDataResultReference.integratedCurve.path.value if not os.path.isdir(os.path.dirname(self.refNormImg)): os.makedirs(os.path.dirname(self.refNormImg)) if os.path.isfile(self.refNormImg): os.remove(self.refNormImg) if os.path.isfile(self.refIntImg): os.remove(self.refIntImg) if os.path.isfile(self.refIntCrv): os.remove(self.refIntCrv)
def testExecute(self): """ """ self.run() plugin = self.getPlugin() ################################################################################ # Compare XSDataResults ################################################################################ strExpectedOutput = self.readAndParseFile (self.getReferenceDataOutputFile()) EDVerbose.DEBUG("Checking obtained result...") xsDataResultReference = XSDataResultBioSaxsProcessOneFilev1_0.parseString(strExpectedOutput) xsDataResultObtained = plugin.getDataOutput() EDAssert.strAlmostEqual(xsDataResultReference.marshal(), xsDataResultObtained.marshal(), "XSDataResult output are the same", _strExcluded="bioSaxs") ################################################################################ # Compare Ascii HEADER files ################################################################################ asciiObt = os.linesep.join([i.strip() for i in open(xsDataResultObtained.integratedCurve.path.value) if i.startswith("#") and "Raster" not in i]) asciiRef = os.linesep.join([i.strip() for i in open(os.path.join(self.getTestsDataImagesHome(), "bioSaxsProcessIntegrated1_2.dat")) if i.startswith("#") and "Raster" not in i]) EDAssert.strAlmostEqual(asciiObt, asciiRef, _strComment="ascii header files are the same", _fRelError=0.1, _strExcluded=os.environ["USER"]) dataObt = numpy.loadtxt(xsDataResultObtained.integratedCurve.path.value) dataRef = numpy.loadtxt(os.path.join(self.getTestsDataImagesHome(), "bioSaxsProcessIntegrated1_2.dat")) EDAssert.curveSimilar((dataObt[:, 0], dataObt[:, 1]), (dataRef[:, 0], dataRef[:, 1]), "data are the same", 0.6) EDAssert.curveSimilar((dataObt[:, 0], dataObt[:, 2]), (dataRef[:, 0], dataRef[:, 2]), "errors are the same", 0.6) EDVerbose.screen("Execution time for %s: %.3fs" % (plugin.getClassName(), plugin.getRunTime()))
def testExecute(self): """ """ self.run() plugin = self.getPlugin() ################################################################################ # Compare XSDataResults ################################################################################ strExpectedOutput = self.readAndParseFile (self.getReferenceDataOutputFile()) EDVerbose.DEBUG("Checking obtained result...") xsDataResultReference = XSDataResultBioSaxsProcessOneFilev1_0.parseString(strExpectedOutput) xsDataResultObtained = plugin.getDataOutput() EDAssert.strAlmostEqual(xsDataResultReference.marshal(), xsDataResultObtained.marshal(), "XSDataResult output are the same", _strExcluded="bioSaxs") ################################################################################ # Compare dictionary ################################################################################ obtFile = xsDataResultObtained.integratedImage.path.value refFile = os.path.join(self.getTestsDataImagesHome(), "bioSaxsProcessIntegrated.edf") EDVerbose.DEBUG("fileRef=%s fileObt=%s" % (refFile, obtFile)) edfRef = openimage(refFile) edfObt = openimage(obtFile) headerRef = edfRef.header headerObt = edfObt.header keysRef = headerRef.keys() keysObt = headerObt.keys() keysRef.sort() keysObt.sort() # EDAssert.equal(keysRef, keysObt, _strComment="Same keys in the header dict") for key in keysRef: if not (key.startswith("History") or key in [ "Compression", "DDummy", "Dummy", "EDF_HeaderSize", "HeaderID", "Image", "filename", "RasterOrientation"]): EDAssert.strAlmostEqual(headerRef[key], headerObt[key], _strComment="header value %s are the same" % key, _strExcluded="bioSaxs") ################################################################################ # Compare images ################################################################################ outputData = edfRef.data referenceData = edfObt.data EDAssert.arraySimilar(numpy.maximum(outputData, 0), numpy.maximum(referenceData, 0) , _fScaledMaxDelta=0.05, _strComment="Images-data are the same") outputData = edfRef.next().data referenceData = edfObt.next().data EDAssert.arraySimilar(numpy.maximum(outputData, 0), numpy.maximum(referenceData, 0) , _fScaledMaxDelta=0.05, _strComment="Images-ESD are the same") ################################################################################ # Compare Ascii files ################################################################################ asciiObt = os.linesep.join([i.strip() for i in open(xsDataResultObtained.integratedCurve.path.value) if "Raster" not in i]) asciiRef = os.linesep.join([i.strip() for i in open(os.path.join(self.getTestsDataImagesHome(), "bioSaxsProcessIntegrated1_1.dat")) if "Raster" not in i]) EDAssert.strAlmostEqual(asciiRef, asciiObt, _strComment="3 column ascii files are the same", _fRelError=0.1, _strExcluded=os.environ["USER"]) EDVerbose.screen("Execution time for %s: %.3fs" % (plugin.getClassName(), plugin.getRunTime()))
def testExecute(self): """ """ self.run() plugin = self.getPlugin() ################################################################################ # Compare XSDataResults ################################################################################ strExpectedOutput = self.readAndParseFile (self.getReferenceDataOutputFile()) EDVerbose.DEBUG("Checking obtained result...") xsDataResultReference = XSDataResultBioSaxsProcessOneFilev1_0.parseString(strExpectedOutput) xsDataResultObtained = plugin.getDataOutput() EDAssert.strAlmostEqual(xsDataResultReference.marshal(), xsDataResultObtained.marshal(), "XSDataResult output are the same", _strExcluded="bioSaxs") ################################################################################ # Compare dictionary ################################################################################ obtFile = xsDataResultObtained.integratedImage.path.value refFile = os.path.join(self.getTestsDataImagesHome(), "bioSaxsProcessIntegrated.edf") EDVerbose.DEBUG("fileRef=%s fileObt=%s" % (refFile, obtFile)) edfRef = openimage(refFile) edfObt = openimage(obtFile) headerRef = edfRef.header headerObt = edfObt.header keysRef = headerRef.keys() keysObt = headerObt.keys() keysRef.sort() keysObt.sort() # EDAssert.equal(keysRef, keysObt, _strComment="Same keys in the header dict") for key in keysRef: if not (key.startswith("History") or key in [ "Compression", "DDummy", "Dummy", "EDF_HeaderSize", "HeaderID", "Image", "filename", "RasterOrientation"]): EDAssert.strAlmostEqual(headerRef[key], headerObt[key], _strComment="header value %s are the same" % key, _strExcluded="bioSaxs") ################################################################################ # Compare images ################################################################################ outputData = edfRef.data referenceData = edfObt.data EDAssert.arraySimilar(numpy.maximum(outputData, 0), numpy.maximum(referenceData, 0) , _fScaledMaxDelta=0.05, _strComment="Images-data are the same") outputData = edfRef.next().data referenceData = edfObt.next().data EDAssert.arraySimilar(numpy.maximum(outputData, 0), numpy.maximum(referenceData, 0) , _fScaledMaxDelta=0.05, _strComment="Images-ESD are the same") ################################################################################ # Compare Ascii files ################################################################################ asciiObt = os.linesep.join([i.strip() for i in open(xsDataResultObtained.integratedCurve.path.value) if "Raster" not in i]) asciiRef = os.linesep.join([i.strip() for i in open(os.path.join(self.getTestsDataImagesHome(), "bioSaxsProcessIntegrated1_1.dat")) if "Raster" not in i]) EDAssert.strAlmostEqual(asciiRef, asciiObt, _strComment="3 column ascii files are the same", _fRelError=0.1, _strExcluded=os.environ["USER"]) EDVerbose.screen("Execution time for %s: %.3fs" % (plugin.getClassName(), plugin.getRunTime()))
def postProcess(self, _edObject=None): EDPluginControl.postProcess(self) self.DEBUG("EDPluginBioSaxsProcessOneFilev1_1.postProcess") # Create some output data xsDataResult = XSDataResultBioSaxsProcessOneFilev1_0() xsDataResult.normalizedImage = self.normalizedImage xsDataResult.integratedImage = self.integratedImage xsDataResult.integratedCurve = self.integratedCurve xsDataResult.status = XSDataStatus(executiveSummary=XSDataString(os.linesep.join(self.lstExecutiveSummary))) self.setDataOutput(xsDataResult)
def postProcess(self, _edObject=None): EDPluginControl.postProcess(self) self.DEBUG("EDPluginBioSaxsProcessOneFilev1_3.postProcess") # Create some output data xsDataResult = XSDataResultBioSaxsProcessOneFilev1_0() if os.path.exists(self.integratedCurve): xsDataResult.integratedCurve = XSDataFile(XSDataString(self.integratedCurve)) xsDataResult.sample = self.sample xsDataResult.experimentSetup = self.experimentSetup xsDataResult.status = XSDataStatus(executiveSummary=XSDataString(os.linesep.join(self.lstExecutiveSummary))) self.setDataOutput(xsDataResult)
def __init__(self): """ """ EDPluginControl.__init__(self) self.setXSDataInputClass(XSDataInputBioSaxsProcessOneFilev1_0) self.__edPluginWaitFile = None self.rawImage = None self.rawImageSize = XSDataInteger(1024) self.normalizedImage = None self.integratedCurve = None self.integratedImage = None self.lstExecutiveSummary = [] self.sample = None self.experimentSetup = None self.integrator_config = {} self.scale = None self.detector = None self.xsDataResult = XSDataResultBioSaxsProcessOneFilev1_0()
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) self.loadTestImage(["bioSaxsRaw.edf", "bioSaxsMask.edf", "bioSaxsCorrected.edf", "bioSaxsProcessNormalized.edf", "bioSaxsProcessIntegrated.edf", "bioSaxsProcessIntegrated1_2.dat"]) strExpectedOutput = self.readAndParseFile (self.getReferenceDataOutputFile()) EDVerbose.DEBUG("strExpectedOutput:" + strExpectedOutput) xsDataResultReference = XSDataResultBioSaxsProcessOneFilev1_0.parseString(strExpectedOutput) self.refNormImg = xsDataResultReference.normalizedImage.path.value self.refIntCrv = xsDataResultReference.integratedCurve.path.value if not os.path.isdir(os.path.dirname(self.refNormImg)): os.makedirs(os.path.dirname(self.refNormImg)) if os.path.isfile(self.refNormImg): os.remove(self.refNormImg) if os.path.isfile(self.refIntCrv): os.remove(self.refIntCrv) EDUtilsParallel.initializeNbThread()