Пример #1
0
    def pushImagesHDF(self, image):
        dataFilename = image.seriesName
        resultsFilename = _verifyResultsFilename(
            genResultFileName(image.seriesName))
        self.queueName = resultsFilename

        self.tq.createQueue('HDFTaskQueue',
                            self.queueName,
                            dataFilename=dataFilename,
                            resultsFilename=resultsFilename,
                            startAt='notYet')

        mdhQ = MetaDataHandler.QueueMDHandler(self.tq, self.queueName,
                                              self.analysisMDH)
        mdhQ['DataFileID'] = fileID.genDataSourceID(image.dataSource)

        #        evts = self.image.dataSource.getEvents()
        #        if len(evts) > 0:
        #            self.tq.addQueueEvents(self.image.seriesName, evts)

        self.resultsMdh = mdhQ

        self.tq.releaseTasks(self.queueName,
                             self.analysisMDH['Analysis.StartAt'])

        self.onImagesPushed.send(self)
Пример #2
0
    def __init__(self, filename, frameSource, frameShape, complevel=6, complib='zlib', **kwargs):
#       if 'PYME_TASKQUEUENAME' in os.environ.keys():
#            taskQueueName = os.environ['PYME_TASKQUEUENAME']
#       else:
#            taskQueueName = 'taskQueue'
        import Pyro.core

        from PYME.misc.computerName import GetComputerName
        compName = GetComputerName()

        taskQueueName = 'TaskQueues.%s' % compName

        if ns:
            URI = ns.resolve(taskQueueName)
        else:
            URI = 'PYRONAME://' + taskQueueName

        self.tq = Pyro.core.getProxyForURI(URI)
        self.tq._setOneway(['postTask', 'postTasks', 'addQueueEvents', 'setQueueMetaData', 'logQueueEvent'])

        self.seriesName = filename
        self.buffer = []
        self.buflen = 30

        self.tq.createQueue('HDFTaskQueue',self.seriesName, filename, frameSize = frameShape, complevel=complevel, complib=complib)

        self.md = MetaDataHandler.QueueMDHandler(self.tq, self.seriesName)
        self.evtLogger = EventLogger(self, self.tq, self.seriesName)

        sp.Spooler.__init__(self, filename, frameSource, **kwargs)
Пример #3
0
def pushImagesHDF(startingAt=0, detThresh=.9, fitFcn='LatGaussFitFR'):
    global seriesName
    dataFilename = seriesName
    resultsFilename = genResultFileName(seriesName)
    while os.path.exists(resultsFilename):
        di, fn = os.path.split(resultsFilename)
        fdialog = wx.FileDialog(
            None,
            'Analysis file already exists, please select a new filename',
            wildcard='H5R files|*.h5r',
            defaultDir=di,
            defaultFile=os.path.splitext(fn)[0] + '_1.h5r',
            style=wx.FD_SAVE)
        succ = fdialog.ShowModal()
        if (succ == wx.ID_OK):
            resultsFilename = fdialog.GetPath()
        else:
            raise RuntimeError('Invalid results file - not running')
        seriesName = resultsFilename
    tq.createQueue('HDFTaskQueue',
                   seriesName,
                   dataFilename=dataFilename,
                   resultsFilename=resultsFilename,
                   startAt='notYet')
    mdhQ = MetaDataHandler.QueueMDHandler(tq, seriesName, mdh)
    mdhQ.setEntry('Analysis.DetectionThreshold', detThresh)
    mdhQ.setEntry('Analysis.FitModule', fitFcn)
    mdhQ.setEntry('Analysis.DataFileID', fileID.genDataSourceID(dataSource))
    evts = dataSource.getEvents()
    if len(evts) > 0:
        tq.addQueueEvents(seriesName, evts)
    tq.releaseTasks(seriesName, startingAt)
Пример #4
0
def pushImagesD(startingAt=0, detThresh=.9):
    tq.createQueue('HDFResultsTaskQueue', seriesName, None)
    mdhQ = MetaDataHandler.QueueMDHandler(tq, seriesName, mdh)
    mdhQ.setEntry('Analysis.DetectionThreshold', detThresh)
    for i in range(startingAt, ds.shape[0]):
        tq.postTask(remFitBuf.fitTask(
            seriesName,
            i,
            detThresh,
            MetaDataHandler.NestedClassMDHandler(mdh),
            'LatGaussFitFR',
            bgindices=range(
                max(i - 10, mdh.getEntry('EstimatedLaserOnFrameNo')), i),
            SNThreshold=True,
            driftEstInd=range(
                max(i - 5, mdh.getEntry('EstimatedLaserOnFrameNo')),
                min(i + 5, ds.shape[0])),
            dataSourceModule=dataSource.moduleName),
                    queueName=seriesName)
Пример #5
0
    def _loadQueue(self, filename):
        """Load data from a remote PYME.ParallelTasks.HDFTaskQueue queue using
        Pyro.
        
        Parameters:
        -----------

        filename  : string
            the name of the queue         
        
        """
        import Pyro.core
        from PYME.IO.DataSources import TQDataSource
        from PYME.misc.computerName import GetComputerName
        compName = GetComputerName()

        if self.queueURI is None:
            #do a lookup
            taskQueueName = 'TaskQueues.%s' % compName

            try:
                from PYME.misc import pyme_zeroconf
                ns = pyme_zeroconf.getNS()
                URI = ns.resolve(taskQueueName)
            except:
                URI = 'PYRONAME://' + taskQueueName

            self.tq = Pyro.core.getProxyForURI(URI)
        else:
            self.tq = Pyro.core.getProxyForURI(self.queueURI)

        self.seriesName = filename[len('QUEUE://'):]

        self.dataSource = TQDataSource.DataSource(self.seriesName, self.tq)
        self.data = self.dataSource  #this will get replaced with a wrapped version

        self.mdh = MetaDataHandler.QueueMDHandler(self.tq, self.seriesName)
        MetaData.fillInBlanks(self.mdh, self.dataSource)

        #self.timer.WantNotification.append(self.dsRefresh)

        self.events = self.dataSource.getEvents()
        self.mode = 'LM'