%% TESTOVACÍ SKRIPT
% Skript slouží ke zjištění senzitivity, specificity a prediktivní hodnoty
% vytvořených algoritmů
%% načítání použitých signálů
clear
load('infarkt.mat') % načtení čísel signálů, kde je diagnostikován infarkt myokardu
load('zdravy.mat') % načtení čísel signálů, které jsou od zdravých pacientů
% vynechané signály
vynechane=[72, 73, 74, 91, 98, 99, 100, 118, 128, 130, 149, 164, 166, 181, 183,...
    192, 194, 196, 208, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233,...
    242, 243, 278, 284, 291, 297, 298, 299, 300, 313, 315, 352, 362, 363, 402,...
    405, 421, 439, 533, 545, 547, 55:60, 89, 90, 92, 138, 139, 169, 170, 171,...
    172, 206, 207, 266, 267, 400, 401, 403, 404, 406, 380, 381, 382];
signaly=sort([infarction healthy]);
signaly=setdiff(signaly,vynechane); % odstranění vynechaných signálů

%% zjištění správných a špatných detekcí
cislo = 0;
for x = signaly % cyklus pro testování všech rozměřených signálů 
    cislo=cislo+1;
    [pom1,pom2,diagnoza] = detekce_ischemie_testovaci_verze(x); % spuštění detektoru
    % pom1 je buď 1 zda je metodou detekce u 12 svodů detekována ischemie
    % nebo 0 pokud není detekována ischemie
    
    % pom2 je buď 1 zda je metodou detekce u 12 svodů detekována ischemie
    % nebo 0 pokud není detekována ischemie
    
    % vyhodnocení 12-ti svodové EKG
    if strcmp(diagnoza,'Myocardial infarction') == 1 && pom1 == 1;
        tabulka{cislo,1}='TP';
    elseif strcmp(diagnoza,'Healthy control') == 1 && pom1 == 0;
        tabulka{cislo,1}='TN';
    elseif strcmp(diagnoza,'Myocardial infarction') == 1 && pom1 == 0;
        tabulka{cislo,1}='FN';
    elseif strcmp(diagnoza,'Healthy control') == 1 && pom1 == 1;
        tabulka{cislo,1}='FP';
    end
    
    % vyhodnocení specifických svodů
    if strcmp(diagnoza,'Myocardial infarction') == 1 && pom2 == 1;
        tabulka{cislo,2}='TP';
    elseif strcmp(diagnoza,'Healthy control') == 1 && pom2 == 0;
        tabulka{cislo,2}='TN';
    elseif strcmp(diagnoza,'Myocardial infarction') == 1 && pom2 == 0;
        tabulka{cislo,2}='FN';
    elseif strcmp(diagnoza,'Healthy control') == 1 && pom2 == 1;
        tabulka{cislo,2}='FP';
    end
end

%% konkrétní počty falešně a správně pozitivních či negativních detekcí u 12ti svodové metody 
TN1=length(tabulka(strcmp(tabulka(:,1),'TN')==1));
TP1=length(tabulka(strcmp(tabulka(:,1),'TP')==1));
FN1=length(tabulka(strcmp(tabulka(:,1),'FN')==1));
FP1=length(tabulka(strcmp(tabulka(:,1),'FP')==1));

senzitivita1=(TP1/(TP1+FN1))*100; % výpočet senzitivity 
specificita1=(TN1/(TN1+FP1))*100; % výpočet specificity 
PPH1=(TP1/(TP1+FP1))*100; % výpočet pozitivní prediktivity 

%% konkrétní počty falešně a správně pozitivních či negativních detekcí u specifických svodů
TN2=length(tabulka(strcmp(tabulka(:,2),'TN')==1));
TP2=length(tabulka(strcmp(tabulka(:,2),'TP')==1));
FN2=length(tabulka(strcmp(tabulka(:,2),'FN')==1));
FP2=length(tabulka(strcmp(tabulka(:,2),'FP')==1));

senzitivita2=(TP2/(TP2+FN2))*100; % výpočet senzitivity 
specificita2=(TN2/(TN2+FP2))*100; % výpočet specificity 
PPH2=(TP2/(TP2+FP2))*100; % výpočet pozitivní prediktivity
toc
%% výpis výsledků
disp(['Detekce ischemie pomocí 12ti svodového EKG; Se:' num2str(senzitivita1) '%/ Sp:' num2str(specificita1) '%/ P+:' num2str(PPH1) '%'])
disp(['Detekce ischemie pomocí specifických svodů; Se:' num2str(senzitivita2) '%/ Sp:' num2str(specificita2) '%/ P+:' num2str(PPH2) '%'])