Ztraceni Testování - NEUROINFORMATICS-GROUP-FAV-KIV-ZCU/guess_the_number GitHub Wiki
Protokol z testování části aplikace Hádání čísel
###Tým: Ztraceni
Autor: Michal Veverka, Jitka Fürbacherová
Verze: 1.0
###Obsah
2. Testování na umělých a reálných datech
##1. JUnit testy
Funkčnost navržených a implementovaných metod jsme se rozhodli ověřit pomocí JUnit testů. K vybraným metodám jsme vytvořili testy jak pro hraniční tak pro běžné hodnoty. Otestovali jsme také funkčnost všech getrů a setrů. Případné chyby jsme opravili, až jsme dostali 100% pozitivní výsledek:
###1.1. CorrelationArtifactDet
Obrázek 1. Výsledek JUnit testování třídy CorrelationArtifactDet
###1.2. GradientArtifactDet
Obrázek 2. Výsledek JUnit testování třídy GradientArtifactDet
###1.3. AmplitudeArtifactDet
Obrázek 3. Výsledek JUnit testování třídy AmplitudeArtifactDet
##2. Testování na umělých a reálných datech
Navržené a implementované metody pro odstraňování artefaktů byli kromě JUnit testů také testovány na umělých a reálných datech, aby se ověřila jejich funkčnost.
###2.1. CorrelationArtifactDet
Tato třída slouží k odstranění artefaktů z EEG signálu pomocí korelační metody. Korelovány jsou vždy dvě pole double hodnot. Výsledný korelační koeficient se porovnává s nastavenou maximální hodnotou, pokud je koeficient vyšší, obsahuje signál artefakt. Metoda hledá vztah, resp. podobnost mezi dvěma signály. K tomu používá vzorec pro Pearssonův korelační koeficient r:
Obrázek 4. Vzorec pro výpočet korelačního koeficientu
Tento koeficient r dosahuje hodnot od -1 do 1. Hodnoty -1 nabývá v případě, že oba signály anti-korelují, tzn. s růstem hodnot jednoho signálu klesají hodnoty druhého signálu stejnou rychlostí. Naopak hodnoty 1 nabývá koeficient v případě, kdy je růst hodnot obou signálů totožný.
####2.1.1. Testování na umělých datech Metoda byla testována na umělých datech z důvodu ověření základní funkčnosti. Cílem bylo ověření krajních hodnot korelačního koeficientu. Samotná metoda pro detekci artefaktů byla spuštěna nad dvěma totožnými poli:
double[] array1 = {0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0};
double[] array2 = {0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0};
Výsledný korelační koeficient byl roven 1, výsledek testu byl tedy správný. Poté byla metoda spuštěna nad těmito poli:
double[] array1 = {0.0,1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0};
double[] array2 = {0.0,-1.0,-2.0,-3.0,-4.0,-5.0,-6.0,-7.0,-8.0};
Výsledný korelační koeficient byl -1, test tedy opět prošel.
####2.1.2. Testování na reálných datech Algoritmus jsme testovali na reálných datech z důvodu ověření funkčnosti detekce artefaktů. Úspěšnost metody samozřejmě záleží na použitém vzoru artefaktu, který chceme odstranit. Testovali jsme detekci artefaktu mrknutí. Vytvořili jsme tedy vzor mrknutí v EEG signálu (obr. 1).
Obrázek 5. Vzor mrknutí v EEG signálu
Měřili jsme celkem dvakrát. Naměřili jsme subjekt, který měl za úkol mrknout pokaždé, když se na obrazovce objevila 2 a subjekt, který měl za úkol mrknout při čísle 6. V těchto naměřených datech jsme detekovali artefakty pomocí předem uvedeného vzoru mrknutí.
Obrázek 6. Tabulka k testování metody korelace
Jak můžeme z výsledků vidět, v prvním případě bylo detekováno 100% artefaktů, v tom druhém 80% artefaktů.
####2.1.3. Závěr Testování metody bylo úspěšné, metoda je správně implementována. Funkčnost na reálných datech byla dostatečná, obecně však záleží na použitém vzoru a maximálním povoleném korelačním koeficientu.
###2.2. GradientArtifactDet Třída slouží pro detekci artefaktů pomocí gradientní metody. V metodě dochází k průměrování všech hodnot dané epochy a následnému porovnávání těchto hodnot s výsledným průměrem. Pokud je tento rozdíl větší než předem nastavené hodnota, epocha obsahuje artefakt.
####2.2.1. Testování na umělých datech Metoda byla testována na následujícím poli:
double[] array = {0.0,0.0,0.0,0.0,10.0};
Maximální rozdíl v absolutní hodnotě byl nastaven na hodnotu 6. Metoda správně detekovala v tomto poli artefakt, testem tedy prošla úspěšně.
####2.2.2. Testování na reálných datech Metoda byla testována na stejných datech jako metoda korelace. Jako maximální možný rozdíl byla použita hodnota 100. Výsledky jsou následující:
Obrázek 7. Tabulka k testování gradientní metody
Metoda odstranila v obou případech 100% artefaktů.
####2.2.3. Závěr Metoda prošla testováním úspěšně. U reálných dat však opět záleží na nastavené maximálního rozdílu.
###2.3. AmplitudeArtifactDet Poslední námi implementovanou metodou pro detekci artefaktů je Amplitudová metoda, jak již název napovídá, jedná se o způsob hledání artefaktů pomocí nadměrné výchylky – amplitudy. Maximální přípustná výchylka je zadána v konstruktoru a poté se porovnává se všemi hodnotami dané epochy. Pokud nějaká hodnota překročí zadanou amplitudu, je považována za artefakt a je vyřazena.
####2.3.1. Testování na umělých datech Cílem testování této metody na umělých datech bylo ověření základní funkčnosti metody. Metoda byla testována na následujícím poli:
double[] array = {11.8,85.4,-20.6,-45.1,-61.0,36.8,2.7, 133.8,5.0};
Amplituda byla nastavena nejprve na hodnotu 60 a poté no hodnotu 100. V obou dvou případech byly všechny artefakty detekovány. Při druhém pokusu byl ovšem počet dat které byly jako artefakt detekovány zbytečně výrazně nižší. Zaznamenali jsme pouze jednu neopodstatněnou detekci, což může napovídat lepší funkci. Je ovšem možné, že podmíněné mrkání je výraznější než nepodmíněné.
####2.3.2. Testování na reálných datech Metoda byla opět testována na shodných datech jako metoda korelace a gradientní metoda. Maximální přípustnou výchylku jsme stanovili na hodnotu 60.
Obrázek 8. Tabulka k testování amplitudové metody
Metoda odstranila v obou případech opět 100% artefaktů. Z tabulky je ovšem patrné, že byly rovněž odstraněny i nějaká data bez artefaktů.
####2.3.3. Závěr Testování této metody prokázalo, že je naimplementovaná správně. Nicméně v porovnání s ostatními metodami je poněkud méně přínosná, neboť eliminuje i nějaká správná data. Tento nedostatek se dá částečně zredukovat vhodným nastavením maximální amplitudy.