def doSuccessExecMetadata(self, _edPlugin=None): self.DEBUG("EDPluginBioSaxsNormalizev1_0.doSuccessExecMetadata") self.retrieveSuccessMessages(_edPlugin, "EDPluginBioSaxsNormalizev1_0.doSuccessExecMetadata") if os.path.isfile(self.strNormalizedImage): xsNormFile = XSDataImage() xsNormFile.setPath(XSDataString(self.strNormalizedImage)) self.xsdResult.setNormalizedImage(xsNormFile)
def doSuccessExecMetadata(self, _edPlugin=None): self.DEBUG("EDPluginBioSaxsNormalizev1_0.doSuccessExecMetadata") self.retrieveSuccessMessages(_edPlugin, "EDPluginBioSaxsNormalizev1_0.doSuccessExecMetadata") if os.path.isfile(self.strNormalizedImage): xsNormFile = XSDataImage() xsNormFile.setPath(XSDataString(self.strNormalizedImage)) self.xsdResult.setNormalizedImage(xsNormFile)
def postProcess(self, _edObject=None): EDPluginControl.postProcess(self) self.DEBUG("EDPluginBioSaxsNormalizev1_1.postProcess") if os.path.isfile(self.strNormalizedImage): xsNormFile = XSDataImage() xsNormFile.setPath(XSDataString(self.strNormalizedImage)) self.xsdResult.setNormalizedImage(xsNormFile) self.xsdResult.status = XSDataStatus(executiveSummary=XSDataString(os.linesep.join(self.lstProcessLog))) # Create some output data self.setDataOutput(self.xsdResult)
def createDataMOSFLMOutputGeneratePrediction(self): EDVerbose.DEBUG("EDPluginMOSFLMGeneratePredictionv10.createDataMOSFLMOutputIntegration") xsDataMOSFLMInputGeneratePrediction = self.getDataInput() xsDataMOSFLMImage = xsDataMOSFLMInputGeneratePrediction.getImage() iImageNumber = xsDataMOSFLMImage.getNumber().getValue() xsDataMOSFLMOutputGeneratePrediction = XSDataMOSFLMOutputGeneratePrediction() xsDataImage = XSDataImage() xsDataImage.setNumber(XSDataInteger(iImageNumber)) xsDataImage.setPath(XSDataString(os.path.join(self.getWorkingDirectory(), self.getPredictionImageFileName()))) xsDataMOSFLMOutputGeneratePrediction.setPredictionImage(xsDataImage) return xsDataMOSFLMOutputGeneratePrediction
def postProcess(self, _edObject=None): EDPluginControl.postProcess(self) self.DEBUG("EDPluginBioSaxsNormalizev1_1.postProcess") if os.path.isfile(self.strNormalizedImage): xsNormFile = XSDataImage() xsNormFile.setPath(XSDataString(self.strNormalizedImage)) self.xsdResult.setNormalizedImage(xsNormFile) self.xsdResult.status = XSDataStatus(executiveSummary=XSDataString(os.linesep.join(self.lstProcessLog))) # Create some output data self.setDataOutput(self.xsdResult)
def doSucessGetMetadata(self, _edPlugin=None): EDVerbose.DEBUG("EDPluginBioSaxsAveragev1_0.doSuccessGetMetadata") # self.strProcessLog += "Averaging EDF images to '%s'\n" % (self.averagedImage) self.xsdMetadata = _edPlugin.getDataOutput() xsdSaxsMac = XSDataInputSaxsMacv1_0() prefix = os.path.commonprefix(self.integratedImages) listFilesReversed = [] for oneFile in self.integratedImages: revLst = list(oneFile) revLst.reverse() listFilesReversed.append("".join(revLst)) revLst = list(os.path.commonprefix(listFilesReversed)) revLst.reverse() suffix = "".join(revLst) lenSuffix = len(suffix) lenPrefix = len(prefix) maxdif = 0 maxInt = 0 miniInt = sys.maxint for oneFile in self.integratedImages: lenOneFile = len(oneFile) if lenOneFile - lenSuffix - lenPrefix > maxdif: maxdif = lenOneFile - lenSuffix - lenPrefix try: val = int(oneFile[lenPrefix:-lenSuffix]) except Exception: val = None pass if val is not None: if val < miniInt: miniInt = val if val > maxInt: maxInt = val strImages = prefix + """%""" * maxdif + suffix + ",%i,%i" % (miniInt, maxInt) self.strProcessLog += "Averaging images '%s' to %s\n" % ( strImages, self.averagedImage) EDVerbose.DEBUG("Averaging '%s'\n" % (strImages)) xsdImage = XSDataImage() xsdImage.setPath(XSDataString(strImages)) xsdiSaxsMac = XSDataInputSaxsMacv1_0() xsdiSaxsMac.setInputImage(xsdImage) xsdiSaxsMac.setOutputImage(self.dataInput.getAveragedImage()) xsdiSaxsMac.setOptions( XSDataString("+pass -omod n +var -add %d" % len(self.integratedImages))) xsdiSaxsMac.setMultConst(XSDataDouble(1.0 / len(self.integratedImages))) self.__edPluginSaxsMac.setDataInput(xsdiSaxsMac) self.__edPluginSaxsMac.connectSUCCESS(self.doSuccessSaxsMac) self.__edPluginSaxsMac.connectFAILURE(self.doFailureSaxsMac) self.__edPluginSaxsMac.executeSynchronous()
def makeXML(self, filename): """Here we create the XML string to be passed to the EDNA plugin from the input filename This can / should be modified by the final user @param filename: full path of the input file @type filename: python string representing the path @rtype: XML string @return: python string """ bProcessFile = False basename = os.path.basename(filename) for oneExt in self.listExtensions: if basename.endswith(oneExt): bProcessFile = True break if bProcessFile: for onePref in self.listExcludedPrefix: if basename.startswith(onePref): bProcessFile = False if not bProcessFile: EDVerbose.screen("Not processing file: %s" % filename) return xsdimage = XSDataImage() xsdimage.setPath(XSDataString(filename)) xsd = XSDataInputDiffractionCT() xsd.setImage(xsdimage) xsd.setDestinationDirectory(self.destinationDirectory) xsd.setSinogramFileNamePrefix(self.sinogramFileNamePrefix) xsd.setPowderDiffractionSubdirectory( self.powderDiffractionSubdirectory) xsd.setPowderDiffractionFormat(self.powderDiffractionFormat) if self.indexOffset is not None and self.fastMotorSteps is not None: idx = 0 basename = list(os.path.splitext(os.path.basename(filename))[0]) basename.reverse() number = "" for i in basename: if i.isdigit(): number = i + number else: break idx = int(number) - self.indexOffset if idx < 0: return self.forceInstrument.set_tomo_spec_displ_x( XSDataLength(idx % (self.fastMotorSteps + 1))) self.forceInstrument.set_tomo_spec_displ_rotation( XSDataLength(idx // (self.fastMotorSteps + 1))) xsd.setOverrideScanParam(self.forceInstrument) xsd.setOverrideImageParam(self.forceImage) return xsd.marshal()
def createDataMOSFLMOutputGeneratePrediction(self): self.DEBUG("EDPluginMOSFLMGeneratePredictionv10.createDataMOSFLMOutputIntegration") xsDataMOSFLMInputGeneratePrediction = self.getDataInput() xsDataMOSFLMImage = xsDataMOSFLMInputGeneratePrediction.getImage() iImageNumber = xsDataMOSFLMImage.getNumber().getValue() xsDataMOSFLMOutputGeneratePrediction = XSDataMOSFLMOutputGeneratePrediction() xsDataImage = XSDataImage() xsDataImage.setNumber(XSDataInteger(iImageNumber)) xsDataImage.setPath(XSDataString(os.path.join(self.getWorkingDirectory(), self.getPredictionImageFileName()))) xsDataMOSFLMOutputGeneratePrediction.setPredictionImage(xsDataImage) # Path to log file xsDataMOSFLMOutputGeneratePrediction.setPathToLogFile(XSDataFile(XSDataString(os.path.join(self.getWorkingDirectory(), self.getScriptLogFileName())))) return xsDataMOSFLMOutputGeneratePrediction
def postProcess(self, _edObject=None): EDPluginExecProcessScript.postProcess(self) EDVerbose.DEBUG("EDPluginExecSaxsMacv1_0.postProcess") # Create some output data xsDataResult = XSDataResultSaxsMacv1_0() if self.outputImage is None: self.outputImage = "output.edf" if os.path.isfile(self.outputImage): xsdFile = XSDataImage() xsdFile.setPath(XSDataString(os.path.abspath(self.outputImage))) xsDataResult.setOutputImage(xsdFile) self.setDataOutput(xsDataResult)
def postProcess(self, _edObject=None): EDPluginControl.postProcess(self) EDVerbose.DEBUG("EDPluginBioSaxsMetadatav1_0.postProcess") # Create some output data xsDataResult = XSDataResultBioSaxsMetadatav1_0() if self.strOutputImage is not None: xsdImage = XSDataImage() xsdImage.setPath(XSDataString(self.strOutputImage)) xsDataResult.setOutputImage(xsdImage) if self.detector is not None: # EDVerbose.DEBUG("Detector=%s" % self.detector) xsDataResult.setDetector(XSDataString(self.detector)) if self.detectorDistance is not None: # EDVerbose.DEBUG("DetectorDistance %s(%s)" % (self.detectorDistance, self.detectorDistance.__class__)) xsDataResult.setDetectorDistance( XSDataLength(self.detectorDistance)) if self.pixelSize_1 is not None: # EDVerbose.DEBUG("pixelSize_1 %s(%s)" % (self.pixelSize_1, self.pixelSize_1.__class__)) xsDataResult.setPixelSize_1(XSDataLength(self.pixelSize_1)) if self.pixelSize_2 is not None: # EDVerbose.DEBUG("pixelSize_2 %s(%s)" % (self.pixelSize_2, self.pixelSize_2.__class__)) xsDataResult.setPixelSize_2(XSDataLength(self.pixelSize_2)) if self.beamCenter_1 is not None: # EDVerbose.DEBUG("beamCenter_1 %s(%s)" % (self.beamCenter_1, self.beamCenter_1.__class__)) xsDataResult.setBeamCenter_1(XSDataDouble(self.beamCenter_1)) if self.beamCenter_2 is not None: # EDVerbose.DEBUG("beamCenter_2 %s(%s)" % (self.beamCenter_2, self.beamCenter_2.__class__)) xsDataResult.setBeamCenter_2(XSDataDouble(self.beamCenter_2)) if self.beamStopDiode is not None: # EDVerbose.DEBUG("beamStopDiode %s(%s)" % (self.beamStopDiode, self.beamStopDiode.__class__)) xsDataResult.setBeamStopDiode(XSDataDouble(self.beamStopDiode)) if self.wavelength is not None: xsDataResult.setWavelength(XSDataWavelength(self.wavelength)) if self.maskFile is not None: xsdFile = XSDataImage() xsdFile.setPath(XSDataString(self.maskFile)) xsDataResult.setMaskFile(xsdFile) if self.normalizationFactor is not None: xsDataResult.setNormalizationFactor( XSDataDouble(self.normalizationFactor)) if self.machineCurrent is not None: xsDataResult.setMachineCurrent(XSDataDouble(self.machineCurrent)) if self.code is not None: xsDataResult.setCode(XSDataString(self.code)) if self.comments is not None: xsDataResult.setComments(XSDataString(self.comments)) if self.concentration is not None: xsDataResult.setConcentration(XSDataDouble(self.concentration)) EDVerbose.DEBUG("xsDataResult=%s" % xsDataResult.marshal()) self.setDataOutput(xsDataResult)
def postProcess(self, _edObject=None): EDPluginControl.postProcess(self) EDVerbose.DEBUG("EDPluginBioSaxsMetadatav1_0.postProcess") # Create some output data xsDataResult = XSDataResultBioSaxsMetadatav1_0() if self.strOutputImage is not None: xsdImage = XSDataImage() xsdImage.setPath(XSDataString(self.strOutputImage)) xsDataResult.setOutputImage(xsdImage) if self.detector is not None: # EDVerbose.DEBUG("Detector=%s" % self.detector) xsDataResult.setDetector(XSDataString(self.detector)) if self.detectorDistance is not None: # EDVerbose.DEBUG("DetectorDistance %s(%s)" % (self.detectorDistance, self.detectorDistance.__class__)) xsDataResult.setDetectorDistance(XSDataLength(self.detectorDistance)) if self.pixelSize_1 is not None: # EDVerbose.DEBUG("pixelSize_1 %s(%s)" % (self.pixelSize_1, self.pixelSize_1.__class__)) xsDataResult.setPixelSize_1(XSDataLength(self.pixelSize_1)) if self.pixelSize_2 is not None: # EDVerbose.DEBUG("pixelSize_2 %s(%s)" % (self.pixelSize_2, self.pixelSize_2.__class__)) xsDataResult.setPixelSize_2(XSDataLength(self.pixelSize_2)) if self.beamCenter_1 is not None: # EDVerbose.DEBUG("beamCenter_1 %s(%s)" % (self.beamCenter_1, self.beamCenter_1.__class__)) xsDataResult.setBeamCenter_1(XSDataDouble(self.beamCenter_1)) if self.beamCenter_2 is not None: # EDVerbose.DEBUG("beamCenter_2 %s(%s)" % (self.beamCenter_2, self.beamCenter_2.__class__)) xsDataResult.setBeamCenter_2(XSDataDouble(self.beamCenter_2)) if self.beamStopDiode is not None: # EDVerbose.DEBUG("beamStopDiode %s(%s)" % (self.beamStopDiode, self.beamStopDiode.__class__)) xsDataResult.setBeamStopDiode(XSDataDouble(self.beamStopDiode)) if self.wavelength is not None: xsDataResult.setWavelength(XSDataWavelength(self.wavelength)) if self.maskFile is not None: xsdFile = XSDataImage() xsdFile.setPath(XSDataString(self.maskFile)) xsDataResult.setMaskFile(xsdFile) if self.normalizationFactor is not None: xsDataResult.setNormalizationFactor(XSDataDouble(self.normalizationFactor)) if self.machineCurrent is not None: xsDataResult.setMachineCurrent(XSDataDouble(self.machineCurrent)) if self.code is not None: xsDataResult.setCode(XSDataString(self.code)) if self.comments is not None: xsDataResult.setComments(XSDataString(self.comments)) if self.concentration is not None: xsDataResult.setConcentration(XSDataDouble(self.concentration)) EDVerbose.DEBUG("xsDataResult=%s" % xsDataResult.marshal()) self.setDataOutput(xsDataResult)
def makeXML(self, filename): """Here we create the XML string to be passed to the EDNA plugin from the input filename This can / should be modified by the final user @param filename: full path of the input file @type filename: python string representing the path @rtype: XML string @return: python string """ bProcessFile = False basename = os.path.basename(filename) for oneExt in self.listExtensions: if basename.endswith(oneExt): bProcessFile = True break if bProcessFile: for onePref in self.listExcludedPrefix: if basename.startswith(onePref): bProcessFile = False if not bProcessFile: EDVerbose.screen("Not processing file: %s" % filename) return xsdimage = XSDataImage() xsdimage.setPath(XSDataString(filename)) xsd = XSDataInputDiffractionCT() xsd.setImage(xsdimage) xsd.setDestinationDirectory(self.destinationDirectory) xsd.setSinogramFileNamePrefix(self.sinogramFileNamePrefix) xsd.setPowderDiffractionSubdirectory(self.powderDiffractionSubdirectory) xsd.setPowderDiffractionFormat(self.powderDiffractionFormat) if self.indexOffset is not None and self.fastMotorSteps is not None: idx = 0 basename = list(os.path.splitext(os.path.basename(filename))[0]) basename.reverse() number = "" for i in basename: if i.isdigit(): number = i + number else: break idx = int(number) - self.indexOffset if idx < 0:return self.forceInstrument.set_tomo_spec_displ_x(XSDataLength(idx % (self.fastMotorSteps + 1))) self.forceInstrument.set_tomo_spec_displ_rotation(XSDataLength(idx // (self.fastMotorSteps + 1))) xsd.setOverrideScanParam(self.forceInstrument) xsd.setOverrideImageParam(self.forceImage) return xsd.marshal()
def doSucessGetMetadata(self, _edPlugin=None): EDVerbose.DEBUG("EDPluginBioSaxsAveragev1_0.doSuccessGetMetadata") # self.strProcessLog += "Averaging EDF images to '%s'\n" % (self.averagedImage) self.xsdMetadata = _edPlugin.getDataOutput() xsdSaxsMac = XSDataInputSaxsMacv1_0() prefix = os.path.commonprefix(self.integratedImages) listFilesReversed = [] for oneFile in self.integratedImages: revLst = list(oneFile) revLst.reverse() listFilesReversed.append("".join(revLst)) revLst = list(os.path.commonprefix(listFilesReversed)) revLst.reverse() suffix = "".join(revLst) lenSuffix = len(suffix) lenPrefix = len(prefix) maxdif = 0 maxInt = 0 miniInt = sys.maxint for oneFile in self.integratedImages: lenOneFile = len(oneFile) if lenOneFile - lenSuffix - lenPrefix > maxdif: maxdif = lenOneFile - lenSuffix - lenPrefix try: val = int(oneFile[lenPrefix:-lenSuffix]) except Exception: val = None pass if val is not None: if val < miniInt: miniInt = val if val > maxInt: maxInt = val strImages = prefix + """%""" * maxdif + suffix + ",%i,%i" % (miniInt, maxInt) self.strProcessLog += "Averaging images '%s' to %s\n" % (strImages, self.averagedImage) EDVerbose.DEBUG("Averaging '%s'\n" % (strImages)) xsdImage = XSDataImage() xsdImage.setPath(XSDataString(strImages)) xsdiSaxsMac = XSDataInputSaxsMacv1_0() xsdiSaxsMac.setInputImage(xsdImage) xsdiSaxsMac.setOutputImage(self.dataInput.getAveragedImage()) xsdiSaxsMac.setOptions(XSDataString("+pass -omod n +var -add %d" % len(self.integratedImages))) xsdiSaxsMac.setMultConst(XSDataDouble(1.0 / len(self.integratedImages))) self.__edPluginSaxsMac.setDataInput(xsdiSaxsMac) self.__edPluginSaxsMac.connectSUCCESS(self.doSuccessSaxsMac) self.__edPluginSaxsMac.connectFAILURE(self.doFailureSaxsMac) self.__edPluginSaxsMac.executeSynchronous()
def process(self, _edObject=None): EDPluginExec.process(self) self.DEBUG("EDPluginExecReadImageHeaderEiger4Mv10.process") xsDataInputReadImageHeader = self.getDataInput() xsDataFile = xsDataInputReadImageHeader.getImage() strPath = xsDataFile.getPath().getValue() dictEiger4MHeader = self.readHeaderEiger4M(strPath) if (dictEiger4MHeader is None): strErrorMessage = "EDPluginExecReadImageHeaderEiger4Mv10.process : Cannot read header : %s" % strPath self.error(strErrorMessage) self.addErrorMessage(strErrorMessage) self.setFailure() else: xsDataExperimentalCondition = XSDataExperimentalCondition() xsDataDetector = XSDataDetector() iNoPixelsX = 2070 iNoPixelsY = 2167 xsDataDetector.setNumberPixelX(XSDataInteger(iNoPixelsX)) xsDataDetector.setNumberPixelY(XSDataInteger(iNoPixelsY)) # Pixel size listPixelSizeXY = dictEiger4MHeader[ "Pixel_size" ].split(" ") fPixelSizeX = float(listPixelSizeXY[0]) * 1000 xsDataDetector.setPixelSizeX(XSDataLength(fPixelSizeX)) fPixelSizeY = float(listPixelSizeXY[3]) * 1000 xsDataDetector.setPixelSizeY(XSDataLength(fPixelSizeY)) # Beam position listBeamPosition = dictEiger4MHeader["Beam_xy"].replace("(", " ").replace(")", " ").replace(",", " ").split() fBeamPositionX = float(listBeamPosition[1]) * fPixelSizeX fBeamPositionY = float(listBeamPosition[0]) * fPixelSizeY xsDataDetector.setBeamPositionX(XSDataLength(fBeamPositionX)) xsDataDetector.setBeamPositionY(XSDataLength(fBeamPositionY)) fDistance = float(dictEiger4MHeader[ "Detector_distance" ].split(" ")[0]) * 1000 xsDataDetector.setDistance(XSDataLength(fDistance)) # xsDataDetector.setNumberBytesInHeader(XSDataInteger(float(dictEiger4MHeader[ "header_size" ]))) xsDataDetector.setSerialNumber(XSDataString(dictEiger4MHeader[ "Detector:" ])) # #xsDataDetector.setBin( XSDataString( dictEiger4MHeader[ "BIN" ] ) ) ) # #xsDataDetector.setDataType( XSDataString( dictEiger4MHeader[ "TYPE" ] ) ) ) # #xsDataDetector.setByteOrder( XSDataString( dictEiger4MHeader[ "BYTE_ORDER" ] ) ) ) # xsDataDetector.setImageSaturation(XSDataInteger(int(dictEiger4MHeader[ "saturation_level" ]))) xsDataDetector.setName(XSDataString("EIGER 4M")) xsDataDetector.setType(XSDataString("eiger4m")) xsDataExperimentalCondition.setDetector(xsDataDetector) # Beam object xsDataBeam = XSDataBeam() xsDataBeam.setWavelength(XSDataWavelength(float(dictEiger4MHeader[ "Wavelength" ].split(" ")[0]))) xsDataBeam.setExposureTime(XSDataTime(float(dictEiger4MHeader[ "Exposure_time" ].split(" ")[0]))) xsDataExperimentalCondition.setBeam(xsDataBeam) # Goniostat object xsDataGoniostat = XSDataGoniostat() fRotationAxisStart = float(dictEiger4MHeader[ "Start_angle" ].split(" ")[0]) fOscillationWidth = float(dictEiger4MHeader[ "Angle_increment" ].split(" ")[0]) xsDataGoniostat.setRotationAxisStart(XSDataAngle(fRotationAxisStart)) xsDataGoniostat.setRotationAxisEnd(XSDataAngle(fRotationAxisStart + fOscillationWidth)) xsDataGoniostat.setOscillationWidth(XSDataAngle(fOscillationWidth)) xsDataExperimentalCondition.setGoniostat(xsDataGoniostat) # # Create the image object xsDataImage = XSDataImage() xsDataImage.setPath(XSDataString(strPath)) if "DateTime" in dictEiger4MHeader: strTimeStamp = dictEiger4MHeader[ "DateTime" ] xsDataImage.setDate(XSDataString(strTimeStamp)) iImageNumber = EDUtilsImage.getImageNumber(strPath) xsDataImage.setNumber(XSDataInteger(iImageNumber)) xsDataSubWedge = XSDataSubWedge() xsDataSubWedge.setExperimentalCondition(xsDataExperimentalCondition) xsDataSubWedge.addImage(xsDataImage) self.__xsDataResultReadImageHeader = XSDataResultReadImageHeader() self.__xsDataResultReadImageHeader.setSubWedge(xsDataSubWedge)
def process(self, _edObject=None): EDPluginExec.process(self) EDVerbose.DEBUG("*** EDPluginExecReadImageHeaderADSCv10.process") xsDataInputReadImageHeader = self.getDataInput() xsDataFile = xsDataInputReadImageHeader.getImage() strPath = xsDataFile.getPath().getValue() strAbsolutePath = os.path.abspath(strPath) dictHeader = self.readHeaderADSC(strPath) if (dictHeader is None): strErrorMessage = "EDPluginExecReadImageHeaderADSCv10.process : error when reading header from %s" % strAbsolutePath EDVerbose.error(strErrorMessage) self.addErrorMessage(strErrorMessage) self.setFailure() else: xsDataExperimentalCondition = XSDataExperimentalCondition() xsDataDetector = XSDataDetector() xsDataDetector.setBeamPositionX(XSDataLength(float(dictHeader[ "BEAM_CENTER_X" ]))) xsDataDetector.setBeamPositionY(XSDataLength(float(dictHeader[ "BEAM_CENTER_Y" ]))) xsDataDetector.setDistance(XSDataLength(float(dictHeader[ "DISTANCE" ]))) fPixelSize = float(dictHeader[ "PIXEL_SIZE" ]) xsDataDetector.setPixelSizeX(XSDataLength(fPixelSize)) xsDataDetector.setPixelSizeY(XSDataLength(fPixelSize)) if "TWOTHETA" in dictHeader.keys(): xsDataDetector.setTwoTheta(XSDataAngle(float(dictHeader[ "TWOTHETA" ]))) xsDataDetector.setNumberBytesInHeader(XSDataInteger(float(dictHeader[ "HEADER_BYTES" ]))) xsDataDetector.setSerialNumber(XSDataString(dictHeader[ "DETECTOR_SN" ])) xsDataDetector.setNumberPixelX(XSDataInteger(int(dictHeader[ "SIZE1" ]))) xsDataDetector.setNumberPixelY(XSDataInteger(int(dictHeader[ "SIZE2" ]))) xsDataDetector.setBin(XSDataString(dictHeader[ "BIN" ])) xsDataDetector.setDataType(XSDataString(dictHeader[ "TYPE" ])) xsDataDetector.setByteOrder(XSDataString(dictHeader[ "BYTE_ORDER" ])) if "CCD_IMAGE_SATURATION" in dictHeader.keys(): xsDataDetector.setImageSaturation(XSDataInteger(int(dictHeader[ "CCD_IMAGE_SATURATION" ]))) # Determine type of detector... iNoPixelsX = xsDataDetector.getNumberPixelX().getValue() iNoPixelsY = xsDataDetector.getNumberPixelY().getValue() if (iNoPixelsX == 2304 and iNoPixelsY == 2304): xsDataDetector.setName(XSDataString("ADSC Q4")) xsDataDetector.setType(XSDataString("q4")) elif (iNoPixelsX == 1152 and iNoPixelsY == 1152): xsDataDetector.setName(XSDataString("ADSC Q4 bin 2x2")) xsDataDetector.setType(XSDataString("q4-2x")) elif (iNoPixelsX == 4096 and iNoPixelsY == 4096): xsDataDetector.setName(XSDataString("ADSC Q210")) xsDataDetector.setType(XSDataString("q210")) elif (iNoPixelsX == 2048 and iNoPixelsY == 2048): xsDataDetector.setName(XSDataString("ADSC Q210 bin 2x2")) xsDataDetector.setType(XSDataString("q210-2x")) elif (iNoPixelsX == 6144 and iNoPixelsY == 6144): xsDataDetector.setName(XSDataString("ADSC Q315")) xsDataDetector.setType(XSDataString("q315")) elif (iNoPixelsX == 3072 and iNoPixelsY == 3072): xsDataDetector.setName(XSDataString("ADSC Q315 bin 2x2")) xsDataDetector.setType(XSDataString("q315-2x")) else: strErrorMessage = EDMessage.ERROR_DATA_HANDLER_02 % ("EDPluginExecReadImageHeaderADSCv10.process", "Unknown detector type") EDVerbose.error(strErrorMessage) self.addErrorMessage(strErrorMessage) raise RuntimeError, strErrorMessage xsDataExperimentalCondition.setDetector(xsDataDetector) # Beam object xsDataBeam = XSDataBeam() xsDataBeam.setWavelength(XSDataWavelength(float(dictHeader[ "WAVELENGTH" ]))) xsDataBeam.setExposureTime(XSDataTime(float(dictHeader[ "TIME" ]))) xsDataExperimentalCondition.setBeam(xsDataBeam) # Goniostat object xsDataGoniostat = XSDataGoniostat() fRotationAxisStart = float(dictHeader[ "OSC_START" ]) fOscillationWidth = float(dictHeader[ "OSC_RANGE" ]) xsDataGoniostat.setRotationAxisStart(XSDataAngle(fRotationAxisStart)) xsDataGoniostat.setRotationAxisEnd(XSDataAngle(fRotationAxisStart + fOscillationWidth)) xsDataGoniostat.setOscillationWidth(XSDataAngle(fOscillationWidth)) strRotationAxis = None if ("AXIS" in dictHeader.keys()): strRotationAxis = dictHeader[ "AXIS" ] elif ("OSC_AXIS" in dictHeader.keys()): strRotationAxis = dictHeader[ "OSC_AXIS" ] else: strErrorMessage = "EDPluginExecReadImageHeaderADSCv10.process : Neither AXIS nor OSC_AXIS header item found." EDVerbose.error(strErrorMessage) self.addErrorMessage(strErrorMessage) self.setFailure() xsDataGoniostat.setRotationAxis(XSDataString(strRotationAxis)) xsDataExperimentalCondition.setGoniostat(xsDataGoniostat) # Create the image object xsDataImage = XSDataImage() xsDataImage.setPath(XSDataString(strAbsolutePath)) xsDataImage.setDate(XSDataString(dictHeader[ "DATE" ])) strFileName = os.path.basename(strPath) iImageNumber = EDUtilsImage.getImageNumber(strFileName) xsDataImage.setNumber(XSDataInteger(iImageNumber)) xsDataSubWedge = XSDataSubWedge() xsDataSubWedge.setExperimentalCondition(xsDataExperimentalCondition) xsDataSubWedge.addImage(xsDataImage) self.__xsDataResultReadImageHeader = XSDataResultReadImageHeader() self.__xsDataResultReadImageHeader.setSubWedge(xsDataSubWedge)
def postProcess(self, _edObject=None): """ complex type XSDataBioSaxsExperimentSetup extends XSData{ detector : XSDataString optional detectorDistance : XSDataLength optional pixelSize_1 : XSDataLength optional pixelSize_2 : XSDataLength optional beamCenter_1 : XSDataDouble optional beamCenter_2 : XSDataDouble optional beamStopDiode : XSDataDouble optional wavelength : XSDataWavelength optional machineCurrent : XSDataDouble optional maskFile : XSDataImage optional normalizationFactor : XSDataDouble optional storageTemperature: XSDataDouble optional exposureTemperature: XSDataDouble optional exposureTime: XSDataTime optional frameNumber: XSDataInteger optional frameMax: XSDataInteger optional } complex type XSDataBioSaxsSample extends XSData { concentration : XSDataDouble optional comments : XSDataString optional code : XSDataString optional temperature: XSDataDouble optional """ EDPluginExec.postProcess(self) EDVerbose.DEBUG("EDPluginBioSaxsMetadatav1_1.postProcess") # Create some output data xsDataResult = XSDataResultBioSaxsMetadatav1_0() xsdSample = XSDataBioSaxsSample() xsdExperiment = XSDataBioSaxsExperimentSetup() if self.strOutputImage is not None: xsdImage = XSDataImage() xsdImage.setPath(XSDataString(self.strOutputImage)) xsDataResult.setOutputImage(xsdImage) if self.detector is not None: xsdExperiment.detector = xsDataResult.detector = XSDataString(self.detector) if self.detectorDistance is not None: xsdExperiment.detectorDistance = xsDataResult.detectorDistance = XSDataLength(self.detectorDistance) if self.pixelSize_1 is not None: xsDataResult.pixelSize_1 = XSDataLength(self.pixelSize_1) xsdExperiment.pixelSize_1 = xsDataResult.pixelSize_1 if self.pixelSize_2 is not None: xsDataResult.pixelSize_2 = XSDataLength(self.pixelSize_2) xsdExperiment.pixelSize_2 = xsDataResult.pixelSize_2 if self.beamCenter_1 is not None: xsDataResult.beamCenter_1 = XSDataDouble(self.beamCenter_1) xsdExperiment.beamCenter_1 = xsDataResult.beamCenter_1 if self.beamCenter_2 is not None: xsDataResult.beamCenter_2 = XSDataDouble(self.beamCenter_2) xsdExperiment.beamCenter_2 = xsDataResult.beamCenter_2 if self.beamStopDiode is not None: xsdExperiment.beamStopDiode = xsDataResult.beamStopDiode = XSDataDouble(self.beamStopDiode) if self.wavelength is not None: xsdExperiment.wavelength = xsDataResult.wavelength = XSDataWavelength(self.wavelength) if self.maskFile is not None: xsdFile = XSDataImage() xsdFile.setPath(XSDataString(self.maskFile)) xsdExperiment.maskFile = xsDataResult.maskFile = xsdFile if self.normalizationFactor is not None: xsdExperiment.normalizationFactor = xsDataResult.normalizationFactor = XSDataDouble(self.normalizationFactor) if self.machineCurrent is not None: xsdExperiment.machineCurrent = xsDataResult.machineCurrent = XSDataDouble(self.machineCurrent) if self.storageTemperature is not None: xsdExperiment.storageTemperature = xsDataResult.storageTemperature = XSDataDouble(self.storageTemperature) if self.exposureTemperature is not None: xsdExperiment.exposureTemperature = xsDataResult.exposureTemperature = XSDataDouble(self.exposureTemperature) if self.exposureTime is not None: xsdExperiment.exposureTime = xsDataResult.exposureTime = XSDataTime(self.exposureTime) if self.frameNumber is not None: xsdExperiment.frameNumber = xsDataResult.frameNumber = XSDataInteger(self.frameNumber) if self.frameMax is not None: xsdExperiment.frameMax = xsDataResult.frameMax = XSDataInteger(self.frameMax) if self.timeOfFrame is not None: xsdExperiment.timeOfFrame = xsDataResult.timeOfFrame = XSDataTime(self.timeOfFrame) if self.code is not None: xsdSample.code = xsDataResult.code = XSDataString(self.code) if self.comments is not None: xsdSample.comments = xsDataResult.comments = XSDataString(self.comments) if self.concentration is not None: xsdSample.concentration = xsDataResult.concentration = XSDataDouble(self.concentration) xsDataResult.sample = xsdSample xsDataResult.experimentSetup = xsdExperiment self.setDataOutput(xsDataResult)
def process(self, _edObject=None): EDPluginExec.process(self) EDVerbose.DEBUG("EDPluginExecReadImageHeaderMARCCDv10.process") xsDataInputReadImageHeader = self.getDataInput() xsDataFile = xsDataInputReadImageHeader.getImage() strPath = xsDataFile.getPath().getValue() dictMARCCDHeader = self.readHeaderMarccd(strPath) if (dictMARCCDHeader is None): strErrorMessage = "EDPluginExecReadImageHeaderMARCCDv10.process : Cannot read header : %s" % strPath EDVerbose.error(strErrorMessage) self.addErrorMessage(strErrorMessage) self.setFailure() else: xsDataExperimentalCondition = XSDataExperimentalCondition() xsDataDetector = XSDataDetector() iNoPixelsX = int(dictMARCCDHeader[ "nslow" ]) iNoPixelsY = int(dictMARCCDHeader[ "nfast" ]) xsDataDetector.setNumberPixelX(XSDataInteger(iNoPixelsX)) xsDataDetector.setNumberPixelY(XSDataInteger(iNoPixelsY)) fPixelSizeX = float(dictMARCCDHeader[ "pixelsize_x" ]) / 1000.0 xsDataDetector.setPixelSizeX(XSDataLength(fPixelSizeX)) fPixelSizeY = float(dictMARCCDHeader[ "pixelsize_y" ]) / 1000.0 xsDataDetector.setPixelSizeY(XSDataLength(fPixelSizeY)) fBeamPositionX = float(dictMARCCDHeader[ "beam_x" ]) / 1000.0 fBeamPositionY = float(dictMARCCDHeader[ "beam_y" ]) / 1000.0 # Fix for bug 397 - check if the beam position is close to the centre of the image fTwoTheta = float(dictMARCCDHeader[ "end_twotheta" ]) / 1000.0 xsDataDetector.setTwoTheta(XSDataAngle(fTwoTheta)) if (abs(fTwoTheta) < 0.1): if (abs(fBeamPositionX / (fPixelSizeX / 1000.0) - iNoPixelsX / 2.0) > (2 * iNoPixelsX)): fBeamPositionX = fBeamPositionX * fPixelSizeX / 1000.0 fBeamPositionY = fBeamPositionY * fPixelSizeY / 1000.0 xsDataDetector.setBeamPositionX(XSDataLength(fBeamPositionX)) xsDataDetector.setBeamPositionY(XSDataLength(fBeamPositionY)) fDistance = float(dictMARCCDHeader[ "xtal_to_detector" ]) / 1000.0 if (abs(fDistance) < 0.1): fDistanceStart = float(dictMARCCDHeader[ "start_xtal_to_detector" ]) / 1000.0 fDistanceEnd = float(dictMARCCDHeader[ "end_xtal_to_detector" ]) / 1000.0 if (abs(fDistanceStart - fDistanceEnd) < 0.1): fDistance = fDistanceStart else: # Somethings very wrong with the distances... strErrorMessage = "EDPluginExecReadImageHeaderMARCCDv10.process : Inconsistency in MAR CCD image header: start_xtal_to_detector = %d, end_xtal_to_detector = %d" % \ (fDistanceStart, fDistanceEnd) EDVerbose.error(strErrorMessage) self.addErrorMessage(strErrorMessage) self.setFailure() xsDataDetector.setDistance(XSDataLength(fDistance)) xsDataDetector.setNumberBytesInHeader(XSDataInteger(float(dictMARCCDHeader[ "header_size" ]))) # xsDataDetector.setSerialNumber( XSDataInteger( dictMARCCDHeader[ "DETECTOR_SN" ] ) ) ) # xsDataDetector.setBin( XSDataString( dictMARCCDHeader[ "BIN" ] ) ) ) # xsDataDetector.setDataType( XSDataString( dictMARCCDHeader[ "TYPE" ] ) ) ) # xsDataDetector.setByteOrder( XSDataString( dictMARCCDHeader[ "BYTE_ORDER" ] ) ) ) xsDataDetector.setImageSaturation(XSDataInteger(int(dictMARCCDHeader[ "saturation_level" ]))) # Determine type of detector... if (iNoPixelsX == 2048 and iNoPixelsY == 2048): xsDataDetector.setName(XSDataString("MAR CCD 165")) xsDataDetector.setType(XSDataString("mar165")) elif (iNoPixelsX == 3072 and iNoPixelsY == 3072): xsDataDetector.setName(XSDataString("MAR CCD 225")) xsDataDetector.setType(XSDataString("mar225")) elif (iNoPixelsX == 4096 and iNoPixelsY == 4096): xsDataDetector.setName(XSDataString("MAR CCD 325")) xsDataDetector.setType(XSDataString("mar325")) else: strErrorMessage = EDMessage.ERROR_DATA_HANDLER_02 % ("EDPluginExecReadImageHeaderMARCCDv10.process", "Unknown detector type") EDVerbose.error(strErrorMessage) self.addErrorMessage(strErrorMessage) raise RuntimeError, strErrorMessage xsDataExperimentalCondition.setDetector(xsDataDetector) # Beam object xsDataBeam = XSDataBeam() xsDataBeam.setWavelength(XSDataWavelength(float(dictMARCCDHeader[ "source_wavelength" ]) / 100000.0)) xsDataBeam.setExposureTime(XSDataTime(float(dictMARCCDHeader[ "exposure_time" ]) / 1000.0)) xsDataExperimentalCondition.setBeam(xsDataBeam) # Goniostat object xsDataGoniostat = XSDataGoniostat() fRotationAxisStart = float(dictMARCCDHeader[ "start_phi" ]) / 1000.0 fOscillationWidth = float(dictMARCCDHeader[ "rotation_range" ]) / 1000.0 xsDataGoniostat.setRotationAxisStart(XSDataAngle(fRotationAxisStart)) xsDataGoniostat.setRotationAxisEnd(XSDataAngle(fRotationAxisStart + fOscillationWidth)) xsDataGoniostat.setOscillationWidth(XSDataAngle(fOscillationWidth)) xsDataExperimentalCondition.setGoniostat(xsDataGoniostat) # Create the image object xsDataImage = XSDataImage() xsDataImage.setPath(XSDataString(strPath)) strTimeStamp = dictMARCCDHeader[ "acquire_timestamp" ] xsDataImage.setDate(XSDataString(strTimeStamp)) iImageNumber = EDUtilsImage.getImageNumber(strPath) xsDataImage.setNumber(XSDataInteger(iImageNumber)) xsDataSubWedge = XSDataSubWedge() xsDataSubWedge.setExperimentalCondition(xsDataExperimentalCondition) xsDataSubWedge.addImage(xsDataImage) self.__xsDataResultReadImageHeader = XSDataResultReadImageHeader() self.__xsDataResultReadImageHeader.setSubWedge(xsDataSubWedge)
def process(self, _edObject=None): EDPluginExec.process(self) EDVerbose.DEBUG("EDPluginExecReadImageHeaderMARCCDv10.process") xsDataInputReadImageHeader = self.getDataInput() xsDataFile = xsDataInputReadImageHeader.getImage() strPath = xsDataFile.getPath().getValue() dictMARCCDHeader = self.readHeaderMarccd(strPath) if (dictMARCCDHeader is None): strErrorMessage = "EDPluginExecReadImageHeaderMARCCDv10.process : Cannot read header : %s" % strPath EDVerbose.error(strErrorMessage) self.addErrorMessage(strErrorMessage) self.setFailure() else: xsDataExperimentalCondition = XSDataExperimentalCondition() xsDataDetector = XSDataDetector() iNoPixelsX = int(dictMARCCDHeader["nslow"]) iNoPixelsY = int(dictMARCCDHeader["nfast"]) xsDataDetector.setNumberPixelX(XSDataInteger(iNoPixelsX)) xsDataDetector.setNumberPixelY(XSDataInteger(iNoPixelsY)) fPixelSizeX = float(dictMARCCDHeader["pixelsize_x"]) / 1000.0 xsDataDetector.setPixelSizeX(XSDataLength(fPixelSizeX)) fPixelSizeY = float(dictMARCCDHeader["pixelsize_y"]) / 1000.0 xsDataDetector.setPixelSizeY(XSDataLength(fPixelSizeY)) fBeamPositionX = float(dictMARCCDHeader["beam_x"]) / 1000.0 fBeamPositionY = float(dictMARCCDHeader["beam_y"]) / 1000.0 # Fix for bug 397 - check if the beam position is close to the centre of the image fTwoTheta = float(dictMARCCDHeader["end_twotheta"]) / 1000.0 xsDataDetector.setTwoTheta(XSDataAngle(fTwoTheta)) if (abs(fTwoTheta) < 0.1): if (abs(fBeamPositionX / (fPixelSizeX / 1000.0) - iNoPixelsX / 2.0) > (2 * iNoPixelsX)): fBeamPositionX = fBeamPositionX * fPixelSizeX / 1000.0 fBeamPositionY = fBeamPositionY * fPixelSizeY / 1000.0 xsDataDetector.setBeamPositionX(XSDataLength(fBeamPositionX)) xsDataDetector.setBeamPositionY(XSDataLength(fBeamPositionY)) fDistance = float(dictMARCCDHeader["xtal_to_detector"]) / 1000.0 if (abs(fDistance) < 0.1): fDistanceStart = float( dictMARCCDHeader["start_xtal_to_detector"]) / 1000.0 fDistanceEnd = float( dictMARCCDHeader["end_xtal_to_detector"]) / 1000.0 if (abs(fDistanceStart - fDistanceEnd) < 0.1): fDistance = fDistanceStart else: # Somethings very wrong with the distances... strErrorMessage = "EDPluginExecReadImageHeaderMARCCDv10.process : Inconsistency in MAR CCD image header: start_xtal_to_detector = %d, end_xtal_to_detector = %d" % \ (fDistanceStart, fDistanceEnd) EDVerbose.error(strErrorMessage) self.addErrorMessage(strErrorMessage) self.setFailure() xsDataDetector.setDistance(XSDataLength(fDistance)) xsDataDetector.setNumberBytesInHeader( XSDataInteger(float(dictMARCCDHeader["header_size"]))) #xsDataDetector.setSerialNumber( XSDataInteger( dictMARCCDHeader[ "DETECTOR_SN" ] ) ) ) #xsDataDetector.setBin( XSDataString( dictMARCCDHeader[ "BIN" ] ) ) ) #xsDataDetector.setDataType( XSDataString( dictMARCCDHeader[ "TYPE" ] ) ) ) #xsDataDetector.setByteOrder( XSDataString( dictMARCCDHeader[ "BYTE_ORDER" ] ) ) ) xsDataDetector.setImageSaturation( XSDataInteger(int(dictMARCCDHeader["saturation_level"]))) # Determine type of detector... if (iNoPixelsX == 2048 and iNoPixelsY == 2048): xsDataDetector.setName(XSDataString("MAR CCD 165")) xsDataDetector.setType(XSDataString("mar165")) elif (iNoPixelsX == 3072 and iNoPixelsY == 3072): xsDataDetector.setName(XSDataString("MAR CCD 225")) xsDataDetector.setType(XSDataString("mar225")) elif (iNoPixelsX == 4096 and iNoPixelsY == 4096): xsDataDetector.setName(XSDataString("MAR CCD 325")) xsDataDetector.setType(XSDataString("mar325")) else: strErrorMessage = EDMessage.ERROR_DATA_HANDLER_02 % ( "EDPluginExecReadImageHeaderMARCCDv10.process", "Unknown detector type") EDVerbose.error(strErrorMessage) self.addErrorMessage(strErrorMessage) raise RuntimeError, strErrorMessage xsDataExperimentalCondition.setDetector(xsDataDetector) # Beam object xsDataBeam = XSDataBeam() xsDataBeam.setWavelength( XSDataWavelength( float(dictMARCCDHeader["source_wavelength"]) / 100000.0)) xsDataBeam.setExposureTime( XSDataTime(float(dictMARCCDHeader["exposure_time"]) / 1000.0)) xsDataExperimentalCondition.setBeam(xsDataBeam) # Goniostat object xsDataGoniostat = XSDataGoniostat() fRotationAxisStart = float(dictMARCCDHeader["start_phi"]) / 1000.0 fOscillationWidth = float( dictMARCCDHeader["rotation_range"]) / 1000.0 xsDataGoniostat.setRotationAxisStart( XSDataAngle(fRotationAxisStart)) xsDataGoniostat.setRotationAxisEnd( XSDataAngle(fRotationAxisStart + fOscillationWidth)) xsDataGoniostat.setOscillationWidth(XSDataAngle(fOscillationWidth)) xsDataExperimentalCondition.setGoniostat(xsDataGoniostat) # Create the image object xsDataImage = XSDataImage() xsDataImage.setPath(XSDataString(strPath)) strTimeStamp = dictMARCCDHeader["acquire_timestamp"] xsDataImage.setDate(XSDataString(strTimeStamp)) iImageNumber = EDUtilsImage.getImageNumber(strPath) xsDataImage.setNumber(XSDataInteger(iImageNumber)) xsDataSubWedge = XSDataSubWedge() xsDataSubWedge.setExperimentalCondition( xsDataExperimentalCondition) xsDataSubWedge.addImage(xsDataImage) self.__xsDataResultReadImageHeader = XSDataResultReadImageHeader() self.__xsDataResultReadImageHeader.setSubWedge(xsDataSubWedge)
def process(self, _edObject=None): EDPluginExec.process(self) EDVerbose.DEBUG("EDPluginExecReadImageHeaderPilatus2Mv10.process") xsDataInputReadImageHeader = self.getDataInput() xsDataFile = xsDataInputReadImageHeader.getImage() strPath = xsDataFile.getPath().getValue() dictPilatus2MHeader = self.readHeaderPilatus2M(strPath) if (dictPilatus2MHeader is None): strErrorMessage = "EDPluginExecReadImageHeaderPilatus2Mv10.process : Cannot read header : %s" % strPath EDVerbose.error(strErrorMessage) self.addErrorMessage(strErrorMessage) self.setFailure() else: xsDataExperimentalCondition = XSDataExperimentalCondition() xsDataDetector = XSDataDetector() iNoPixelsX = 1475 iNoPixelsY = 1679 xsDataDetector.setNumberPixelX(XSDataInteger(iNoPixelsX)) xsDataDetector.setNumberPixelY(XSDataInteger(iNoPixelsY)) # Pixel size listPixelSizeXY = dictPilatus2MHeader[ "Pixel_size" ].split(" ") fPixelSizeX = float(listPixelSizeXY[0]) * 1000 xsDataDetector.setPixelSizeX(XSDataLength(fPixelSizeX)) fPixelSizeY = float(listPixelSizeXY[3]) * 1000 xsDataDetector.setPixelSizeY(XSDataLength(fPixelSizeY)) # Beam position listBeamPosition = dictPilatus2MHeader["Beam_xy"].replace("(", " ").replace(")", " ").replace(",", " ").split() fBeamPositionX = float(listBeamPosition[1]) * fPixelSizeX fBeamPositionY = float(listBeamPosition[0]) * fPixelSizeY xsDataDetector.setBeamPositionX(XSDataLength(fBeamPositionX)) xsDataDetector.setBeamPositionY(XSDataLength(fBeamPositionY)) fDistance = float(dictPilatus2MHeader[ "Detector_distance" ].split(" ")[0]) * 1000 xsDataDetector.setDistance(XSDataLength(fDistance)) # xsDataDetector.setNumberBytesInHeader(XSDataInteger(float(dictPilatus2MHeader[ "header_size" ]))) xsDataDetector.setSerialNumber(XSDataString(dictPilatus2MHeader[ "Detector:" ])) # #xsDataDetector.setBin( XSDataString( dictPilatus2MHeader[ "BIN" ] ) ) ) # #xsDataDetector.setDataType( XSDataString( dictPilatus2MHeader[ "TYPE" ] ) ) ) # #xsDataDetector.setByteOrder( XSDataString( dictPilatus2MHeader[ "BYTE_ORDER" ] ) ) ) # xsDataDetector.setImageSaturation(XSDataInteger(int(dictPilatus2MHeader[ "saturation_level" ]))) xsDataDetector.setName(XSDataString("PILATUS2 3M")) xsDataDetector.setType(XSDataString("pilatus2m")) xsDataExperimentalCondition.setDetector(xsDataDetector) # Beam object xsDataBeam = XSDataBeam() xsDataBeam.setWavelength(XSDataWavelength(float(dictPilatus2MHeader[ "Wavelength" ].split(" ")[0]))) xsDataBeam.setExposureTime(XSDataTime(float(dictPilatus2MHeader[ "Exposure_time" ].split(" ")[0]))) xsDataExperimentalCondition.setBeam(xsDataBeam) # Goniostat object xsDataGoniostat = XSDataGoniostat() fRotationAxisStart = float(dictPilatus2MHeader[ "Start_angle" ].split(" ")[0]) fOscillationWidth = float(dictPilatus2MHeader[ "Angle_increment" ].split(" ")[0]) xsDataGoniostat.setRotationAxisStart(XSDataAngle(fRotationAxisStart)) xsDataGoniostat.setRotationAxisEnd(XSDataAngle(fRotationAxisStart + fOscillationWidth)) xsDataGoniostat.setOscillationWidth(XSDataAngle(fOscillationWidth)) xsDataExperimentalCondition.setGoniostat(xsDataGoniostat) # # Create the image object xsDataImage = XSDataImage() xsDataImage.setPath(XSDataString(strPath)) if "DateTime" in dictPilatus2MHeader: strTimeStamp = dictPilatus2MHeader[ "DateTime" ] xsDataImage.setDate(XSDataString(strTimeStamp)) iImageNumber = EDUtilsImage.getImageNumber(strPath) xsDataImage.setNumber(XSDataInteger(iImageNumber)) xsDataSubWedge = XSDataSubWedge() xsDataSubWedge.setExperimentalCondition(xsDataExperimentalCondition) xsDataSubWedge.addImage(xsDataImage) self.__xsDataResultReadImageHeader = XSDataResultReadImageHeader() self.__xsDataResultReadImageHeader.setSubWedge(xsDataSubWedge)
def postProcess(self, _edObject=None): """ complex type XSDataBioSaxsExperimentSetup extends XSData{ detector : XSDataString optional detectorDistance : XSDataLength optional pixelSize_1 : XSDataLength optional pixelSize_2 : XSDataLength optional beamCenter_1 : XSDataDouble optional beamCenter_2 : XSDataDouble optional beamStopDiode : XSDataDouble optional wavelength : XSDataWavelength optional machineCurrent : XSDataDouble optional maskFile : XSDataImage optional normalizationFactor : XSDataDouble optional storageTemperature: XSDataDouble optional exposureTemperature: XSDataDouble optional exposureTime: XSDataTime optional frameNumber: XSDataInteger optional frameMax: XSDataInteger optional } complex type XSDataBioSaxsSample extends XSData { concentration : XSDataDouble optional comments : XSDataString optional code : XSDataString optional temperature: XSDataDouble optional """ EDPluginExec.postProcess(self) EDVerbose.DEBUG("EDPluginBioSaxsMetadatav1_1.postProcess") # Create some output data xsDataResult = XSDataResultBioSaxsMetadatav1_0() xsdSample = XSDataBioSaxsSample() xsdExperiment = XSDataBioSaxsExperimentSetup() if self.strOutputImage is not None: xsdImage = XSDataImage() xsdImage.setPath(XSDataString(self.strOutputImage)) xsDataResult.setOutputImage(xsdImage) if self.detector is not None: xsdExperiment.detector = xsDataResult.detector = XSDataString( self.detector) if self.detectorDistance is not None: xsdExperiment.detectorDistance = xsDataResult.detectorDistance = XSDataLength( self.detectorDistance) if self.pixelSize_1 is not None: xsDataResult.pixelSize_1 = XSDataLength(self.pixelSize_1) xsdExperiment.pixelSize_1 = xsDataResult.pixelSize_1 if self.pixelSize_2 is not None: xsDataResult.pixelSize_2 = XSDataLength(self.pixelSize_2) xsdExperiment.pixelSize_2 = xsDataResult.pixelSize_2 if self.beamCenter_1 is not None: xsDataResult.beamCenter_1 = XSDataDouble(self.beamCenter_1) xsdExperiment.beamCenter_1 = xsDataResult.beamCenter_1 if self.beamCenter_2 is not None: xsDataResult.beamCenter_2 = XSDataDouble(self.beamCenter_2) xsdExperiment.beamCenter_2 = xsDataResult.beamCenter_2 if self.beamStopDiode is not None: xsdExperiment.beamStopDiode = xsDataResult.beamStopDiode = XSDataDouble( self.beamStopDiode) if self.wavelength is not None: xsdExperiment.wavelength = xsDataResult.wavelength = XSDataWavelength( self.wavelength) if self.maskFile is not None: xsdFile = XSDataImage() xsdFile.setPath(XSDataString(self.maskFile)) xsdExperiment.maskFile = xsDataResult.maskFile = xsdFile if self.normalizationFactor is not None: xsdExperiment.normalizationFactor = xsDataResult.normalizationFactor = XSDataDouble( self.normalizationFactor) if self.machineCurrent is not None: xsdExperiment.machineCurrent = xsDataResult.machineCurrent = XSDataDouble( self.machineCurrent) if self.storageTemperature is not None: xsdExperiment.storageTemperature = xsDataResult.storageTemperature = XSDataDouble( self.storageTemperature) if self.exposureTemperature is not None: xsdExperiment.exposureTemperature = xsDataResult.exposureTemperature = XSDataDouble( self.exposureTemperature) if self.exposureTime is not None: xsdExperiment.exposureTime = xsDataResult.exposureTime = XSDataTime( self.exposureTime) if self.frameNumber is not None: xsdExperiment.frameNumber = xsDataResult.frameNumber = XSDataInteger( self.frameNumber) if self.frameMax is not None: xsdExperiment.frameMax = xsDataResult.frameMax = XSDataInteger( self.frameMax) if self.timeOfFrame is not None: xsdExperiment.timeOfFrame = xsDataResult.timeOfFrame = XSDataTime( self.timeOfFrame) if self.code is not None: xsdSample.code = xsDataResult.code = XSDataString(self.code) if self.comments is not None: xsdSample.comments = xsDataResult.comments = XSDataString( self.comments) if self.concentration is not None: xsdSample.concentration = xsDataResult.concentration = XSDataDouble( self.concentration) xsDataResult.sample = xsdSample xsDataResult.experimentSetup = xsdExperiment self.setDataOutput(xsDataResult)