本文整理匯總了Python中XSDataCommon.XSDataImage.setPath方法的典型用法代碼示例。如果您正苦於以下問題:Python XSDataImage.setPath方法的具體用法?Python XSDataImage.setPath怎麽用?Python XSDataImage.setPath使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類XSDataCommon.XSDataImage
的用法示例。
在下文中一共展示了XSDataImage.setPath方法的11個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。
示例1: doSuccessExecMetadata
# 需要導入模塊: from XSDataCommon import XSDataImage [as 別名]
# 或者: from XSDataCommon.XSDataImage import setPath [as 別名]
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)
示例2: createDataMOSFLMOutputGeneratePrediction
# 需要導入模塊: from XSDataCommon import XSDataImage [as 別名]
# 或者: from XSDataCommon.XSDataImage import setPath [as 別名]
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
示例3: postProcess
# 需要導入模塊: from XSDataCommon import XSDataImage [as 別名]
# 或者: from XSDataCommon.XSDataImage import setPath [as 別名]
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)
示例4: postProcess
# 需要導入模塊: from XSDataCommon import XSDataImage [as 別名]
# 或者: from XSDataCommon.XSDataImage import setPath [as 別名]
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)
示例5: doSucessGetMetadata
# 需要導入模塊: from XSDataCommon import XSDataImage [as 別名]
# 或者: from XSDataCommon.XSDataImage import setPath [as 別名]
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()
示例6: makeXML
# 需要導入模塊: from XSDataCommon import XSDataImage [as 別名]
# 或者: from XSDataCommon.XSDataImage import setPath [as 別名]
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()
示例7: postProcess
# 需要導入模塊: from XSDataCommon import XSDataImage [as 別名]
# 或者: from XSDataCommon.XSDataImage import setPath [as 別名]
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)
示例8: process
# 需要導入模塊: from XSDataCommon import XSDataImage [as 別名]
# 或者: from XSDataCommon.XSDataImage import setPath [as 別名]
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)
示例9: process
# 需要導入模塊: from XSDataCommon import XSDataImage [as 別名]
# 或者: from XSDataCommon.XSDataImage import setPath [as 別名]
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()
#.........這裏部分代碼省略.........
示例10: postProcess
# 需要導入模塊: from XSDataCommon import XSDataImage [as 別名]
# 或者: from XSDataCommon.XSDataImage import setPath [as 別名]
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)
示例11: process
# 需要導入模塊: from XSDataCommon import XSDataImage [as 別名]
# 或者: from XSDataCommon.XSDataImage import setPath [as 別名]
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)
#.........這裏部分代碼省略.........