ann2rr filters intervals by length instead of by time in the record

Geschlossen
#617 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

Ein zugehöriger Pull Request wurde bereits gemerged.

  • #622 von @TheNetherWatcher — gemerged

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
72/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
data

Rechercherichtung

The ann2rr function lives in wfdb/processing.py; start by reading its docstring and the filtering lines shown. Compute each interval's end time as cumulative sum of RR intervals from start_time, then keep those between bounds. Done means ann2rr('sample-data/100','atr', start_time=0.9) returns intervals after 0.9s, and tests pass.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

The ann2rr docstring describes start_time and stop_time as "the time to start the intervals" and "the time to stop the intervals", in seconds. But they're compared with the length of each interval, not with its position in the record:

time_interval = rr_interval / ann.fs
if start_time is not None:
    time_interval = time_interval[(time_interval > start_time).astype(bool)]
if stop_time is not None:
    time_interval = time_interval[(time_interval < stop_time).astype(bool)]

For example, with record 100 (360 Hz):

from wfdb import processing

len(processing.ann2rr("sample-data/100", "atr"))                  # 2274
processing.ann2rr("sample-data/100", "atr", start_time=0.9)       # 30 intervals, all longer than 0.9 s
processing.ann2rr("sample-data/100", "atr", stop_time=0.5)        # 2 intervals, both shorter than 0.5 s

So start_time=0.9 drops every interval shorter than 0.9 s, rather than the intervals before 0.9 s into the record.

The WFDB ann2rr program's -f and -t options select annotations by time in the record. ann2rr should probably do the same: keep the intervals that end between start_time and stop_time, measuring the first interval from start_time, as ann2rr -f does.

This is separate from #584, which changes which annotations are used but leaves this filtering unchanged.

Vorherrschende Sprache
Jupyter Notebook
Sterne
856
Forks
326
Ø Merge
22 Std. 46 Min.
Gemergte PRs (30 T.)
40

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus MIT-LCP/wfdb-python

Alle Issues in MIT-LCP/wfdb-python

Ähnliche Issues

Weitere Issues zu Data Engineering

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.