Esempio n. 1
0
    def preProcess(self, _edObject=None):
        EDPlugin.preProcess(self)
        self.DEBUG("EDPluginAccumulatorv1_0.preProcess")
        with self.__class__._semaphore:
            for oneXsdItem in self.dataInput.item:  #could be empty
                self._items.append(oneXsdItem.value)
            for oneXsdQuery in self.dataInput.query:  #could be an empty list
                query = []
                for oneXsdItem in oneXsdQuery.item:
                    query.append(oneXsdItem.value)

                if oneXsdQuery.removeItems is not None:
                    if oneXsdQuery.removeItems.value in [1, True, "true"]:
                        removeItems = True
                    elif oneXsdQuery.removeItems.value in [
                            0, False, "false", None
                    ]:
                        removeItems = False
                    else:
                        removeItems = True
                else:
                    removeItems = True
                query.sort()
                self._queries[tuple(query)] = removeItems

        if self.dataInput.flush is not None:
            if self.dataInput.flush.value in [1, True, "true"]:
                self.flush = True
    def preProcess(self, _edObject=None):
        EDPlugin.preProcess(self)
        self.DEBUG("EDPluginAccumulatorv1_0.preProcess")
        self.__semaphore.acquire()
        for oneXsdItem in self.getDataInput().getItem(): #could be empty
            self.__items.append(oneXsdItem.getValue())
        for oneXsdQuery in self.getDataInput().getQuery(): #could be an empty list
            query = []
            for  oneXsdItem in oneXsdQuery.getItem():
                query.append(oneXsdItem.getValue())

            if oneXsdQuery.getRemoveItems() is not None:
                if oneXsdQuery.getRemoveItems().getValue() in [1, True, "true"]:
                    removeItems = True
                elif oneXsdQuery.getRemoveItems().getValue() in [0, False, "false", None]:
                    removeItems = False
                else:
                    removeItems = True
            else:
                removeItems = True
            query.sort()
            self.__queries[tuple(query)] = removeItems
        self.__semaphore.release()

        if self.getDataInput().getFlush() is not None:
            if self.getDataInput().getFlush().getValue() in [1, True, "true"]:
                self.flush = True
Esempio n. 3
0
    def preProcess(self, _edObject=None):
        EDPlugin.preProcess(self)
        self.DEBUG("EDPluginAccumulatorv1_0.preProcess")
        with self.__class__._semaphore:
            for oneXsdItem in self.dataInput.item: #could be empty
                self._items.append(oneXsdItem.value)
            for oneXsdQuery in self.dataInput.query: #could be an empty list
                query = []
                for  oneXsdItem in oneXsdQuery.item:
                    query.append(oneXsdItem.value)

                if oneXsdQuery.removeItems is not None:
                    if oneXsdQuery.removeItems.value in [1, True, "true"]:
                        removeItems = True
                    elif oneXsdQuery.removeItems.value in [0, False, "false", None]:
                        removeItems = False
                    else:
                        removeItems = True
                else:
                    removeItems = True
                query.sort()
                self._queries[tuple(query)] = removeItems

        if self.dataInput.flush is not None:
            if self.dataInput.flush.value in [1, True, "true"]:
                self.flush = True
Esempio n. 4
0
 def preProcess(self, _edObject=None):
     EDPlugin.preProcess(self, _edObject)
     EDVerbose.DEBUG("EDPluginWrapperForJobScheduler.preProcess")
     # Construct python script for executing the plugin
     strPythonWrapper = self.preparePythonWrapperScript()
     self.__strPathToPythonWrapper = os.path.join(self.getWorkingDirectory(), self.__strPythonWrapperScriptName)
     EDUtilsFile.writeFile(self.__strPathToPythonWrapper, strPythonWrapper)
 def __init__(self):
     """
     """
     EDPlugin.__init__(self)
     self.setXSDataInputClass(XSDataInputAccumulator)
     self.xsDataResult = XSDataResultAccumulator()
     self.flush = False
Esempio n. 6
0
 def finallyProcess(self, _edObject=None):
     """
     after processing of the plugin:
     Release a CPU resource by releasing the semaphore
     """
     self.DEBUG("Release semaphore nbCPU by plugin %s" % self.getPluginName())
     EDUtilsParallel.semaphoreNbThreadsRelease()
     EDPlugin.finallyProcess(self, _edObject)
Esempio n. 7
0
 def __init__ (self):
     """
     """
     EDPlugin.__init__(self)
     self.__strPluginToBeControlledName = None
     self.__dictControlledPlugins = {}
     self.__edActionCluster = None
     self.__listOfLoadedPlugins = []
Esempio n. 8
0
 def __init__(self):
     """
     """
     EDPlugin.__init__(self)
     self.__strPluginToBeControlledName = None
     self.__dictControlledPlugins = {}
     self.__edActionCluster = None
     self.__listOfLoadedPlugins = []
Esempio n. 9
0
 def finallyProcess(self, _edObject=None):
     """
     after processing of the plugin:
     Release a CPU resource by releasing the semaphore
     """
     EDVerbose.DEBUG("Release semaphore nbCPU by plugin %s, currently value: %s" % (self.getPluginName(), EDUtilsParallel.getSemaphoreValue()))
     EDUtilsParallel.semaphoreNbThreadsRelease()
     EDPlugin.finallyProcess(self, _edObject)
