Giter Site home page Giter Site logo

ecg-analyzer's People

Contributors

aniseed avatar barthez avatar ceceron avatar dirsot avatar dobry avatar fuko-fabio avatar gwanako avatar kfarganus avatar kn65op avatar krzysztofb88 avatar licz avatar lukasskutrzuba avatar lukasz-pekala avatar lukkrz avatar mateuszbaran avatar mateuszkrasucki avatar miczi avatar piotrm avatar strasznyobibok avatar weralabaj avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ecg-analyzer's Issues

Rozwinąć StPlot

Dodać do rysowania wykresu wrzystkie punkty Interwału: ISO point, J point i ST point.

Najlepiej na 3 różne kolory.

Dodać legendę (było by super).

Zobacz sobie w innych wykresach i w dokumentacji Qwt jak dodaje się poszczególne serie danych do wykresów.

Ścieżka generowania plików ui_*.h

Nie wiem w czym ale u kogoś pliku ui_*.h generują się do folderu GeneratedFiles przeciwieństwie do CMake który generuje je w ${CMAKE_CURRENT_BINARY_DIR}.

Żeby zmienić zachowanie CMake trzeba przepisać QT4_WRAP_UI, nie wiem co trzeba zrobić żeby zmienić zachowanie tego innego narzędzia, ale trzeba ujednolicić proces generacji plików ui_*.h.

Dziękuję :)

Parametry do R-peaks

Potrzebne przekazywanie wybranego algorytmu (z rozwijalnej listy)
dwie wartości - PanTompkins, Hilbert.

Dodatkowo w zależności od wybranego algorytmu potrzebne będą dodatkowe parametry.

Dla PanTompkins
możliwość ustawienia szerokości okna całkowania, domyślnie wartość 25, na razie ograniczyć wybór z zakresu od 5 do 50.
możliwość ustawienia progu detekcji z zakresu 0.1 do 0.9, domyslne 0.2, skok 0.1 Dodać też możliwość automatycznego określania progu, np wartość zero może być jako próg automatyczny. Należy to jakoś zaznaczyć na liście, mi wystarczy wartość 0.

Co do metody Hilberta parametry nie są mi znane więc zostaną podane w przyszłości.

Przykład dostarczania parametrów:
ParametersTypes pt;
pt["detection_method"] = PAN_TOMPKINS;
pt["window_size"] = 15;
pt["thersold_size"] = 0.1;
setParamsRPeaks(pt);

można też zobaczyć w branch-u Gtest

Pionowa oś wykresów

Podobno ciągle jest zła skala na pionowej osi czasu. Takie informacje dostaliśmy na dzisiejszych konsultacjach.

Tabela interwałów ST

Opis pierwszej kolumny: "Numer zespołu QRS"

Dodać 3 kolumne: długość interwału ST w ms.

Sformatować 2 pierwsze kolumny w HH:MM:SS.ms

GUI - Proszę o info wszystkie grupy ws. jednostek

  1. Proszę wszystkie grupy o zweryfikowanie czy to czego potrzebują znajduje się już na GUI.
    Jeśli nie to podajcie w tym temacie czego potrzebujecie.
  2. Do niektórych waszych danych potrzebne będą mi jednostki jeśli widzicie, że nie ma jakiejś jednostki przy danych z Waszych modułów to również to zgłoście

GUI - wyjątek przy nie odczytaniu sygnału.

Należy zadbać by była odpowiednia reakcja na wartość zwróconą przy wywołaniu funkcji readFile:

  • true oznacza, że pliki udało się odczytać
  • false oznacza, że nie udało się odczytać plików.
    Przydatna by była informacja dla użytkownika, że nie udało się odczytać sygnału.

Wykresy DFA

