def process(self, _edObject=None):
     """
     Uses ToolsForCollectionWebService for storing the workflow status
     """
     EDPluginExec.process(self)
     self.DEBUG("EDPluginISPyBGetSampleInformationv1_4.process")
     # First get the image ID
     xsDataInputGetSampleInformation = self.getDataInput()
     httpAuthenticatedToolsForCollectionWebService = HttpAuthenticated(username=self.strUserName, password=self.strPassWord)
     clientToolsForBLSampleWebServiceWsdl = Client(self.strToolsForBLSampleWebServiceWsdl, transport=httpAuthenticatedToolsForCollectionWebService)
     iSampleId = self.getXSValue(xsDataInputGetSampleInformation.sampleId)
     sampleInfo = clientToolsForBLSampleWebServiceWsdl.service.getSampleInformation(iSampleId)
     self.DEBUG("Sample info from ISPyB: %r" % sampleInfo)
     if sampleInfo is not None:
         if "code" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.code = XSDataString(sampleInfo.code)
         if "cellA" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.cellA = XSDataDouble(sampleInfo.cellA)
         if "cellB" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.cellB = XSDataDouble(sampleInfo.cellB)
         if "cellC" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.cellC = XSDataDouble(sampleInfo.cellC)
         if "cellAlpha" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.cellAlpha = XSDataDouble(sampleInfo.cellAlpha)
         if "cellBeta" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.cellBeta = XSDataDouble(sampleInfo.cellBeta)
         if "cellGamma" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.cellGamma = XSDataDouble(sampleInfo.cellGamma)
         if "containerSampleChangerLocation" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.containerSampleChangerLocation = XSDataString(sampleInfo.containerSampleChangerLocation)
         if "crystalSpaceGroup" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.crystalSpaceGroup = XSDataString(sampleInfo.crystalSpaceGroup)
         if "experimentType" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.experimentType = XSDataString(sampleInfo.experimentType)
         if "holderLength" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.holderLength = XSDataDouble(sampleInfo.holderLength)
         if "minimalResolution" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.minimalResolution = XSDataDouble(sampleInfo.minimalResolution)
         if "proteinAcronym" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.proteinAcronym = XSDataString(sampleInfo.proteinAcronym)
         if "sampleId" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.sampleId = XSDataInteger(sampleInfo.sampleId)
         if "sampleLocation" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.sampleLocation = XSDataString(sampleInfo.sampleLocation)
         if "sampleName" in sampleInfo:
             self.xsDataResultISPyBGetSampleInformation.sampleName = XSDataString(sampleInfo.sampleName)
         if "diffractionPlan" in sampleInfo:
             xsDataISPyBDiffractionPlan = XSDataISPyBDiffractionPlan()
             if "aimedCompleteness" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.aimedCompleteness = XSDataDouble(sampleInfo.diffractionPlan.aimedCompleteness)
             if "aimedIOverSigmaAtHighestResolution" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.aimedIOverSigmaAtHighestResolution = XSDataDouble(sampleInfo.diffractionPlan.aimedIOverSigmaAtHighestResolution)
             if "aimedMultiplicity" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.aimedMultiplicity = XSDataDouble(sampleInfo.diffractionPlan.aimedMultiplicity)
             if "aimedResolution" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.aimedResolution = XSDataDouble(sampleInfo.diffractionPlan.aimedResolution)
             if "anomalousData" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.anomalousData = XSDataBoolean(sampleInfo.diffractionPlan.anomalousData)
             if "comments" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.comments = XSDataString(sampleInfo.diffractionPlan.comments)
             if "complexity" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.complexity = XSDataString(sampleInfo.diffractionPlan.complexity)
             if "diffractionPlanId" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.diffractionPlanId = XSDataInteger(sampleInfo.diffractionPlan.diffractionPlanId)
             if "estimateRadiationDamage" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.estimateRadiationDamage = XSDataBoolean(sampleInfo.diffractionPlan.estimateRadiationDamage)
             if "experimentKind" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.experimentKind = XSDataString(sampleInfo.diffractionPlan.experimentKind)
             if "exposureTime" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.exposureTime = XSDataDouble(sampleInfo.diffractionPlan.exposureTime)
             if "forcedSpaceGroup" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.forcedSpaceGroup = XSDataString(sampleInfo.diffractionPlan.forcedSpaceGroup)
             if "kappaStrategyOption" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.kappaStrategyOption = XSDataString(sampleInfo.diffractionPlan.kappaStrategyOption)
             if "maxDimAccrossSpindleAxis" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.maxDimAccrossSpindleAxis = XSDataDouble(sampleInfo.diffractionPlan.maxDimAccrossSpindleAxis)
             if "maximalResolution" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.maximalResolution = XSDataDouble(sampleInfo.diffractionPlan.maximalResolution)
             if "minDimAccrossSpindleAxis" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.minDimAccrossSpindleAxis = XSDataDouble(sampleInfo.diffractionPlan.minDimAccrossSpindleAxis)
             if "minimalResolution" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.minimalResolution = XSDataDouble(sampleInfo.diffractionPlan.minimalResolution)
             if "numberOfPositions" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.numberOfPositions = XSDataInteger(sampleInfo.diffractionPlan.numberOfPositions)
             if "observedResolution" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.observedResolution = XSDataDouble(sampleInfo.diffractionPlan.observedResolution)
             if "oscillationRange" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.oscillationRange = XSDataDouble(sampleInfo.diffractionPlan.oscillationRange)
             if "preferredBeamSizeX" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.preferredBeamSizeX = XSDataDouble(sampleInfo.diffractionPlan.preferredBeamSizeX)
             if "preferredBeamSizeY" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.preferredBeamSizeY = XSDataDouble(sampleInfo.diffractionPlan.preferredBeamSizeY)
             if "radiationSensitivity" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.radiationSensitivity = XSDataDouble(sampleInfo.diffractionPlan.radiationSensitivity)
             if "radiationSensitivityBeta" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.radiationSensitivityBeta = XSDataDouble(sampleInfo.diffractionPlan.radiationSensitivityBeta)
             if "radiationSensitivityGamma" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.radiationSensitivityGamma = XSDataDouble(sampleInfo.diffractionPlan.radiationSensitivityGamma)
             if "requiredCompleteness" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.requiredCompleteness = XSDataDouble(sampleInfo.diffractionPlan.requiredCompleteness)
             if "requiredMultiplicity" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.requiredMultiplicity = XSDataDouble(sampleInfo.diffractionPlan.requiredMultiplicity)
             if "requiredResolution" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.requiredResolution = XSDataDouble(sampleInfo.diffractionPlan.requiredResolution)
             if "screeningResolution" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.screeningResolution = XSDataDouble(sampleInfo.diffractionPlan.screeningResolution)
             if "anomalousScatterer" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.anomalousScatterer = XSDataString(sampleInfo.diffractionPlan.anomalousScatterer)
             if "strategyOption" in sampleInfo.diffractionPlan:
                 xsDataISPyBDiffractionPlan.strategyOption = XSDataString(sampleInfo.diffractionPlan.strategyOption)
             self.xsDataResultISPyBGetSampleInformation.diffractionPlan = xsDataISPyBDiffractionPlan
     self.DEBUG("EDPluginISPyBGetSampleInformationv1_4.process: result=%s" % pprint.pformat(self.xsDataResultISPyBGetSampleInformation))
 def generateXSDataISPyBDiffractionPlan(_xsDataResultCharacterisation):
     xsDataISPyBDiffractionPlan = None
     xsDataCollection = _xsDataResultCharacterisation.getDataCollection()
     if (xsDataCollection is not None):
         xsDataDiffractionPlan = xsDataCollection.getDiffractionPlan()
         if xsDataDiffractionPlan != None:
             xsDataISPyBDiffractionPlan = XSDataISPyBDiffractionPlan()
             xsDataISPyBDiffractionPlan.aimedCompleteness = xsDataDiffractionPlan.aimedCompleteness
             xsDataISPyBDiffractionPlan.aimedIOverSigmaAtHighestResolution = xsDataDiffractionPlan.aimedIOverSigmaAtHighestResolution
             xsDataISPyBDiffractionPlan.aimedMultiplicity = xsDataDiffractionPlan.aimedMultiplicity
             xsDataISPyBDiffractionPlan.aimedResolution = xsDataDiffractionPlan.aimedResolution
             xsDataISPyBDiffractionPlan.anomalousData = xsDataDiffractionPlan.anomalousData
             xsDataISPyBDiffractionPlan.complexity = xsDataDiffractionPlan.complexity
             xsDataISPyBDiffractionPlan.detectorDistanceMax = xsDataDiffractionPlan.detectorDistanceMax
             xsDataISPyBDiffractionPlan.detectorDistanceMin = xsDataDiffractionPlan.detectorDistanceMin
             xsDataISPyBDiffractionPlan.estimateRadiationDamage = xsDataDiffractionPlan.estimateRadiationDamage
             xsDataISPyBDiffractionPlan.forcedSpaceGroup = xsDataDiffractionPlan.forcedSpaceGroup
             xsDataISPyBDiffractionPlan.goniostatMaxOscillationSpeed = xsDataDiffractionPlan.goniostatMaxOscillationSpeed
             xsDataISPyBDiffractionPlan.goniostatMinOscillationWidth = xsDataDiffractionPlan.goniostatMinOscillationWidth
             strAllKappaStrategyOptions = ""
             for kappaStrategyOption in xsDataDiffractionPlan.kappaStrategyOption:
                 strAllKappaStrategyOptions += kappaStrategyOption.value
                 # Add a comma to separate entries except for the last item
                 if kappaStrategyOption != xsDataDiffractionPlan.kappaStrategyOption[-1]:
                     strAllKappaStrategyOptions += ", "
             if strAllKappaStrategyOptions != "":
                 xsDataISPyBDiffractionPlan.kappaStrategyOption = XSDataString(strAllKappaStrategyOptions)
             xsDataISPyBDiffractionPlan.maxExposureTimePerDataCollection = xsDataDiffractionPlan.maxExposureTimePerDataCollection
             xsDataISPyBDiffractionPlan.minExposureTimePerImage = xsDataDiffractionPlan.minExposureTimePerImage
             xsDataISPyBDiffractionPlan.minTransmission = xsDataDiffractionPlan.minTransmission
             xsDataISPyBDiffractionPlan.numberOfPositions = xsDataDiffractionPlan.numberOfPositions
             xsDataISPyBDiffractionPlan.requiredCompleteness = xsDataDiffractionPlan.requiredCompleteness
             xsDataISPyBDiffractionPlan.requiredMultiplicity = xsDataDiffractionPlan.requiredMultiplicity
             xsDataISPyBDiffractionPlan.requiredResolution = xsDataDiffractionPlan.requiredResolution
             xsDataISPyBDiffractionPlan.strategyOption = xsDataDiffractionPlan.strategyOption            
     return xsDataISPyBDiffractionPlan
 def generateXSDataISPyBDiffractionPlan(_xsDataResultCharacterisation):
     xsDataISPyBDiffractionPlan = None
     xsDataCollection = _xsDataResultCharacterisation.getDataCollection()
     if (xsDataCollection is not None):
         xsDataDiffractionPlan = xsDataCollection.getDiffractionPlan()
         if xsDataDiffractionPlan != None:
             xsDataISPyBDiffractionPlan = XSDataISPyBDiffractionPlan()
             xsDataISPyBDiffractionPlan.aimedCompleteness = xsDataDiffractionPlan.aimedCompleteness
             xsDataISPyBDiffractionPlan.aimedIOverSigmaAtHighestResolution = xsDataDiffractionPlan.aimedIOverSigmaAtHighestResolution
             xsDataISPyBDiffractionPlan.aimedMultiplicity = xsDataDiffractionPlan.aimedMultiplicity
             xsDataISPyBDiffractionPlan.aimedResolution = xsDataDiffractionPlan.aimedResolution
             xsDataISPyBDiffractionPlan.anomalousData = xsDataDiffractionPlan.anomalousData
             xsDataISPyBDiffractionPlan.complexity = xsDataDiffractionPlan.complexity
             xsDataISPyBDiffractionPlan.detectorDistanceMax = xsDataDiffractionPlan.detectorDistanceMax
             xsDataISPyBDiffractionPlan.detectorDistanceMin = xsDataDiffractionPlan.detectorDistanceMin
             xsDataISPyBDiffractionPlan.estimateRadiationDamage = xsDataDiffractionPlan.estimateRadiationDamage
             xsDataISPyBDiffractionPlan.forcedSpaceGroup = xsDataDiffractionPlan.forcedSpaceGroup
             xsDataISPyBDiffractionPlan.goniostatMaxOscillationSpeed = xsDataDiffractionPlan.goniostatMaxOscillationSpeed
             xsDataISPyBDiffractionPlan.goniostatMinOscillationWidth = xsDataDiffractionPlan.goniostatMinOscillationWidth
             strAllKappaStrategyOptions = ""
             for kappaStrategyOption in xsDataDiffractionPlan.kappaStrategyOption:
                 strAllKappaStrategyOptions += kappaStrategyOption.value
                 # Add a comma to separate entries except for the last item
                 if kappaStrategyOption != xsDataDiffractionPlan.kappaStrategyOption[
                         -1]:
                     strAllKappaStrategyOptions += ", "
             if strAllKappaStrategyOptions != "":
                 xsDataISPyBDiffractionPlan.kappaStrategyOption = XSDataString(
                     strAllKappaStrategyOptions)
             xsDataISPyBDiffractionPlan.maxExposureTimePerDataCollection = xsDataDiffractionPlan.maxExposureTimePerDataCollection
             xsDataISPyBDiffractionPlan.minExposureTimePerImage = xsDataDiffractionPlan.minExposureTimePerImage
             xsDataISPyBDiffractionPlan.minTransmission = xsDataDiffractionPlan.minTransmission
             xsDataISPyBDiffractionPlan.numberOfPositions = xsDataDiffractionPlan.numberOfPositions
             xsDataISPyBDiffractionPlan.requiredCompleteness = xsDataDiffractionPlan.requiredCompleteness
             xsDataISPyBDiffractionPlan.requiredMultiplicity = xsDataDiffractionPlan.requiredMultiplicity
             xsDataISPyBDiffractionPlan.requiredResolution = xsDataDiffractionPlan.requiredResolution
             xsDataISPyBDiffractionPlan.strategyOption = xsDataDiffractionPlan.strategyOption
     return xsDataISPyBDiffractionPlan