Esempio n. 10
0
 def __init__(self):
     """
     Constructor of the plugin
     """
     EDPlugin.__init__(self)
     self.setXSDataInputClass(XSDataInputAccumulator)
     self.xsDataResult = XSDataResultAccumulator()
     self.flush = False
Esempio n. 11
0
 def preProcess(self, _edObject=None):
     """
     preProcess of the plugin:
     Ensure a CPU resource is available for the processing by acquiring a semaphore
     """
     EDVerbose.DEBUG("Acquire semaphore nbCPU by plugin %s, currently value: %s" % (self.getPluginName(), EDUtilsParallel.getSemaphoreValue()))
     EDUtilsParallel.semaphoreNbThreadsAcquire()
     EDPlugin.preProcess(self, _edObject)
Esempio n. 12
0
 def preProcess(self, _edObject=None):
     """
     preProcess of the plugin:
     Ensure a CPU resource is available for the processing by acquiring a semaphore
     """
     self.DEBUG("Acquire semaphore nbCPU by plugin %s" % self.getPluginName())
     EDUtilsParallel.semaphoreNbThreadsAcquire()
     EDPlugin.preProcess(self, _edObject)
Esempio n. 13
0
 def preProcess(self, _edObject=None):
     EDPlugin.preProcess(self)
     self.DEBUG("EDPluginWaitFile.preProcess")
     self.__filename = self.getDataInput().getExpectedFile().getPath().getValue()
     self.__expectedSize = self.getDataInput().getExpectedSize().getValue()
     if self.getDataInput().getTimeOut():
         self.__timeout = self.getDataInput().getTimeOut().getValue()
         self.setTimeOut(self.getDataInput().getTimeOut().getValue() + EDPluginWaitFile.EXTRA_TIME)
Esempio n. 14
0
 def preProcess(self, _edObject=None):
     """
     preProcess of the plugin:
     Ensure a CPU resource is available for the processing by acquiring a semaphore
     """
     EDVerbose.DEBUG(
         "Acquire semaphore nbCPU by plugin %s, currently value: %s" %
         (self.getPluginName(), EDUtilsParallel.getSemaphoreValue()))
     EDUtilsParallel.semaphoreNbThreadsAcquire()
     EDPlugin.preProcess(self, _edObject)
Esempio n. 15
0
 def __init__(self):
     """
     """
     EDPlugin.__init__(self)
     self.setXSDataInputClass(XSDataInputWaitFile)
     self.__filename = None
     self.__exists = None
     self.__filesize = None
     self.__expectedSize = None
     self.__timeout = self.DEFAULT_TIMEOUT
Esempio n. 16
0
 def __init__(self):
     """
     """
     EDPlugin.__init__(self)
     self.setXSDataInputClass(XSDataInputWaitFile)
     self.__filename = None
     self.__exists = None
     self.__filesize = None
     self.__expectedSize = None
     self.__timeout = self.DEFAULT_TIMEOUT
Esempio n. 17
0
 def finallyProcess(self, _edObject=None):
     """
     after processing of the plugin:
     Release a CPU resource by releasing the semaphore
     """
     EDVerbose.DEBUG(
         "Release semaphore nbCPU by plugin %s, currently value: %s" %
         (self.getPluginName(), EDUtilsParallel.getSemaphoreValue()))
     EDUtilsParallel.semaphoreNbThreadsRelease()
     EDPlugin.finallyProcess(self, _edObject)
Esempio n. 18
0
 def preProcess(self, _edObject=None):
     EDPlugin.preProcess(self)
     self.DEBUG("EDPluginWaitFile.preProcess")
     self.__filename = self.getDataInput().getExpectedFile().getPath(
     ).getValue()
     self.__expectedSize = self.getDataInput().getExpectedSize().getValue()
     if self.getDataInput().getTimeOut():
         self.__timeout = self.getDataInput().getTimeOut().getValue()
         self.setTimeOut(self.getDataInput().getTimeOut().getValue() +
                         EDPluginWaitFile.EXTRA_TIME)
Esempio n. 19
0
 def __init__(self, _strNameOfPlugin):
     EDPlugin.__init__(self)
     self.__strNameOfPlugin = _strNameOfPlugin
     EDFactoryPluginStatic.loadModule(_strNameOfPlugin)
     self.__dictXMLDataInput = {}
     self.__dictXMLDataOutput = {}
     self.__strPythonWrapperScriptName = "pluginWrapperForJobScheduler.py"
     self.__strPathToPythonWrapper = None
     self.__edServerXMLRCP = EDServerXMLRCP.getInstance()
     self.__edServerXMLRCP.registerPlugin(self)
     self.__bFinished = False
