Пример #1
0
 def process(self, waveform, events, display=True):
     self.deletedFits = []
     for item in self.plotItems:
         try:
             item.sigClicked.disconnect(self.fitClicked)
         except:
             pass
     self.plotItems = []       
     
     tau = waveform.infoCopy(-1).get('expDeconvolveTau', None)
     dt = (waveform.xvals(0)[1:] - waveform.xvals(0)[:-1]).mean()
     
     opts = {
         'dt': dt, 
         'tau': tau, 
         'multiFit': self.ctrls['multiFit'].isChecked(),
         'waveform': waveform.view(np.ndarray),
         'tvals': waveform.xvals('Time'),
         'ampMax':self.ctrls['Amplitude_UpperBound'].value(),
         'riseTauMax':self.ctrls['RiseTau_UpperBound'].value(),
         'decayTauMax':self.ctrls['DecayTau_UpperBound'].value()
     }       
     
     
     output = self.fitEvents(events, startEvent=0, stopEvent=len(events), opts=opts)
     guesses = output['guesses']
     eventData = output['eventData']
     indexes = output['indexes']
     xVals = output['xVals']
     yVals = output['yVals']
     output = output['output'] 
     
     for i in range(len(indexes)):            
         if display and self['plot'].isConnected():
             if self.ctrls['plotFits'].isChecked():
                 item = pg.PlotDataItem(x=xVals[i], y=yVals[i], pen=(0, 0, 255), clickable=True)
                 item.setZValue(100)
                 self.plotItems.append(item)
                 item.eventIndex = indexes[i]
                 item.sigClicked.connect(self.fitClicked)
                 item.deleted = False
             if self.ctrls['plotGuess'].isChecked():
                 item2 = pg.PlotDataItem(x=xVals[i], y=functions.expPulse(guesses[i], xVals[i]), pen=(255, 0, 0))
                 item2.setZValue(100)
                 self.plotItems.append(item2)
             if self.ctrls['plotEvents'].isChecked():
                 item2 = pg.PlotDataItem(x=xVals[i], y=eventData[i], pen=(0, 255, 0))
                 item2.setZValue(100)
                 self.plotItems.append(item2)
             #plot = self.plot.connections().keys()[0].node().getPlot()
             #plot.addItem(item)
         
     self.outputData = output
     return {'output': output, 'plot': self.plotItems}
Пример #2
0
 def __init__(self, name):
     CtrlNode.__init__(self, name, terminals={
         'data': {'io': 'in'},
         'fitParams': {'io': 'out'},
         'output': {'io': 'out', 'bypass': '******'},
         'plot': {'io': 'out'},
     })
     self.plotItem = pg.PlotDataItem()
Пример #3
0
 def process(self, waveform, events, display=True):
     self.deletedFits = []
     for item in self.plotItems:
         try:
             item.sigClicked.disconnect(self.fitClicked)
         except:
             pass
     self.plotItems = []
     
     tau = waveform.infoCopy(-1).get('expDeconvolveTau', None)
     dt = waveform.xvals(0)[1] - waveform.xvals(0)[0]
     opts = {
         'dt': dt, 'tau': tau, 'multiFit': self.ctrls['multiFit'].isChecked(),
         'waveform': waveform.view(np.ndarray),
         'tvals': waveform.xvals('Time'),
     }
     
     
     #if not self.ctrls['parallel'].isChecked():
     output = processEventFits(events, startEvent=0, stopEvent=len(events), opts=opts)
     guesses = output['guesses']
     eventData = output['eventData']
     indexes = output['indexes']
     xVals = output['xVals']
     yVals = output['yVals']
     output = output['output']
     #else:
         #print "parallel:", self.pool, self.poolSize
         #results = []
         #nProcesses = self.ctrls['nProcesses'].value()
         #evPerProcess = int(len(events) / nProcesses)
         #start = 0
         #for i in range(nProcesses):
             #stop = start + evPerProcess
             #if stop > len(events):
                 #stop = len(events)
             #args = (events, start, stop, opts)
             #results.append(self.pool.apply_async(processEventFits, args))
             #print "started process", start, stop
             #start = stop
         #data = []
         #guesses = []
         #eventData = []
         #indexes = []
         #xVals = []
         #yVals = []
         #for res in results:  ## reconstruct results here
             #print "getting result", res
             #output = res.get(10)
             #data.append(output['output'])
             #guesses.extend(output['guesses'])
             #eventData.extend(output['eventData'])
             #indexes.extend(output['indexes'])
             #xVals.extend(output['xVals'])
             #yVals.extend(output['yVals'])
         #output = np.concatenate(data)
         
     for i in range(len(indexes)):            
         if display and self['plot'].isConnected():
             if self.ctrls['plotFits'].isChecked():
                 item = pg.PlotDataItem(x=xVals[i], y=yVals[i], pen=(0, 0, 255), clickable=True)
                 item.setZValue(100)
                 self.plotItems.append(item)
                 item.eventIndex = indexes[i]
                 item.sigClicked.connect(self.fitClicked)
                 item.deleted = False
             if self.ctrls['plotGuess'].isChecked():
                 item2 = pg.PlotDataItem(x=xVals[i], y=functions.pspFunc(guesses[i], xVals[i]), pen=(255, 0, 0))
                 item2.setZValue(100)
                 self.plotItems.append(item2)
             if self.ctrls['plotEvents'].isChecked():
                 item2 = pg.PlotDataItem(x=xVals[i], y=eventData[i], pen=(0, 255, 0))
                 item2.setZValue(100)
                 self.plotItems.append(item2)
             #plot = self.plot.connections().keys()[0].node().getPlot()
             #plot.addItem(item)
         
     self.outputData = output
     return {'output': output, 'plot': self.plotItems}