def main(argv): a = wfdb.WFDB_Anninfo() annot = wfdb.WFDB_Annotation() if len(argv) < 3: print "usage:", argv[0], "annotator record" sys.exit(1) a.name = argv[1] a.stat = wfdb.WFDB_READ if wfdb.annopen(argv[2], a, 1) < 0: sys.exit(2) rrmax = 3 * wfdb.sampfreq(argv[2]) if rrmax <= 0: sys.exit(3) rrhist = [0] * int(rrmax+1) while 1: if not (wfdb.getann(0,annot) == 0 and not wfdb.wfdb_isqrs(annot.anntyp)): break t = annot.time while wfdb.getann(0, annot) == 0: if wfdb.wfdb_isqrs(annot.anntyp): rr = annot.time - t if rr > rrmax: rr = rrmax rrhist[rr] += 1 t = annot.time for rr in range(1, int(rrmax)): print '%(rr)4d %(time)s' % {'rr': rrhist[rr], 'time': wfdb.mstimstr(rr)} rr += 1 print '%(rr)4d %(time)s (or longer)' % {'rr': rrhist[rr], 'time': wfdb.mstimstr(rr)} wfdb.wfdbquit()
def _set_attributes(self): #------------------------- if self._siginfo is None: return # wfdbname = wfdb.wfdbfile(None, None) # recname = wfdbname[:-4] if wfdbname.endswith('.hea') else wfdbname # if source.startswith('http://') or recname.startswith('ftp://'): # source = wfdbname # else: # recname = file_uri(recname) # source = file_uri(wfdbname) # if not uri: uri = recname ##logging.debug('rec: %s, source: %s', recname, source) self._framerate = wfdb.sampfreq(None)/wfdb.getspf() start = wfdb.mstimstr(0) if start[0] == '[': self.starttime = dateutil.parser.parse(start[1:-1], dayfirst=True) if self._siginfo[0].nsamp > 0: self.duration = self._siginfo[0].nsamp/float(self._framerate) ##duration = dateutil.parser.parse(wfdb.mstimstr(wfdb.strtim('e'))) ##print duration ## But has date... self._framesize = 0 self.data_signals = [ ] self.annotation_signals = [ ] self._offsets = [ ] offset = 0 for n in xrange(self._nsignals): if self._siginfo[n].desc != 'EDF Annotations': self.data_signals.append(n) self.add_signal(WFDBSignal(n, self, self._siginfo[n].units, metadata = { 'label': self._siginfo[n].desc, 'rate': self._framerate*self._siginfo[n].spf, } )) else: self.annotation_signals.append(n) self._framesize += self._siginfo[n].spf self._offsets.append((offset, self._framesize)) offset = self._framesize self._sigpoints = np.ones(self._framesize, 'bool') for n in xrange(self._nsignals): if n in self.annotation_signals: for i in xrange(*self._offsets[n]): self._sigpoints[i] = False
def main(argv): record = '' annotator = '' # parse the arguments try: opts, args = getopt.getopt(argv, "hr:a:", ["help"]) except getopt.GetoptError: usage() sys.exit(2) for opt, arg in opts: if opt in ("-h", "--help"): usage() sys.exit() elif opt == '-r': record = arg elif opt == '-a': annotator = arg if len(record) == 0 or len(annotator) == 0: usage() sys.exit(2) # set the sampling frequency sps = wfdb.sampfreq(record) if sps < 0: sps = wfdb.WFDB_DEFFREQ wfdb.setsampfreq(sps) # get a new anninfo object ai = wfdb.WFDB_Anninfo() # set ai fields ai.name = annotator ai.stat = wfdb.WFDB_READ # open the annotation result = wfdb.annopen( record, ai, 1 ) if result < 0: usage() sys.exit(2) # get a new annotation object annot = wfdb.WFDB_Annotation() while wfdb.getann(0, annot) == 0: # remove first char from aux string, if there is one if annot.aux is not None: aux = annot.aux[1:] else: aux = "" print "%s\t%d\t%s\t%d\t%d\t%d\t%s" % ( \ wfdb.mstimstr(-annot.time), \ annot.time, \ wfdb.annstr(annot.anntyp), annot.subtyp, annot.chan, \ annot.num, \ aux) wfdb.wfdbquit()