Esempio n. 20
0
 def postProcess(self, _edObject=None):
     EDPlugin.postProcess(self)
     self.DEBUG("EDPluginWaitFile.postProcess: Waited for %.3f s" % self.getRunTime())
     xsDataResult = XSDataResultWaitFile()
     if os.path.exists(self.__filename):
         xsDataFile = XSDataFile()
         xsDataFile.setPath(XSDataString(self.__filename))
         xsDataResult.setActualFile(xsDataFile)
         xsDataResult.setActualSize(XSDataInteger(os.path.getsize(self.__filename)))
     xsDataResult.setTimedOut(XSDataBoolean(self.getRunTime() >= self.__timeout))
     # Create some output data
     self.setDataOutput(xsDataResult)
Esempio n. 21
0
 def postProcess(self, _edObject=None):
     EDPlugin.postProcess(self)
     self.DEBUG("EDPluginWaitFile.postProcess: Waited for %.3f s" %
                self.getRunTime())
     xsDataResult = XSDataResultWaitFile()
     if os.path.exists(self.__filename):
         xsDataFile = XSDataFile()
         xsDataFile.setPath(XSDataString(self.__filename))
         xsDataResult.setActualFile(xsDataFile)
         xsDataResult.setActualSize(
             XSDataInteger(os.path.getsize(self.__filename)))
     xsDataResult.setTimedOut(
         XSDataBoolean(self.getRunTime() >= self.__timeout))
     # Create some output data
     self.setDataOutput(xsDataResult)
Esempio n. 22
0
    def process(self, _edObject=None):
        EDPlugin.process(self)

        output = XSDataXscaleParsedOutput()

        # get all the file's contents, find where the info is and then
        # use helper functions to retrieve stuff and put it in the
        # data model
        try:
            f = open(self.dataInput.lp_file.value, 'r')
            lines = f.readlines()
        except IOError:
            strErrorMessage = "Input file {0} could not be opened".format(
                self.dataInput.lp_file.value)
            self.ERROR(strErrorMessage)
            self.addErrorMessage(strErrorMessage)
            self.setFailure()
            return

        # look for the stats table
        info_begin = None
        info_end = None
        started = False
        for line_no, line in enumerate(lines):
            if line.find(
                    'LIMIT     OBSERVED  UNIQUE  POSSIBLE     OF DATA   observed  expected'
            ) != -1:
                # there's an empty line after the header
                info_begin = line_no + 2
            if info_begin is not None and line.find('total') != -1:
                # we're at the last table line
                info_end = line_no
                # stop here as there are some other lines containing
                # "total" later
                break
        if info_begin is None or info_end is None:
            strErrorMessage = "Could not find the completeness table"
            self.ERROR(strErrorMessage)
            self.addErrorMessage(strErrorMessage)
            self.setFailure()
            return

        _extract_completeness_entries(lines[info_begin:info_end + 1], output)

        input_file = self.dataInput.lp_file.value
        output.xds_run_directory = XSDataString(os.path.dirname(input_file))
        self.dataOutput = output
Esempio n. 23
0
 def process(self, _edObject=None):
     EDPlugin.process(self)
     self.DEBUG("EDPluginWaitFile.process")
     self.DEBUG("EDPluginWaitFile Plugin TimeOut is set to: %s, internal TimeOut is %s" % (self.getTimeOut(), self.__timeout))
     self.setTimeInit()
     dirname = os.path.dirname(self.__filename)
     while self.getRunTime() < self.__timeout:
         if os.path.isdir(dirname):
             fd = os.open(dirname, os.O_RDONLY)
             os.fstat(fd)
             os.close(fd)
             if os.path.exists(self.__filename):
                 self.__filesize = os.path.getsize(self.__filename)
                 if self.__filesize >= self.__expectedSize:
                     break
         time.sleep(EDPluginWaitFile.DELTA_TIME)
     self.setTimeEnd()
Esempio n. 24
0
 def testCreateBaseName(self):
     # Test 1 : naming of working directory
     edPlugin = EDPlugin()
     edPlugin.setBaseName("EDPlugin_testCreateBaseName")
     edPlugin.configure()
     strWorkingDir = edPlugin.getWorkingDirectory()
     EDAssert.equal(True, os.path.exists(strWorkingDir), "Test 1 : naming of working directory")
