def preProcess(self, _edPlugin=None): """ This method prepares the input for the CCP4i plugin and loads it. """ EDPluginControl.preProcess(self, _edPlugin) self.DEBUG("EDPluginControlInterfaceToMXCuBEv1_3.preProcess...") self.tStart = time.time() xsDataInputMXCuBE = self.getDataInput() xsDataInputInterface = XSDataInputInterface() self.edPluginControlInterface = self.loadPlugin( self.strPluginControlInterface) for xsDataSetMXCuBE in xsDataInputMXCuBE.getDataSet(): for xsDataFile in xsDataSetMXCuBE.getImageFile(): xsDataInputInterface.addImagePath(xsDataFile) xsDataInputInterface.setExperimentalCondition( xsDataInputMXCuBE.getExperimentalCondition()) xsDataInputInterface.setDiffractionPlan( xsDataInputMXCuBE.getDiffractionPlan()) xsDataInputInterface.setSample(xsDataInputMXCuBE.getSample()) xsDataInputInterface.setDataCollectionId( xsDataInputMXCuBE.getDataCollectionId()) self.edPluginControlInterface.setDataInput(xsDataInputInterface) #self.edPluginExecOutputHTML = self.loadPlugin(self.strPluginExecOutputHTMLName, "OutputHTML") self.edPluginExecSimpleHTML = self.loadPlugin( self.strPluginExecSimpleHTMLName, "SimpleHTML") self.xsDataResultMXCuBE = XSDataResultMXCuBE()
def process(self, _edPlugin=None): EDPluginControl.process(self, _edPlugin) self.DEBUG("EDPluginControlInterfaceToMXCuBEv1_3.process...") xsDataInputMXCuBE = self.getDataInput() xsDataInputInterface = XSDataInputInterface() self.edPluginControlInterface = self.loadPlugin(self.strPluginControlInterface) xsDataFirstImage = None for xsDataSetMXCuBE in xsDataInputMXCuBE.getDataSet(): for xsDataFile in xsDataSetMXCuBE.getImageFile(): xsDataInputInterface.addImagePath(xsDataFile) if xsDataFirstImage is None: xsDataFirstImage = xsDataFile xsDataExperimentalCondition = self.getFluxAndBeamSizeFromISPyB(xsDataFirstImage, \ xsDataInputMXCuBE.getExperimentalCondition()) xsDataInputInterface.setExperimentalCondition(xsDataExperimentalCondition) xsDataInputInterface.setDiffractionPlan(xsDataInputMXCuBE.getDiffractionPlan()) xsDataInputInterface.setSample(xsDataInputMXCuBE.getSample()) xsDataInputInterface.setDataCollectionId(xsDataInputMXCuBE.getDataCollectionId()) self.edPluginControlInterface.setDataInput(xsDataInputInterface) if self.edPluginControlInterface is not None: self.connectProcess(self.edPluginControlInterface.executeSynchronous) self.edPluginControlInterface.connectSUCCESS(self.doSuccessActionInterface) self.edPluginControlInterface.connectFAILURE(self.doFailureActionInterface)
def process(self, _edPlugin=None): EDPluginControl.process(self, _edPlugin) self.DEBUG("EDPluginControlInterfaceToMXCuBEv1_3.process...") xsDataInputMXCuBE = self.getDataInput() xsDataInputInterface = XSDataInputInterface() self.edPluginControlInterface = self.loadPlugin( self.strPluginControlInterface) xsDataFirstImage = None for xsDataSetMXCuBE in xsDataInputMXCuBE.getDataSet(): for xsDataFile in xsDataSetMXCuBE.getImageFile(): xsDataInputInterface.addImagePath(xsDataFile) if xsDataFirstImage is None: xsDataFirstImage = xsDataFile xsDataExperimentalCondition = self.getFluxAndBeamSizeFromISPyB(xsDataFirstImage, \ xsDataInputMXCuBE.getExperimentalCondition()) xsDataInputInterface.setExperimentalCondition( xsDataExperimentalCondition) xsDataInputInterface.setDiffractionPlan( xsDataInputMXCuBE.getDiffractionPlan()) xsDataInputInterface.setSample(xsDataInputMXCuBE.getSample()) xsDataInputInterface.setDataCollectionId( xsDataInputMXCuBE.getDataCollectionId()) self.edPluginControlInterface.setDataInput(xsDataInputInterface) if self.edPluginControlInterface is not None: self.connectProcess( self.edPluginControlInterface.executeSynchronous) self.edPluginControlInterface.connectSUCCESS( self.doSuccessActionInterface) self.edPluginControlInterface.connectFAILURE( self.doFailureActionInterface)
def preProcess(self, _edPlugin=None): """ This method prepares the input for the CCP4i plugin and loads it. """ EDPluginControl.preProcess(self, _edPlugin) self.DEBUG("EDPluginControlInterfaceToMXCuBEv1_3.preProcess...") self.tStart = time.time() xsDataInputMXCuBE = self.getDataInput() xsDataInputInterface = XSDataInputInterface() self.edPluginControlInterface = self.loadPlugin(self.strPluginControlInterface) for xsDataSetMXCuBE in xsDataInputMXCuBE.getDataSet(): for xsDataFile in xsDataSetMXCuBE.getImageFile(): xsDataInputInterface.addImagePath(xsDataFile) xsDataInputInterface.setExperimentalCondition(xsDataInputMXCuBE.getExperimentalCondition()) xsDataInputInterface.setDiffractionPlan(xsDataInputMXCuBE.getDiffractionPlan()) xsDataInputInterface.setSample(xsDataInputMXCuBE.getSample()) xsDataInputInterface.setDataCollectionId(xsDataInputMXCuBE.getDataCollectionId()) self.edPluginControlInterface.setDataInput(xsDataInputInterface) #self.edPluginExecOutputHTML = self.loadPlugin(self.strPluginExecOutputHTMLName, "OutputHTML") self.edPluginExecSimpleHTML = self.loadPlugin(self.strPluginExecSimpleHTMLName, "SimpleHTML") self.xsDataResultMXCuBE = XSDataResultMXCuBE()
def process(self, _edPlugin=None): EDPluginControl.process(self, _edPlugin) self.DEBUG("EDPluginControlInterfaceToMXCuBEv1_4.process...") xsDataInputMXCuBE = self.getDataInput() xsDataInputInterface = XSDataInputInterface() self.edPluginControlInterface = self.loadPlugin(self.strPluginControlInterface) self.xsDataFirstImage = None for xsDataSetMXCuBE in xsDataInputMXCuBE.getDataSet(): for xsDataFile in xsDataSetMXCuBE.getImageFile(): if xsDataFile.path.value.endswith(".h5"): self.bIsEigerDetector = True self.xsDataFirstImage = xsDataFile xsDataInputControlH5ToCBF = XSDataInputControlH5ToCBF() xsDataInputControlH5ToCBF.hdf5File = XSDataFile(xsDataFile.path) xsDataInputControlH5ToCBF.imageNumber = XSDataInteger( EDUtilsImage.getImageNumber(xsDataFile.path.value) ) edPluginControlH5ToCBF = self.loadPlugin(self.strPluginControlH5ToCBF, "ControlH5ToCBF") edPluginControlH5ToCBF.dataInput = xsDataInputControlH5ToCBF edPluginControlH5ToCBF.executeSynchronous() cbfFile = edPluginControlH5ToCBF.dataOutput.outputCBFFile xsDataInputInterface.addImagePath(cbfFile) else: xsDataInputInterface.addImagePath(xsDataFile) if self.xsDataFirstImage is None: self.xsDataFirstImage = xsDataFile xsDataExperimentalCondition = self.getFluxAndBeamSizeFromISPyB( self.xsDataFirstImage, xsDataInputMXCuBE.getExperimentalCondition() ) xsDataInputInterface.setExperimentalCondition(xsDataExperimentalCondition) xsDataInputInterface.setDiffractionPlan(xsDataInputMXCuBE.getDiffractionPlan()) xsDataInputInterface.setSample(xsDataInputMXCuBE.getSample()) xsDataInputInterface.setDataCollectionId(xsDataInputMXCuBE.getDataCollectionId()) self.edPluginControlInterface.setDataInput(xsDataInputInterface) if self.edPluginControlInterface is not None: self.connectProcess(self.edPluginControlInterface.executeSynchronous) self.edPluginControlInterface.connectSUCCESS(self.doSuccessActionInterface) self.edPluginControlInterface.connectFAILURE(self.doFailureActionInterface)
def functionXMLin(_strFilename): """Here we create the XML string to be passed to the EDNA plugin from the input strFilename This can / should be modified by the final user @param _strFilename: full path of the input file @type _strFilename: python string representing the path @return: string """ EDVerbose.screen("Starting processing of image %s" % (_strFilename)) # First check if the filename end with .img or .mccd: strXML = None if (_strFilename.endswith(".img") or _strFilename.endswith(".mccd") or _strFilename.endswith(".cbf")): xsDataInputInterface = XSDataInputInterface() xsDataDiffractionPlan = XSDataDiffractionPlan() xsDataDiffractionPlan.setMaxExposureTimePerDataCollection(XSDataTime(EDParallelExecuteMXv1Characterisation.m_fMaxExposureTime)) xsDataInputInterface.setDiffractionPlan(xsDataDiffractionPlan) xsDataFile = XSDataFile() xsDataFile.setPath(XSDataString(_strFilename)) xsDataInputInterface.addImagePath(xsDataFile) strXML = xsDataInputInterface.marshal() else: EDVerbose.screen("File name not ending with .img or .mccd - ignored : %s" % _strFilename) return strXML
def process(self, _edPlugin=None): EDPluginControl.process(self, _edPlugin) self.DEBUG("EDPluginControlInterfaceToMXCuBEv1_4.process...") xsDataInputMXCuBE = self.getDataInput() xsDataInputInterface = XSDataInputInterface() self.edPluginControlInterface = self.loadPlugin(self.strPluginControlInterface) self.xsDataFirstImage = None for xsDataSetMXCuBE in xsDataInputMXCuBE.getDataSet(): for xsDataFile in xsDataSetMXCuBE.getImageFile(): if xsDataFile.path.value.endswith(".h5"): self.bIsEigerDetector = True self.xsDataFirstImage = xsDataFile xsDataInputControlH5ToCBF = XSDataInputControlH5ToCBF() xsDataInputControlH5ToCBF.hdf5File = XSDataFile(xsDataFile.path) xsDataInputControlH5ToCBF.imageNumber = XSDataInteger(EDUtilsImage.getImageNumber(xsDataFile.path.value)) edPluginControlH5ToCBF = self.loadPlugin(self.strPluginControlH5ToCBF, "ControlH5ToCBF") edPluginControlH5ToCBF.dataInput = xsDataInputControlH5ToCBF edPluginControlH5ToCBF.executeSynchronous() cbfFile = edPluginControlH5ToCBF.dataOutput.outputCBFFile xsDataInputInterface.addImagePath(cbfFile) else: xsDataInputInterface.addImagePath(xsDataFile) if self.xsDataFirstImage is None: self.xsDataFirstImage = xsDataFile # Check that images are on disk, otherwise wait for xsDataImagePath in xsDataInputInterface.imagePath: imagePath = xsDataImagePath.path.value if os.path.exists(imagePath): message = "Input file ok: {0}".format(imagePath) self.screen(message) self.sendMessageToMXCuBE(message) else: self.sendMessageToMXCuBE("Waiting for file: {0}, timeout {1} s".format(imagePath, self.fMXWaitFileTimeOut)) edPluginMXWaitFile = self.loadPlugin(self.strPluginMXWaitFileName) xsDataInputMXWaitFile = XSDataInputMXWaitFile() xsDataInputMXWaitFile.file = XSDataFile(XSDataString(imagePath)) xsDataInputMXWaitFile.setSize(XSDataInteger(self.minImageSize)) xsDataInputMXWaitFile.setTimeOut(XSDataTime(self.fMXWaitFileTimeOut)) self.DEBUG("Wait file timeOut set to %f" % self.fMXWaitFileTimeOut) edPluginMXWaitFile.setDataInput(xsDataInputMXWaitFile) edPluginMXWaitFile.executeSynchronous() if edPluginMXWaitFile.dataOutput.timedOut.value: errorMessage = "ERROR! File {0} does not exist on disk.".format(imagePath) self.ERROR(errorMessage) self.sendMessageToMXCuBE(errorMessage, "error") self.setFailure() break xsDataExperimentalCondition = self.getFluxAndBeamSizeFromISPyB(self.xsDataFirstImage, \ xsDataInputMXCuBE.getExperimentalCondition()) xsDataInputInterface.setExperimentalCondition(xsDataExperimentalCondition) xsDataInputInterface.setDiffractionPlan(xsDataInputMXCuBE.getDiffractionPlan()) xsDataInputInterface.setSample(xsDataInputMXCuBE.getSample()) xsDataInputInterface.setDataCollectionId(xsDataInputMXCuBE.getDataCollectionId()) self.edPluginControlInterface.setDataInput(xsDataInputInterface) if not self.isFailure() and self.edPluginControlInterface is not None: self.connectProcess(self.edPluginControlInterface.executeSynchronous) self.edPluginControlInterface.connectSUCCESS(self.doSuccessActionInterface) self.edPluginControlInterface.connectFAILURE(self.doFailureActionInterface)