예제 #1
0
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()
예제 #2
0
  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
예제 #3
0
파일: rdann.py 프로젝트: crowdEEG/wfdb-swig
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()