Esempio n. 25
0
 def configure(self):
     """
     Gets the EDPluginControl parameters from the configuration file and stores them in class member attributes.
     """
     EDPlugin.configure(self)
     EDVerbose.DEBUG("EDPluginControl.configure")
     strControlledPlugins = self.config.get("controlledPlugins", None)
     if (strControlledPlugins != None):
         pyListControlledPlugins = strControlledPlugins.split(",")
         for strControlledPlugin in pyListControlledPlugins:
             strControlledPluginName = self.getStringConfigurationParameterValue(strControlledPlugin)
             if strControlledPluginName != None:
                 self.setControlledPluginName(strControlledPlugin, strControlledPluginName)
                 EDVerbose.DEBUG("EDPluginControl.configure: setting controlled plugin %s to specific plugin %s" % (strControlledPlugin, strControlledPluginName))
     clusterSize = self.config.get("clusterSize", None)
     if (clusterSize != None):
         self.__iClusterSize = int(strClusterSize)
         EDVerbose.DEBUG("EDPluginControl.configure: setting cluster size to %d" % self.__iClusterSize)
    def process(self, _edObject=None):
        EDPlugin.process(self)

        output = XSDataXscaleParsedOutput()

        # get all the file's contents, find where the info is and then
        # use helper functions to retrieve stuff and put it in the
        # data model
        try:
            f = open(self.dataInput.lp_file.value, 'r')
            lines = f.readlines()
        except IOError:
            strErrorMessage = "Input file {0} could not be opened".format(self.dataInput.lp_file.value)
            self.ERROR(strErrorMessage)
            self.addErrorMessage(strErrorMessage)
            self.setFailure()
            return

        # look for the stats table
        info_begin = None
        info_end = None
        started = False
        for line_no, line in enumerate(lines):
            if line.find('LIMIT     OBSERVED  UNIQUE  POSSIBLE     OF DATA   observed  expected') != -1:
                # there's an empty line after the header
                info_begin = line_no + 2
            if info_begin is not None and line.find('total') != -1:
                # we're at the last table line
                info_end = line_no
                # stop here as there are some other lines containing
                # "total" later
                break
        if info_begin is None or info_end is None:
            strErrorMessage = "Could not find the completeness table"
            self.ERROR(strErrorMessage)
            self.addErrorMessage(strErrorMessage)
            self.setFailure()
            return

        _extract_completeness_entries(lines[info_begin:info_end + 1], output)

        input_file = self.dataInput.lp_file.value
        output.xds_run_directory = XSDataString(os.path.dirname(input_file))
        self.dataOutput = output
Esempio n. 27
0
 def process(self, _edObject=None):
     EDPlugin.process(self)
     self.DEBUG("EDPluginWaitFile.process")
     self.DEBUG(
         "EDPluginWaitFile Plugin TimeOut is set to: %s, internal TimeOut is %s"
         % (self.getTimeOut(), self.__timeout))
     self.setTimeInit()
     dirname = os.path.dirname(self.__filename)
     while self.getRunTime() < self.__timeout:
         if os.path.isdir(dirname):
             fd = os.open(dirname, os.O_RDONLY)
             os.fstat(fd)
             os.close(fd)
             if os.path.exists(self.__filename):
                 self.__filesize = os.path.getsize(self.__filename)
                 if self.__filesize >= self.__expectedSize:
                     break
         time.sleep(EDPluginWaitFile.DELTA_TIME)
     self.setTimeEnd()
 def testCreateBaseName(self):
     # Test 1 : naming of working directory
     edPlugin = EDPlugin()
     edPlugin.setBaseName("EDPlugin_testCreateBaseName")
     edPlugin.configure()
     strWorkingDir = edPlugin.getWorkingDirectory()
     EDAssert.equal(True, os.path.exists(strWorkingDir), "Test 1 : naming of working directory")
Esempio n. 29
0
 def configure(self):
     """
     Gets the EDPluginControl parameters from the configuration file and stores them in class member attributes.
     """
     EDPlugin.configure(self)
     pluginConfiguration = self.getConfiguration()
     if(pluginConfiguration == None):
         EDVerbose.DEBUG("EDPluginControl.configure: pluginConfiguration is None, using default settings")
     else:
         EDVerbose.DEBUG("EDPluginControl.configure: pluginConfiguration found, using settings from there")
         strControlledPlugins = EDConfiguration.getStringParamValue(pluginConfiguration, "controlledPlugins")
         if (strControlledPlugins != None):
             pyListControlledPlugins = strControlledPlugins.split(",")
             for strControlledPlugin in pyListControlledPlugins:
                 strControlledPluginName = EDConfiguration.getStringParamValue(pluginConfiguration, strControlledPlugin)
                 if strControlledPluginName != None:
                     self.setControlledPluginName(strControlledPlugin, strControlledPluginName)
                     EDVerbose.DEBUG("EDPluginControl.configure: setting controlled plugin %s to specific plugin %s" % (strControlledPlugin, strControlledPluginName))
         strClusterSize = EDConfiguration.getStringParamValue(pluginConfiguration, "clusterSize")
         if (strClusterSize != None):
             self.__iClusterSize = int(strClusterSize)
             EDVerbose.DEBUG("EDPluginControl.configure: setting cluster size to %d" % self.__iClusterSize)
    def process(self, _edObject=None):
        EDPlugin.process(self)
        self.DEBUG("EDPluginAccumulatorv1_0.process")
        queriesToRemove = []
        listXsdQuery = []
        if not self.flush:
            self.__semaphore.acquire()
            for query in self.__queries:
                present = True
                for item in query:
                    if not item in self.__items:
                        present = False
                        break
                if present is True:
                    queriesToRemove.append(query)
                    xsdQuery = XSDataQuery()
                    xsdQuery.setItem([XSDataString(item) for item in query])
                    if self.__queries[query] is True:
                        xsdQuery.setRemoveItems(XSDataBoolean(True))
                        for item in query:
                            self.__items.remove(item)
                    else:
                        xsdQuery.setRemoveItems(XSDataBoolean(False))
                    listXsdQuery.append(xsdQuery)

