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)
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)
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)
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)
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'