Proszę o podpięcie wykresów i danych do nich po uruchomieniu modułu DFA.

  1. Wykres punktowy, na osi x
    wartości z OtherSignal ECGHRVDFA::GetDfa_x(), na osi y wartości z
    OtherSignal ECGHRVDFA::GetDfa_y(). Oś x i y ma być w skali
    logarytmicznej. Oś y podpisana 'F(n)', oś x podpisana 'n'. Wykres w załączniku w podpunkcie c)
  2. Drugi wykres z połączonymi linią punktami, dane
    do niego siedzą w metodzie OtherSignal ECGHRVDFA::GetRR_integrated().
    Wartości sygnału trafiają na oś y, kolejne indeksy na oś x. Oś y
    podpisana 'y(k)', oś x podpisana 'Ilość RR, k'. Wykres w załączniku w podpunkcie b)
    wykresyDFA

Parametry do ECG-Baseline

Potrzebne przekazywanie wybranego algorytmu (z rozwijalnej listy) - na razie potrzebne dwie wartości - Średnia krocząca (Moving average) oraz FIltr Butterwortha. Dodatkowo w zależności od wybranego algorytmu potrzebne będą dodatkowe parametry. Dla średniej kroczącej przekazujemy "Span" (liczbę sąsiadów/szerokość okna - nazwa do konsultacji z prowadzącym) - liczbę całkowitą. Pozostałe uzupełnimy na bieżąco.

Zródła i headery w CMakeList

Trzeba poprawić (uzupełnić) listę plików źródeł i plików nagłówkowych, co by się kompilowało i linkowało bez problemów.

Info dla grup zależnych od R-peaks

Popełniłem małe zmiany w moim kodzie. Ponieważ grupa Baseline nie dostarcza odpowiedniego sygnału wrzuciłem zamockowany sygnał który obecnie jest zawsze wczytywany przy odpaleniu mojego modułu. Dzięki temu zawsze wykrywam załamki R i zwracam wam realny wektor, będziecie mogli po testować swoje moduły. Żeby wyłączyć wczytywanie zamockowanego sygnału należy za komentować makrodefinicje w pliku RPeaksDetector.h USE_MOCKED_SIGNAL.

Tabela epizodów ST

Po zoomowaniu wykresu ukryć ISO, J i ST pokazać Epizode start i end.

Format czasu!

Zły sygnał z modułu BaseLine dla R-peaks

Na początku poinformowałem was jakiego sygnału spodziewa się nasz moduł, niestety sygnał jaki dostarczacie nie będzie działał!. Sygnał musi mieć usuniętą składową stałą i musi być znormalizowany do wartości od -1 do +1. Bez tego nic nie zostanie wykryte!

Metoda do formatowania czasu

Podaje numer próbki i dostaje czas w formacie HH:MM:SS.ms. Powinno to być doczepione do sygnału albo do czego, tak żeby nie trzeba było podawać freq.

Musi to zostać wykorzystane na wykresach i w pozostałych modułach.

Mateusz, zadaj to komuś odpowiedniemu.

Warning to fix

RPeaksDetector.cpp(139): warning C4804: '>' : unsafe use of type 'bool' in operation

Zmiana w wyświetlaniu QRS w module ST

Funkcja span powinna zwracać wartości:

początek - kilka próbek przed P_onset
koniec - kilka próbek za T_end

Trzeba te wartości zapisać sobie w analizatorze (w obu). Trzeba również srobić fallback gdyby przypadkiej nie dostaliśmy takiej informacji od modułu wcześniejszego.

czyli: jeśli w intervale zmienna start,end nie ma wartośći (ma wartosc 0) trzeba zastosować aktualny "algorytm" wyliczania początku i końca wyswietlanego fragmentu sygnału.

UWAGA - duży merge

Hej, zmergeowałem duży kawałek ECGBaseline. Kod w nim zawarty nie porusza w żaden sposób mechanizmów poza modułem ECGBaseline, a do niego samego wprowadza dość spore zmiany.

  1. Sygnał z defaultowego uswuania baseline (moving average) jest w końcu bardzo poprawny
  2. Wybór Butterworth/Chebyshev uruchamia metody zahardcode'owanymi parametrami - więc manipulacja gui nic niestety w tym przypadku nie daje
  3. Wybór kanału odbywa się na bazie SNR - przetestowane milion razy