#Remove the query from the list of queries
            for query in queriesToRemove:
                self.__queries.pop(query)
            self.__semaphore.release()
        else:
            xsdQuery = XSDataQuery()
            self.__semaphore.acquire()
            xsdQuery.setItem([XSDataString(item) for item in self.__items])
            xsdQuery.setRemoveItems(XSDataBoolean(True))
            self.__class__.__items = []
            self.__semaphore.release()
            listXsdQuery.append(xsdQuery)
        self.xsDataResult.setQuery(listXsdQuery)
Esempio n. 31
0
 def configure(self):
     """
     Gets the EDPluginControl parameters from the configuration file and stores them in class member attributes.
     """
     EDPlugin.configure(self)
     self.DEBUG("EDPluginControl.configure")
     strControlledPlugins = self.config.get("controlledPlugins", None)
     if strControlledPlugins is not None:
         pyListControlledPlugins = strControlledPlugins.split(",")
         for strControlledPlugin in pyListControlledPlugins:
             strControlledPluginName = self.config.get(strControlledPlugin)
             if strControlledPluginName != None:
                 self.setControlledPluginName(strControlledPlugin,
                                              strControlledPluginName)
                 self.DEBUG(
                     "EDPluginControl.configure: setting controlled plugin %s to specific plugin %s"
                     % (strControlledPlugin, strControlledPluginName))
     strClusterSize = self.config.get("clusterSize", None)
     if strClusterSize is not None:
         self.__iClusterSize = int(strClusterSize)
         self.DEBUG(
             "EDPluginControl.configure: setting cluster size to %d" %
             self.__iClusterSize)
Esempio n. 32
0
    def process(self, _edObject=None):
        EDPlugin.process(self)
        self.DEBUG("EDPluginAccumulatorv1_0.process")
        queriesToRemove = []
        listXsdQuery = []
        if not self.flush:
            with self.__class__._semaphore:
                for query in self._queries:
                    present = True
                    for item in query:
                        if not item in self._items:
                            present = False
                            break
                    if present is True:
                        queriesToRemove.append(query)
                        xsdQuery = XSDataQuery()
                        xsdQuery.setItem(
                            [XSDataString(item) for item in query])
                        if self._queries[query] is True:
                            xsdQuery.setRemoveItems(XSDataBoolean(True))
                            for item in query:
                                self._items.remove(item)
                        else:
                            xsdQuery.setRemoveItems(XSDataBoolean(False))
                        listXsdQuery.append(xsdQuery)

    #Remove the query from the list of queries
                for query in queriesToRemove:
                    self._queries.pop(query)
        else:
            xsdQuery = XSDataQuery()
            with self.__class__._semaphore:
                xsdQuery.setItem([XSDataString(item) for item in self._items])
                xsdQuery.setRemoveItems(XSDataBoolean(True))
                self.__class__._items = []
            listXsdQuery.append(xsdQuery)
        self.xsDataResult.setQuery(listXsdQuery)
Esempio n. 33
0
 def __init__(self):
     EDPlugin.__init__(self)
     self.setXSDataInputClass(XSDataXscaleParsingInput)
     self.setDataOutput(XSDataXscaleParsedOutput())
Esempio n. 34
0
 def preProcess(self, _edObject=None):
     EDPlugin.preProcess(self)
     self.DEBUG("EDPluginParseXscaleOutputv1_0.preProcess")
Esempio n. 35
0
    def process(self, _edObject = None):
        EDPlugin.process(self)
        completeness_cutoff_param = self.dataInput.completeness_cutoff
        if completeness_cutoff_param is None:
            completeness_cutoff = 80
        else:
            completeness_cutoff = completeness_cutoff_param.value

        isig_cutoff_param = self.dataInput.isig_cutoff
        if isig_cutoff_param is None:
            isig_cutoff = 3
        else:
            isig_cutoff = isig_cutoff_param.value

        res_override = self.dataInput.res_override

        bins = list()

        # for the first iteration
        # comment from max's code: "less stringent at low res"
        local_completeness_cutoff = 70
        # declared but not initialized in the perl code
        prev_isig = prev_res = 0

        # XXX: if res is still not defined at the end it is set to
        # detector_max_res, which we should somehow defined (in the
        # data model?) and used as the default value before we start
        # the processing

        for entry in self.dataInput.completeness_entries:
            outer_res = entry.outer_res.value
            outer_complete = entry.outer_complete.value
            outer_rfactor = entry.outer_rfactor.value
            outer_isig = entry.outer_isig.value

            if outer_complete < local_completeness_cutoff or outer_isig < isig_cutoff or \
                    (res_override is not None and outer_res < res_override.value):
                if outer_complete < completeness_cutoff:
                    EDVerbose.DEBUG('incomplete data (%s) in this shell' % outer_complete)
                    res = prev_res
                else:
                    res = _calculate_res_from_bins(prev_isig, prev_res,
                                                   outer_isig, outer_res)
                bins.append(outer_res)

                #NOTE: get out of the loop, see the value of `skip` in
                #max's code
                break
            else:
                bins.append(outer_res)
            prev_res, prev_isig = outer_res, outer_isig

        # Now the implementation of what max does when he encouters
        # the total values, which are conveniently already parsed in
        # our case
        if len(bins) < 2:
            EDVerbose.DEBUG("No bins with I/sigma greater than %s" % isig_cutoff)
            EDVerbose.DEBUG("""something could be wrong, or the completeness could be too low!
bravais lattice/SG could be incorrect or something more insidious like
incorrect parameters in XDS.INP like distance, X beam, Y beam, etc.
Stopping""")
            self.setFailure()
            return
        if res_override is not None:
            res = res_override.value
        # remove last bin (see why w/ max)
        retbins = [XSDataFloat(x) for x in bins[:-1]]


        data_output = XSDataResCutoffResult()
        data_output.res = XSDataFloat(res)
        data_output.bins = retbins
        totals = self.dataInput.total_completeness
        data_output.total_complete = totals.outer_complete
        data_output.total_rfactor = totals.outer_rfactor
        data_output.total_isig = totals.outer_isig

        self.dataOutput = data_output
