def pulsesByFrameInterval(self, beginFrame, endFrame): # TODO: need to optimize this pcg = self.plxH5._pulsecallsGroup startFrame_ = arrayFromDataset(pcg["StartFrame"], *self._offsets) widthInFrames_ = arrayFromDataset(pcg["WidthInFrames"], *self._offsets) endFrame_ = startFrame_ + widthInFrames_ # find interval beginPulse = bisect_left(startFrame_, beginFrame) endPulse = bisect_right(endFrame_, endFrame) return ZmwPulses(self, self.holeNumber, beginPulse, endPulse)
def prePulseFrames(self): # This is a bit tricky. Basically we want startFrame - lag(endFrame) # sfp = startframeprevious, etc. if self.offsetBegin == 0: singleZero = np.array([0], dtype=np.uint32) efp = np.hstack([singleZero, self.endFrame()[:-1]]) else: sfp = arrayFromDataset(self._pulsecallsGroup["StartFrame"], self.offsetBegin - 1, self.offsetEnd - 1) wfp = arrayFromDataset(self._pulsecallsGroup["WidthInFrames"], self.offsetBegin - 1, self.offsetEnd - 1) efp = sfp + wfp return self.startFrame() - efp
def isCrfPulse(self): return arrayFromDataset(self._pulsecallsGroup["IsPulse"], *self.offsets)
def labelQV(self): return arrayFromDataset(self._pulsecallsGroup["LabelQV"], *self.offsets)
def maxSignal(self): return arrayFromDataset(self._pulsecallsGroup["MaxSignal"], *self.offsets)
def pulseWidthFrames(self): return arrayFromDataset(self._pulsecallsGroup["WidthInFrames"], *self.offsets)
def pulseStartFrame(self): return arrayFromDataset(self._pulsecallsGroup["StartFrame"], *self.offsets)
def channel(self): return arrayFromDataset(self._pulsecallsGroup["Channel"], *self.offsets)