Jeżeli jednak jakimś cudem przeze mnie coś by się komuś pieprzyło proszę o checkout do brancha "stable_master", który to ma swoje "czoło" w miejscu zaraz przed moimi zmianami (takie koło ratunkowe). Niemniej jednak sądze, że nikt nie będzie miał problemów

bad alloc Candidate for T_end 599586

Któryś z modułów rzuca wyjątkiem bad alloc:
``
Candidate for T_end 599563
Candidate for T start 599564
Candidate for T_end 599569
Candidate for T start 599571
Candidate for T_end 599575
Candidate for T start 599576
Candidate for T_end 599582
Candidate for T start 599583
Candidate for T_end 599586
Qt has caught an exception thrown from an event handler. Throwing
exceptions from an event handler is not supported in Qt. You must
reimplement QApplication::notify() and catch all exceptions there.

terminate called after throwing an instance of 'std::bad_alloc'
what(): std::bad_alloc
Przerwane (core dumped)
''

GUI - kontrolki i dane

Proszę wszystkie grupy o zweryfikowanie czy to czego potrzebują znajduje się już na GUI. Jeśli wszystko jest, a to co jest odpowiada waszym potrzebom napiszcie:

[NAZWA_GRUPY][OK] jeśli jest inaczej napiszcie co dodać/ lub zmienić
do grup
HRT
Waves
oraz
QRS
prośbe i/lub ew. pytania na mejla

Należy zmienić funkcję run

Jest to spowodowane zmianą interfejsu, zgodnie z informacjami na forum.
powino być:
void runModule (const ECGSignal &, ECGInfo &, ECGSignal &) = 0;

Należy zmienić funkcję run

Jest to spowodowane zmianą interfejsu, zgodnie z informacjami na forum.
nowa funkcja
void runModule (const ECGSignal &, ECGInfo &, ECGRs &)

Wywołanie setParams dla modułów

obecnie po wciśnięciu przycisku uruchamiającego analizę nie widać, by były uruchamiane metody setParams dla modułów np. dla Baseline

Moduł Waves, losowe działanie.

Nie jestem pewien, co się dzieje, ale mam wrażenia, że moduł ECGWaves działa bardzo losowo, tzn.

  • w 49% wypadków większość wykrytych próbek to te same próbki, w których są załamki R;
  • w drugich 49%, kiedy iteruję po próbach, dostaję Segmentation Fault 11 - chętnie bym napisał coś więcej, ale debagowanie tego zajęłoby mi kupę czasu (w sumie już mi zajęło)
  • 2% - działa! Wektor interesująco wyglądających punktów.

Brak możliwośći wczytania sygnału!

Od początku nie jestem wstanie wczytać pliku z sygnałem do programu, po wybraniu pliku z gui niezależnie od typu pliku(atr, hea, dat) otrzymuje komunikat jak w załączonym pliku. VS zatrzymuje się w pliku ecgh.cpp na lini 54.

Nie tylko ja mam z tym problem wiec proszę o rozwiązanie tego.

Wczytywanie nie działa zarówno w gui jak i w testach.

Po debugu w Kontrolerze dokładnie w lini:

if (isigopen(const_cast<char*> (filename.c_str()), s, 2) < 2)

sygnał nie zostaje wczytany mimo ze jest podana scieżka.

error

Rozwinąc klasę ECGST::Interval

Dodać punkty R i ISO.

Zakres zwracany w metodzie ECGST::getIntervalBeginAndEnd(int i) powinien być zalezy tylko od R i być stały dla każdego zespołu QRS. Dobrze było by tez przepisać tę metodę do kalsy Interval.

Waves - Zadanie 4

My potrzebujemy dodać do GUI zaznaczanie na wykresie następujących parametrów:
QRS_onset
QRS_end
T_end
P_onset
P_end

Proponujemy, żeby każdy parametr był zaznaczony na wykresie innym kolorem i żeby była dodana do tego legenda.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.