Esempio n. 36
0
    def process(self, _edObject=None):
        EDPlugin.process(self)
        detector_max_res = self.dataInput.detector_max_res
        if detector_max_res is not None:
            detector_max_res = detector_max_res.value

        completeness_cutoff_param = self.dataInput.completeness_cutoff
        if completeness_cutoff_param is None:
            completeness_cutoff = 80
        else:
            completeness_cutoff = completeness_cutoff_param.value

        isig_cutoff_param = self.dataInput.isig_cutoff
        if isig_cutoff_param is None:
            isig_cutoff = 3
        else:
            isig_cutoff = isig_cutoff_param.value

        res_override = self.dataInput.res_override

        bins = list()

        # for the first iteration
        # comment from max's code: "less stringent at low res"
        local_completeness_cutoff = 70
        # declared but not initialized in the perl code
        prev_isig = prev_res = 0

        # XXX: if res is still not defined at the end it is set to
        # detector_max_res, which we should somehow defined (in the
        # data model?) and used as the default value before we start
        # the processing
        res = detector_max_res

        for entry in self.dataInput.completeness_entries:
            outer_res = entry.outer_res.value
            outer_complete = entry.outer_complete.value
            outer_rfactor = entry.outer_rfactor.value
            outer_isig = entry.outer_isig.value

            if outer_complete < local_completeness_cutoff or outer_isig < isig_cutoff or \
                    (res_override is not None and outer_res < res_override.value):
                if outer_complete < completeness_cutoff:
                    EDVerbose.DEBUG('incomplete data (%s) in this shell' %
                                    outer_complete)
                    res = prev_res
                else:
                    res = _calculate_res_from_bins(prev_isig, prev_res,
                                                   outer_isig, outer_res,
                                                   isig_cutoff)
                bins.append(outer_res)

                #NOTE: get out of the loop, see the value of `skip` in
                #max's code
                break
            else:
                bins.append(outer_res)
            prev_res, prev_isig = outer_res, outer_isig

        # Now the implementation of what max does when he encouters
        # the total values, which are conveniently already parsed in
        # our case
        if len(bins) < 2:
            EDVerbose.DEBUG("No bins with I/sigma greater than %s" %
                            isig_cutoff)
            EDVerbose.DEBUG(
                """something could be wrong, or the completeness could be too low!
bravais lattice/SG could be incorrect or something more insidious like
incorrect parameters in XDS.INP like distance, X beam, Y beam, etc.
Stopping""")
            self.setFailure()
            return
        if res is None:
            res = sorted(bins)[0]
        if res_override is not None:
            res = res_override.value
        # remove last bin (see why w/ max)
        retbins = [XSDataFloat(x) for x in bins[:-1]]

        data_output = XSDataResCutoffResult()
        data_output.res = XSDataFloat(res)
        data_output.bins = retbins
        totals = self.dataInput.total_completeness
        data_output.total_complete = totals.outer_complete
        data_output.total_rfactor = totals.outer_rfactor
        data_output.total_isig = totals.outer_isig

        self.dataOutput = data_output
 def postProcess(self, _edObject=None):
     EDPlugin.postProcess(self)
     EDVerbose.DEBUG("*** EDPluginExecReadImageHeaderADSCv10.postProcess")
     if (self.__xsDataResultReadImageHeader is not None):
         self.setDataOutput(self.__xsDataResultReadImageHeader)
Esempio n. 38
0
 def preProcess(self, _edObject=None):
     EDPlugin.preProcess(self)
     self.DEBUG("EDPluginResCutoffv1_0.preProcess")
Esempio n. 39
0
 def postProcess(self, _edObject = None):
     EDPlugin.postProcess(self)
     self.DEBUG("EDPluginParseXdsOutput.postProcess")
 def preProcess(self, _edObject=None):
     EDPlugin.preProcess(self)
     self.DEBUG("EDPluginParseXscaleOutputv1_0.preProcess")
 def __init__(self):
     EDPlugin.__init__(self)
     self.setXSDataInputClass(XSDataXscaleParsingInput)
     self.setDataOutput(XSDataXscaleParsedOutput())
Esempio n. 42
0
 def finallyProcess(self, _edObject=None):
     EDPlugin.finallyProcess(self, _edObject)
     EDVerbose.DEBUG("EDPluginWrapperForJobScheduler.finallyProcess")
     while not self.__bFinished:
         time.sleep(1)
