clc;
clear all;
addpath('./globals','./utils','./GFFSM','./FS','./transforms','./distances');


global micv;
micv=CV;
micv.sampling_frequency=16; %in Hz
micv.window_size=32;   %in number of samples
micv.window_shift=32/2; %in number of samples;

states = { 'EPILEPSY', 'RUNNING', 'SAWING','WALKING'};
ntimes = [15 14 10 13;...
    10 19 10 18;...
    10 10 9 12;...
    10 11 10 10;...
    13 10 11 11;...
    10 10 10 10];
% id = 'ID00';
% sp = '_';
% dts_file='./datasets/';
% 
% for i=1:6
%     for st=1:length(states)
%         for nf=1:ntimes(i,st)
%             nm=[dts_file id int2str(i) sp states{st} sp int2str(nf) '_features.csv'];
%             micv=micv.add_a_dataset(i,nm,0,mod(st,4));
%         end
%     end
% end

% Relative bins transform 
load('RelBins_distances.mat', 'tbp'); 

% Euclide distance mean + STS distance mean (4x4 subplots)
% for i=1:6
%     figure;
%     nboxplot = 1;
%     for x=1:ntimes(i,1)
%         datoseu = [];
%         datossts = [];       
%         for y=1:sum(ntimes(i,:))          
%           datoseu = [datoseu tbp{i}{x, y}{1}];
%           datossts = [datossts tbp{i}{x, y}{4}];
%         end
%         subplot(ceil(ntimes(i,1)/4), 4, nboxplot);
%         plot(1:size(datoseu,2), datoseu, 1:size(datossts,2),  datossts);
%         nboxplot = nboxplot + 1;
%     end
% end


