AKADEMIA GÓRNICZO-HUTNICZA im. St. Staszica w Krakowie WEAIiE, Katedra Automatyki Laboratorium Biocybernetyki Przedmiot: Przetwarzanie sygnałów w systemach diagnostyki medycznej. Temat projektu: Wyznaczanie morfologii uderzeń serca. QRS_MORPH Spis treści: 1. ABSTRAKT... 2 2. WSTĘP... 2 3. FORMAT PLIKU WEJŚCIOWEGO/WYJŚCIOWEGO... 3 4. REZULTATY I WNIOSKI... 4 5. NAPOTKANE PROBLEMY... 5 6. PODSUMOWANIE... 5 7. LITERATURA... 6 8. DODATEK A: OPIS INFORMATYCZNYCH PROCEDUR... 7 9. DODATEK B: SPIS ZAWARTOŚCI DOŁĄCZONEGO NOŚNIKA... 9 Wykonali: Błażej Biesiada, Wojciech Kucharski V rok IS konsultant: dr hab. inż. Piotr Augustyniak Wersja 1.0 Kraków, styczeń 2010. -1-
1. Abstrakt Niniejszy projekt jest częścią (modułem), większego projektu będącego automatycznym analizatorem echokardiogramów (EKG). Zadaniem modułu QRS_MORPH, który obejmuje ten projekt jest ustalanie dla każdej ewolucji serca w sygnale wejściowym źródła pochodzenia jej pobudzenia. Opracowane rozwiązanie zostało zaimplementowane w środowisku MATLAB. Podczas realizacji projektu wykorzystano bazę MITDB w celu testowania i weryfikacji zaproponowanego algorytmu. Wyniki testów dały zadowalające rezultaty dla większości pacjentów bez mieszanych patologii. Na chwilę obecną nie udało się natomiast połączyć w działającą całość wszystkich modułów analizatora EKG w działającą całość. 2. Wstęp a) Cele i założenia projektu. Celem projektu było stworzenie algorytmu określania morfologii zespołów QRS w zapisie EKG, czyli innymi słowy źródła pochodzenia bodźca pobudzającego ewolucje serca. Projekt ten jest modułem większego programu do analizy EKG, w ramach którego komunikuje się (dane wejściowe, instrukcje sterujące, kody błędów itd.) z innymi modułami za pośrednictwem plików posiadających specjalnie zaprojektowaną strukturę oraz przechowywanych w plikach o formacie XML. Zadanie automatycznego określania morfologii wykrytych klas zespołów QRS, jest jednym z ważniejszych zadań w elektrokardiografii. Jest to jednocześnie jedno z trudniejszych zadań, szczególnie jeśli do czynienia mamy ze złożonymi patologiami serca, które mogą maskować źródło pochodzenia bodźca serca. Dodatkowo źródła pobudzenia serca mogą być bardzo różne i znajdować się właściwie w każdym miejscu układu bodźca przewodzącego [5]. Stąd też w niniejszym projekcie zajmujemy się wyłącznie bodźcami prawidłowymi, pochodzącymi z węzła SA (SV) oraz bodźcami pochodzącymi z wnętrza komór serca (V) [1]. b) Dyskusja dostępnych rozwiązań. W literaturze spotykamy bardzo wiele różnych podejść do detekcji morfologii zespołów QRS, od prostych metod odległościowych [2], poprzez bardziej skomplikowane drzewa decyzyjne [3], aż po sztuczne sieci neuronowe [4]. Jednak kwestią najważniejszą nie jest sam sposób klasyfikacji, lecz sposób parametryzacji zapisu uderzeń serca. Parametry powinny być dobrane w taki sposób, aby maksymalnie rozróżniały przypadek zespołów komorowych od nadkomorowych. c) Zarys ogólny proponowanego rozwiązania. -2-
W proponowanym przez nas rozwiązaniu, musieliśmy założyć ograniczoną dostępność informacji o sygnale EKG, ponieważ projekt ten jest wyłącznie modułem większego projektu analizy EKG, korzystającym z informacji zebranych w centralnym pliku wymiany. Przykładowo nie bierzmy pod uwagę załamka P ponieważ na etapie określania morfologi nie są jeszcze znane żadne informacje na jego temat [1]. Najważniejszym parametrem używanym w naszym projekcie jest długość odcinka QRS określana dzięki danym uzyskanym z modułu QRS_DET (lub QRS_WAVE tutaj jest pewna niezgodność pomiędzy informacjami dostarczonymi nam przez kolegów realizujących inne projekty). Jednak w przypadku występowania w sygnale tzw. późnych potencjałów długość odcinka QRS może być zawyżona, stąd też następnym parametrem, jaki bierzemy pod uwagę jest maksymalna prędkość sygnału (dla zespołu SV jest ona znacząco większa niż dla V [1]). Jest to wstępny zestaw parametrów, który jest weryfikowany. Wyk 1: Parametry klas dla pacjenta nr 106 (MITDB) W trakcie badań nad projektem testowaliśmy również takie parametry jak RMS, pole i obwód trójkąta QRS czy momenty widmowe. Jednak z naszych badań wynikło iż do wymaganego rozróżnienia pomiędzy pobudzeniami SV, V, a innymi, wystarczającymi danymi są długość QRS oraz prędkość sygnału. Potwierdzeniem takiej tezy jest wykres 1, na którym przedstawiono położenie poszczególnych klas w przestrzeni długości QRS oraz prędkości sygnału. Na wykresie nie widać dobrze ilości ewolucji jaka może kryć się pod pojedynczą kropką, ze względu na wiele ewolucji o niemal identycznych parametrach. Stąd też ilość ewolucji normalnych nachodzących na obszar PVC jest mniejsza niż mogło by się to wydawać, co więcej dokładna analiza spornych ewolucji pozwoliła stwierdzić iż znalazły się w tym obszarze ze względu na błędne rozpoznanie wierzchołków QRS przez moduł QRS_DET. 3. Format pliku wejściowego/wyjściowego W związku z tym, iż nie został narzucony ani też ustalony pomiędzy twórcami poszczególnych modułów żaden format danych wejściowych, a jedynie struktury w których przechowywane są dane, postanowiliśmy jako plik przenoszący informacje wybrać najbardziej uniwersalny format z powszechnie używanych tj. XML. Żaden inny format nie pozwoli w łatwy sposób zapisać na tyle skomplikowanej struktury danych. -3-
Format XML jest niezależny od platformy, co umożliwia łatwą wymianę dokumentów pomiędzy różnymi systemami. Większość środowisk programistycznych posiada gotowe biblioteki służące do zapisu i odczytu plików plików XML. Opracowany przez nas sposób na komunikacje modułów z plikami XML w środowisku MATLAB opublikowaliśmy na forum wszystkich twórców poszczególnych modułów tworzonego analizatora EKG. Dodatkowy toolbox MATLABa, z którego skorzystaliśmy to darmowy XML Toolbox załączony na płycie wraz z projektem oraz dostępną na stronie Mathworks: http://www.mathworks.com/matlabcentral/fx_files/4278/1/xml_toolbox-3.1.2_matlab-6.5.zip Umożliwia on łatwy eksport i import danych do standardu XML. Przykładowy plik w takim formacie (puste dane) został również dołączony do projektu. 4. Rezultaty i wnioski Działanie algorytmu zostało przetestowane z wybranymi pacjentami z bazy MITDB. Tabela 1 zawiera statystyki skuteczności algorytmu dla wybranych pacjentów. Do statystyk nie zostały wliczone zespoły QRS uznane przez algorytm za artefakty, oraz ewolucje dla których adnotacje w bazie MITDB były przesunięte o więcej niż 150[ms] względem wierzchołka Q wykrytego przez moduł QRS_DET. Niestety przyjęty przez nas podział ewolucji na komorowe i nadkomorowe nie do końca odpowiadał przyjętym oznaczeniom w bazie MITDB, gdzie nie zawsze ewolucje oznaczone są jednoznacznie jako NORMAL (pobudzenie z SA) lub PVC (pobudzenie komorowe). Przykładowo, w przypadku występowania bloku lewej lub prawej odnogi pęczka Hissa w przedmiotowej bazie używane są osobne kody adnotacji (odpowiednie LBBB i RBBB). Zgodnie z naszymi obserwacjami oraz porównaniem problematycznych ewolucji do przykładów w [5] można stwierdzić iż znakomita większość adnotacji LBBB i RBBB oznacza ewolucje Wyk 2: Blok prawej odnogi pęczka Hissa (MITDB, 231) pobudzone w SA (wykres 2). Stąd też w naszych testach sprowadziliśmy kody LBBB oraz RBBB do NORMAL. Założenie takie nie jest prawdziwe jedynie dla pacjentów z mieszanymi patologiami rytmu serca, ale takie przypadki są zdecydowanie rzadsze oraz i tak trudno określić w nich jednoznacznie morfologię. -4-
Pacjent Skuteczność Ilość porównanych Całkowita ilość ewolucji ewolucji 100 97.87 2119 2274 101 99.45 1831 1874 106 81.65 1891 2098 108 3.27 1619 1824 231 99.61 1544 2011 Tab 1: Skuteczność algorytmu sprawdzona z bazą MITDB Po analizie danych z testów jakościowych z tabeli 1 od razu zuważyć można wyjątkowo słaby wynik dla pacjenta nr 108. Taki stan rzeczy spowodowany jest bardzo nietypowym zapisem EKG, w którym załamek Q jest bardzo płytki (wykres 3). Co za tym idzie najczęściej jest on nie prawidłowo wykrywany przez moduł QRS_DET, stąd też dane służące do obliczenia długości zespołu QRS są właściwie nie Wyk 3: Pacjent nr 108 użyteczne. Mimo nietypowego echokardiogramu, nasz algorytm powinien osiągnąć znacznie lepszą skuteczność pracy dla prawidłowo rozpoznanych zespołów QRS. 5. Napotkane problemy Ze względu na modułową budowę analizatora EKG, którego częścią jest nasz projekt, pojawiło się wiele problemów związanych z harmonogramem pracy poszczególnych zespołów oraz ustaleniem wspólnego formatu wymiany danych. Stąd też ostatecznie przygotowaliśmy dwa interfejsy wejściowe dla projektu: pierwszy zgodny z aktualnym formatem danych stosowanym w projekcie QRS_DET i z bazą MITDB (plik qrs_morph.m) oraz docelowy interfejs, zgodny z plikami XML o strukturze zaproponowanej przez opiekuna projektu (plik qrs_morph_test.m) -5-
6. Podsumowanie Zaproponowana metoda ustalania morfologi ewolucji serca, okazała się skuteczną, dla większości pacjentów bez złożonych wad serca, w przypadku których przebieg sygnału jest na tyle nietypowy iż niemożliwe staje się automatyczne ustalenie morfologi z zadaną pewnością. Aczkolwiek na wyniki testów jakościowych należy patrzeć przez pryzmat, przyjętych jako referencja, nie do końca jednoznacznych adnotacji w bazie MITDB, które nieuwzględnianą mieszanych patologi rytmu serca. Rozwinięciem niniejszego projektu mogłoby być dodanie analizy załamka P, bardzo istotnego z punktu widzenia określania morfologi. Kształt załamka mógłby być prawdopodobnie z powodzeniem badany przy pomocy analizy transformatą Fourier-a lub transformatą falkową. 7. Literatura [1] Augustyniak P., Przetwarzanie Sygnałów Elektrodiagnostycznych, Uczelniane Wydawnictwo Naukowo-Dydaktyczne, Kraków 2001 [2] Rappaport S.H, Gillick L., Moody G. B., Mark R. G., QRS Morphology Classification Quantitative Evaluation of Different Strategies, Computers in Cardiology 1982, 33-38. [3] Chiarugi F., Emmanouilidou D., Tsamaridnos I., Tollis I. G., Morphological Classification of Heartbeats Using Similarity Features and a Two-Phase Decision Tree, University of Crete [4] Duro R. J., Santos J., ECG beat classification with synaptic delay based artificial neural networks, Springer Berlin [5] Stanke A., Elektrokardiogram Bez Tajemnic, Via Medica 1999-6-
8. Dodatek A: Opis informatycznych procedur qrs_morph.m INFO: Glowny skrypt modulu QRS_MORPH DEPENDICIES: QRS_DET, QRS_CLASS, QRS_WAVES, morphology.m USED GLOBALS: SFREQ - czestostliwosc probkowania sygnalu w [Hz] SIGNAL - wektor z caloscia sygnalu badanego kanalu EKG CREATED: 15/01/2010, Blazej Biesiada VERSION: 1.0 qrs_morph_test.m INFO: Testowy skrypt modulu QRS_MORPH nie korzystajacy z plikow XML DEPENDICIES: morphology.m, readtestdata.m USED GLOBALS: SFREQ - czestostliwosc probkowania sygnalu w [Hz] SIGNAL - wektor z caloscia sygnalu badanego kanalu EKG CREATED: 15/01/2010, Blazej Biesiada VERSION: 1.0 morphology.m function [ECGCODE] = morphology(q, R, S, RR) INFO: Funkcja okresla morfologie dla pojedynczej ewolucji serca INPUT: Q, R, S - numery probek aktualnie badanego zespolu QRS RR - aktualny interwal miedzyuderzeniowy podany w ilosci probek OUTPUT: ECGCODE - kod zgodny z kodami z pliku ecgcodes.h z biblioteki WFDB Wykorzystywane kody: NOTQRS, NORMAL, PVC, UNKNOWN USED GLOBALS: SFREQ - czestostliwosc probkowania sygnalu w [Hz] SIGNAL - wektor z caloscia sygnalu badanego kanalu EKG COMMENTS: Opracowano na podstawie: Augustyniak P., Przetwarzanie Sygnalow Elektrodiagnostycznych, rozdzial 6.2.5. CREATED: 15/01/2010, Blazej Biesiada VERSION: 1.0 readtestdata.m function [M freq annot annot_time Q R S] = readtestdata(record_id) INFO: Funkcja ladujaca testowe dane z biblioteki MITDB oraz projektu QRS_DET autorstwa T. Kozery oraz P. Rebisza INPUT: record_id - numer sygnalu (rekordu) z mazy MITDB -7-
OUTPUT: M - sygnal(y) annot - wektor anotacji annot_time - czasy poszczegolnych anotacji Q, R, S - wektory z nr kolejnych wierzcholkow Q, R, S USED GLOBALS: - DEPENDICIES: - COMMENTS: Funkcja opracowana w oparciu o skrypt rddat.m autorstwa Roberta Tratinga-a (ponizej oryginalny komentarz autora). ------------------------------------------------------------------------- This programm reads ECG data which are saved in format 212. (e.g., 100.dat from MIT-BIH-DB, cu01.dat from CU-DB,...) The data are displayed in a figure together with the annotations. The annotations are saved in the vector ANNOT, the corresponding times (in seconds) are saved in the vector ATRTIME. The annotations are saved as numbers, the meaning of the numbers can be found in the codetable "ecgcodes.h" available at www.physionet.org. ANNOT only contains the most important information, which is displayed with the program rdann (available on www.physionet.org) in the 3rd row. The 4th to 6th row are not saved in ANNOT. created on Feb. 27, 2003 by Robert Tratnig (Vorarlberg University of Applied Sciences) (email: rtratnig@gmx.at), algorithm is based on a program written by Klaus Rheinberger (University of Innsbruck) (email: klaus.rheinberger@uibk.ac.at) -8-
9. DODATEK B: Spis zawartości dołączonego nośnika W poszczególnych katalogach nośnika znajdują się: SRC pliki źródłowe projektu: qrs_morph.m główny skrypt uruchomieniowy programu, napisany z myślą o współpracy z innymi modułami za pośrednictwem plików XML qrs_morph_test.m główny skrypt uruchomieniowy programu, napisany w celu umożliwienia tymczasowej pracy na danych testowych morphology.m funkcja określająca morfologie pojedynczej ewolucji serca readtestdata.m funkcja odczytująca dane testowe z bazy MITDB oraz projektu QRS_DET autorstwa Tomasza Kozery oraz Pawła Rębisza LIB dodatkowe Toolbox-y Matlaba: XML_Toolbox.zip Toolbox umożliwiający zapis i odczyt danych do formatu XML DOC dokumentacja oraz załączniki: QRS_MORPH-Biesiada-Kucharski.PDF niniejszy raport w postaci pliku PDF PSSDM_struktury.doc opis struktur danych wykorzystywanych przez projekt PSSDM_shared.XML przykładowy plik XML do wymiany danych między projektami (puste pola) ecgcodes.h lista kodów adnotacji EKG, z którymi zgodny jest nasz projekt TEST qrs_det/*.qrs przykładowe pliki wynikowe z modułu QRS_DET MITDB/*.* - przykładowe pliki z bazy MITDB (format 212) -9-