Esempio n. 43
0
 def __init__(self):
     """
     """
     EDPlugin.__init__(self)
     self.setXSDataInputClass(XSDataResCutoff)
 def __init__( self ):
     EDPlugin.__init__( self )
     self.setXSDataInputClass( XSDataString )
     self.setXSDataInputClass( XSDataString, "value1" )
     self.setXSDataInputClass( XSDataString, "value2" )
Esempio n. 45
0
 def postProcess(self, _edObject=None):
     EDPlugin.postProcess(self)
     self.DEBUG("EDPluginParseXdsOutput.postProcess")
Esempio n. 46
0
 def __init__(self):
     EDPlugin.__init__(self)
     self.setXSDataInputClass(XSDataResCutoff)
     self.setDataOutput(XSDataResCutoffResult())
Esempio n. 47
0
 def __init__(self):
     """
     """
     EDPlugin.__init__(self)
     self.setXSDataInputClass(XSDataXdsOutputFile)
Esempio n. 48
0
    def process(self, _edObject=None):
        EDPlugin.process(self)
        detector_max_res = self.dataInput.detector_max_res
        if detector_max_res is not None:
            detector_max_res = detector_max_res.value

        completeness_cutoff_param = self.dataInput.completeness_cutoff
        if completeness_cutoff_param is None:
            completeness_cutoff = 80
        else:
            completeness_cutoff = completeness_cutoff_param.value

        isig_cutoff_param = self.dataInput.isig_cutoff
        if isig_cutoff_param is None:
            isig_cutoff = 3
        else:
            isig_cutoff = isig_cutoff_param.value

        cc_half_cutoff_param = self.dataInput.cc_half_cutoff
        if cc_half_cutoff_param is not None:
            cc_half_cutoff = cc_half_cutoff_param.value
        else:
            cc_half_cutoff = 30

        res_override = self.dataInput.res_override

        bins = list()

        # for the first iteration
        # comment from max's code: "less stringent at low res"
        local_completeness_cutoff = 70
        # declared but not initialized in the perl code
        prev_isig = prev_res = 0

        # XXX: if res is still not defined at the end it is set to
        # detector_max_res, which we should somehow defined (in the
        # data model?) and used as the default value before we start
        # the processing
        res = detector_max_res

        for entry in self.dataInput.completeness_entries:
            current_res = entry.res.value
            complete = entry.complete.value
            rfactor = entry.rfactor.value
            isig = entry.isig.value
            cc_half = entry.half_dataset_correlation.value

            # isig < isig_cutoff or \
            if cc_half < cc_half_cutoff or \
               (res_override is not None and current_res < res_override.value):
                continue
            else:
                bins.append(current_res)

        # Now the implementation of what max does when he encouters
        # the total values, which are conveniently already parsed in
        # our case
        if len(bins) < 2:
            strErrorMessage = "No bins with CC1/2 greater than %s" % cc_half_cutoff
            self.ERROR(strErrorMessage)
            self.addErrorMessage(strErrorMessage)
            self.ERROR(
                "Something could be wrong, or the completeness could be too low!"
            )
            self.ERROR(
                "bravais lattice/SG could be incorrect or something more insidious like"
            )
            self.ERROR(
                "incorrect parameters in XDS.INP like distance, X beam, Y beam, etc."
            )
            self.ERROR("Stopping")
            self.setFailure()
            return
        if res is None:
            res = sorted(bins)[0]
        if res_override is not None:
            res = res_override.value

        retbins = [XSDataDouble(x) for x in bins]

        data_output = XSDataResCutoffResult()
        data_output.res = XSDataDouble(res)
        data_output.bins = retbins
        totals = self.dataInput.total_completeness
        data_output.total_complete = totals.complete
        data_output.total_rfactor = totals.rfactor
        data_output.total_isig = totals.isig

        self.dataOutput = data_output
Esempio n. 49
0
 def __init__(self ):
     """
     """
     EDPlugin.__init__(self )
     self.setXSDataInputClass(XSDataResCutoff)