% boxplots of the mean-desv, mean+desv for Euclid distance.
% for i=1:6
%     figure;
%     nboxplot = 1;
%     for x=1:ntimes(i,1)
%         datoseu = [];
%         datossts = [];
%         for y=1:sum(ntimes(i,:))
%           
%           % Media-desv, Media+desv
%           datoseu = [datoseu; [tbp{i}{x, y}{1}-tbp{i}{x, y}{2} tbp{i}{x, y}{1}+tbp{i}{x, y}{2}]]; 
%           datossts = [datossts; [tbp{i}{x, y}{4}-tbp{i}{x, y}{5} tbp{i}{x, y}{4}+tbp{i}{x, y}{5}]]; 
%         end
%         subplot(ceil(ntimes(i,1))/3, 3, nboxplot);
%         boxplot(datoseu');
%         nboxplot = nboxplot + 1;
%     end
% end

% boxplots of distances for each comparison epilepsy-rest of the datasets
for i=1:6
    figure;
    nboxplot = 1;
    for x=1:ntimes(i,1)
        datoseu = [];
        datossts = [];
        for y=1:sum(ntimes(i,:))
          
          datoseu = [datoseu, tbp{i}{x, y}{6}(1:300,:)];
          datossts = [datossts, tbp{i}{x, y}{6}(1:300,:)];

        end
        subplot(ceil(ntimes(i,1))/3, 3, nboxplot);
        boxplot(datoseu);
        nboxplot = nboxplot + 1;
    end
end


% En este gráfico comparamos los resultados de distancia (media-+desv) por
% tipo de actividad.
% for i=1:6
%     figure;
%     nboxplot = 1;
%     for x=1:ntimes(i,1)
%         previousindex = 1;
%         for y=1:size(states)
%           subplot(ntimes(i,1),sum(ntimes(i, :)),nboxplot);
%           means = filterCell(tbp, i, x, previousindex, ntimes(i, y), 1);
%           desvs = filterCell(tbp, i, x, previousindex, ntimes(i, y), 2);
%           boxplot([means-desvs means+desvs]);
%           previousindex = ntimes(i, y)+1;
%           nboxplot = nboxplot + 1;
%         end
%     end
% end

% Boxplot para la media+-desv de la distancia STS. (6 subplots) y en
% cada uno 52 boxplots

% Boxplot para la rista de comparaciones de cada ventana con el resto de
% ventanas usando distancia euclidea. (6 subplots) y en
% cada uno 52 boxplots

% for i=1:1
%     %figure;
%     nboxplot = 1;
%     %for x=1:ntimes(i,1)
%     for x=1:1
%         for y=sum(ntimes(i,:))
%           %subplot(ntimes(i,1), sum(ntimes(i,:)), nboxplot);
%           % Media-desv, Media+desv
%           figure;
%           boxplot(tbp{i}{x, y}{3});
%           nboxplot = nboxplot + 1;
%         end
%     end
% end

% Boxplot para la rista de comparaciones de cada ventana con el resto de
% ventanas usando distancia STS. (6 subplots) y en
% cada uno 52 boxplots

% Absolute bins transform 
%load('AbsBins_distances.mat', 'tbp'); 







%%Explicacion de tbp
%Es una celda de NInd x 1
%En cada tbp{i} hay una matriz de n_de_archivos_de_epilepsia_indv_i x 
%                                 numero_total_de_archivos celdas
%En cada tbp{i}{e,f} hay una celda de 6 valores, con e el indice de un 
%                    archivo de epilepsia y f un indice valido entre 
%                    numero total de archivos:
%   tbp{i}{e,f}{1:3}: resultados para Eu, media, desviacion, vector columna 
%                     con todas las distancias para cada par de ventanas
%   tbp{i}{e,f}{4:6}: resultados para STS, media, desviacion, vector columna 
%                     con todas las distancias para cada par de ventanas


% % % % 
% % % % 
% % % % %Stadisticos de las distancias de bins relativa
% % % % %Se trata de una celda de 6 individuos x Celda (datasets de Epilepsia x
% % % % %total de datasets). 
% % % % % En cada posici?n va un array con 4 valores :
% % % % % (media, desv) Dista Euclidea, Distancia STS
% % % % save('RelativeBins_stat.mat', tbp_binrel);
% % % % %Stadisticos de las distancias de bins absoluta
% % % % %Se trata de una celda de 6 individuos x Celda (datasets de Epilepsia x
% % % % %total de datasets ).
% % % % % En cada posici?n va un array con 4 valores :
% % % % % (media, desv) Dista Euclidea, Distancia STS
% % % % save('AbsoluteBins_stat.mat', tbp_binabs);
% % % % %Todas las distancias de todas las ventanas usando las distancias de bins relativa
% % % % %Se trata de una celda de 6 individuos x Celda (datasets de Epilepsia x
% % % % %total de datasets.
% % % % % En cada posici?n van un array de 2 columnas con todas las distancias Euclidea/STS calculadas 
% % % % save('RelativeBins_alldist.mat', tbp_binrel_alldist);
% % % % %Todas las distancias de todas las ventanas usando las distancias de bins
% % % % %absoluta.
% % % % %Se trata de una celda de 6 individuos x Celda (datasets de Epilepsia x
% % % % %total de datasets.
% % % % % En cada posici?n van un array de 2 columnas con todas las distancias Euclidea/STS calculadas 
% % % % save('AbsoluteBins_alldist.mat', tbp_binabs_alldist);
% % % % 
% % % % % ind1=tbp{1}(1,:);
% % % % % [ind1(1:15);ind1(16:29) 0;ind1(30:39) 0 0 0 0 0; ind1(40:end) 0 0];
% % % % % t=[ind1(1:15);ind1(16:29) 0;ind1(30:39) 0 0 0 0 0; ind1(40:end) 0 0];
% % % % % mean(t,2);
% % % % % tbp{1};
% % % % % ind2=tbp{2}(1,:);
% % % % % t1=t;
% % % % % t2=[ind1(1:15);ind1(16:29) 0;ind1(30:39) 0 0 0 0 0; ind1(40:end) 0 0];
% % % % % %t2=[ind2(1:10) zeros(1,9); ind2(11:30); ind2(31:40) zeros(1,9); ind2(41:end) 0];
% % % % % %t2=[ind2(1:10) zeros(1,9); ind2(11:29); ind2(31:40) zeros(1,9); ind2(41:end) 0];
% % % % % t2=[ind2(1:10) zeros(1,9); ind2(11:29); ind2(30:39) zeros(1,9); ind2(40:end) 0];
% % % % % t1
% % % % % t2
% % % % % ind3=tbp{3}(1,:)
% % % % % %t3=[ind3(1:10) zeros(1,2); ind2(11:20) zeros(1,2); ind2(21:29) zeros(1,3); ind2(30:end)]
% % % % % t3=[ind3(1:10) zeros(1,2); ind3(11:20) zeros(1,2); ind3(21:29) zeros(1,3); ind3(30:end)]
% % % % % ind4=tbp{4}(1,:);
% % % % % t4=[ind4(1:10) zeros(1,1); ind4(11:21) zeros(1,0); ind3(22:31) zeros(1,1); ind3(32:end) 0]
% % % % % ind5=tbp{5}(1,:);
% % % % % %t5=[ind5(1:13) zeros(1,0); ind5(14:23) zeros(1,2); ind5(24:33) zeros(1,3); ind5(34:end) zeros(1,3)]
% % % % % %t5=[ind5(1:13) zeros(1,0); ind5(14:23) zeros(1,2); ind5(24:34) zeros(1,2); ind5(35:end) zeros(1,2)]
% % % % % t5=[ind5(1:13) zeros(1,0); ind5(14:23) zeros(1,3); ind5(24:34) zeros(1,2); ind5(35:end) zeros(1,2)]
% % % % % ind6=tbp{6}(1,:);
% % % % % t6=[ind6(1:10); ind6(11:20); ind6(21:30); ind6(31:end)]
% % % % % ind=1
% % % % % figure;
% % % % % for i=1:15, subplot(5,3,i),plot(micv.DATA_SOURCE{ind}{i}{1}(100:300)), xlim([100:300]), end
% % % % % ct=cumsum(ntimes,1)
% % % % % ct=cumsum(ntimes,2)
% % % % % figure;
% % % % % %%%for i=30:39, subplot(5,3,i-29),plot(micv.DATA_SOURCE{ind}{i-29}{1}(100:300)), end
% % % % % for i=30:39, subplot(5,3,i-29),plot(micv.DATA_SOURCE{ind}{i}{1}(100:300)), end
% % % % % figure;
% % % % % for i=16:29, subplot(5,3,i-15),plot(micv.DATA_SOURCE{ind}{i}{1}(25:225)), end