Esempio n. 50
0
    def process(self, _edObject = None):
        EDPlugin.process(self)

        output = XSDataXdsOutput()

        # get all the file's contents, find where the info is and then
        # use helper functions to retrieve stuff and put it in the
        # data model
        try:
            f = open(self.dataInput.correct_lp.path.value, 'r')
            lines = f.readlines()
        except IOError:
            EDVerbose.ERROR('Could not open the specified XDS output file for reading')
            self.setFailure()
            return

        # look for the "big piece of information"
        info_begin = None
        info_end = None
        for lineno, line in enumerate(lines):
            if info_begin is None:
                if line.find('REFINEMENT OF DIFFRACTION PARAMETERS USING ALL IMAGES') != -1:
                    info_begin = lineno
            else:
                if line.find('MEAN INTENSITY AS FUNCTION OF SPINDLE POSITION WITHIN DATA IMAGE') != -1:
                    info_end = lineno
                    break

        if info_begin is None or info_end is None:
            EDVerbose.ERROR('could not find the refined parameters')
            self.setFailure()
            return

        _extract_infos(lines[info_begin:info_end], output)

        # second pass, look for the interesting table
        info_begin = None
        info_end = None
        started = False
        for line_no, line in enumerate(lines):
            if line.find('REFLECTIONS OF TYPE H,0,0  0,K,0  0,0,L OR EXPECTED TO BE ABSENT (*)') != -1:
                # the table will start shortly after
                started = True
                continue
            if started:
                # look if we are at the table yet
                if line.find('LIMIT     OBSERVED  UNIQUE  POSSIBLE     OF DATA   observed  expected') != -1:
                    # there's an empty line after the header
                    info_begin = line_no + 2
                if info_begin is not None and line.find('total') != -1:
                    # we're at the last table line
                    info_end = line_no
        if info_begin is None or info_end is None:
            EDVerbose.ERROR('could not find the completeness table')
            self.setFailure()
            return

        _extract_completeness_entries(lines[info_begin:info_end+1], output)


        # now for the last bit: check if we were given a path to the
        # gxparm file and if it exists get the space group and unit
        # cell constants from it
        if self.dataInput.gxparm is not None:
            gxparm_path = self.dataInput.gxparm.path.value
            if os.path.exists(gxparm_path):
                with open(gxparm_path, 'r') as f:
                    lines = f.readlines()
                for line in lines:
                    # the one we want has 7 floats
                    chunks = line.split()
                    if len(chunks) == 7:
                        output.sg_number = XSDataInteger(int(chunks[0]))
                        output.unit_cell_constants = [XSDataFloat(float(x)) for x in chunks[1:]]


        input_file = self.dataInput.correct_lp.path.value
        output.xds_run_directory = XSDataString(os.path.dirname(input_file))
        self.dataOutput = output
Esempio n. 51
0
 def process(self, _edObject=None):
     EDPlugin.process(self, _edObject)
     EDVerbose.DEBUG("EDPluginWrapperForJobScheduler.process")
     #print "+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++"
     EDVerbose.DEBUG("Executing: oarsub \"python %s\"" % self.__strPathToPythonWrapper)
     os.system("oarsub -l \"{cpu_vendor='INTEL'}/core=1\" \"python %s\"" % self.__strPathToPythonWrapper)
Esempio n. 52
0
 def __init__(self ):
     """
     """
     EDPlugin.__init__(self )
     self.setXSDataInputClass(XSDataXdsOutputFile)
Esempio n. 53
0
    def process(self, _edObject=None):
        EDPlugin.process(self)

        output = XSDataXdsOutput()

        # get all the file's contents, find where the info is and then
        # use helper functions to retrieve stuff and put it in the
        # data model
        try:
            f = open(self.dataInput.correct_lp.path.value, 'r')
            lines = f.readlines()
        except IOError:
            EDVerbose.ERROR(
                'Could not open the specified XDS output file for reading')
            self.setFailure()
            return

        # look for the "big piece of information"
        info_begin = None
        info_end = None
        for lineno, line in enumerate(lines):
            if info_begin is None:
                if line.find(
                        'REFINEMENT OF DIFFRACTION PARAMETERS USING ALL IMAGES'
                ) != -1:
                    info_begin = lineno
            else:
                if line.find(
                        'MEAN INTENSITY AS FUNCTION OF SPINDLE POSITION WITHIN DATA IMAGE'
                ) != -1:
                    info_end = lineno
                    break

        if info_begin is None or info_end is None:
            EDVerbose.ERROR('could not find the refined parameters')
            self.setFailure()
            return

        _extract_infos(lines[info_begin:info_end], output)

        # second pass, look for the interesting table
        info_begin = None
        info_end = None
        started = False
        for line_no, line in enumerate(lines):
            if line.find(
                    'REFLECTIONS OF TYPE H,0,0  0,K,0  0,0,L OR EXPECTED TO BE ABSENT (*)'
            ) != -1:
                # the table will start shortly after
                started = True
                continue
            if started:
                # look if we are at the table yet
                if line.find(
                        'LIMIT     OBSERVED  UNIQUE  POSSIBLE     OF DATA   observed  expected'
                ) != -1:
                    # there's an empty line after the header
                    info_begin = line_no + 2
                if info_begin is not None and line.find('total') != -1:
                    # we're at the last table line
                    info_end = line_no
        if info_begin is None or info_end is None:
            EDVerbose.ERROR('could not find the completeness table')
            self.setFailure()
            return

        _extract_completeness_entries(lines[info_begin:info_end + 1], output)

        # now for the last bit: check if we were given a path to the
        # gxparm file and if it exists get the space group and unit
        # cell constants from it
        if self.dataInput.gxparm is not None:
            gxparm_path = self.dataInput.gxparm.path.value
            if os.path.exists(gxparm_path):
                with open(gxparm_path, 'r') as f:
                    lines = f.readlines()
                for line in lines:
                    # the one we want has 7 floats
                    chunks = line.split()
                    if len(chunks) == 7:
                        output.sg_number = XSDataInteger(int(chunks[0]))
                        output.unit_cell_constants = [
                            XSDataFloat(float(x)) for x in chunks[1:]
                        ]

        input_file = self.dataInput.correct_lp.path.value
        output.xds_run_directory = XSDataString(os.path.dirname(input_file))
        self.dataOutput = output