% Collection of calls to evaluate the correlations
load('/home/jph/Uni/masterarbeit/evaluation.mat')

figureSavePath='/home/jph/Uni/masterarbeit/text/thesis/pictures/results/';
% mySaveFigure(gcf,strcat(figureSavePath,'plot'))
%% inspect methods of recoding
input=correlations.EEG.pos.Default;
anova1(input,{'x','y','theta'})
anova1(input(:,1:2),{'x','y'})
anova1([input(:,1),input(:,3)],{'x','theta'})

%% compare methods of recording
% velocities
eegCorrKin=pickFromStruct(correlations.EEG.kin,1:3);
emgCorrKin=correlations.EMG.kin.Default;
LFCorrKin=pickFromStruct(correlations.LF.kin,1:3);
EEG=cell(3*size(eegCorrKin,1),1);
EEG(:)={'EEG'};
EMG=cell(3,1);
EMG(:)={'EMG'};
LF=cell(3*size(LFCorrKin,1),1);
LF(:)={'LF'};

anova1(cell2mat(cat(1,eegCorrKin,emgCorrKin,LFCorrKin)'),cat(1,EEG,EMG,LF))

ylabel('correlation recorded - predicted')
title('prediction of velocities for EEG, EMG and LF')
anova1(cell2mat(cat(1,eegCorrKin,emgCorrKin)'),cat(1,EEG,EMG))
anova1(cell2mat(cat(1,eegCorrKin,LFCorrKin)'),cat(1,EEG,LF))
anova1(cell2mat(cat(1,emgCorrKin,LFCorrKin)'),cat(1,EMG,LF))

% positions
eegCorrPos=pickFromStruct(correlations.EEG.pos,1:3);
emgCorrPos=correlations.EMG.pos.Default;
LFCorrPos=pickFromStruct(correlations.LF.pos,1:3);
EEG=cell(3*size(eegCorrPos,1),1);
EEG(:)={'EEG'};
EMG=cell(3,1);
EMG(:)={'EMG'};
LF=cell(3*size(LFCorrPos,1),1);
LF(:)={'LF'};

anova1(cell2mat(cat(1,eegCorrPos,emgCorrPos,LFCorrPos)'),cat(1,EEG,EMG,LF))
ylabel('correlation recorded - predicted')
title('prediction of positions for EEG, EMG and LF')
anova1(cell2mat(cat(1,eegCorrPos,emgCorrPos)'),cat(1,EEG,EMG))
anova1(cell2mat(cat(1,eegCorrPos,LFCorrPos)'),cat(1,EEG,LF))
anova1(cell2mat(cat(1,emgCorrPos,LFCorrPos)'),cat(1,EMG,LF))

%% compare direct and via
%kin
direct=correlations.EEG.kin.Default;
viaAutoenc=correlations.EEG.kin.ViaAutoenc;
viaPCA=correlations.EEG.kin.ViaPCA;
viaNNMF=correlations.EEG.kin.ViaNNMF;

anova1([direct(:),viaAutoenc(:),viaPCA(:),viaNNMF(:)],{'direct','Autoenc','PCA','NMF'})
ylabel('correlation recorded - predicted')
title('Compare velocity prediction direct and via')

anova1([viaAutoenc(:),viaPCA(:),viaNNMF(:)],{'Autoenc','PCA','NMF'})

%pos
direct=correlations.EEG.pos.Default;
viaAutoenc=correlations.EEG.pos.ViaAutoenc;
viaPCA=correlations.EEG.pos.ViaPCA;
viaNNMF=correlations.EEG.pos.ViaNNMF;

anova1([direct(:),viaAutoenc(:),viaPCA(:),viaNNMF(:)],{'direct','Autoenc','PCA','NMF'})
ylabel('correlation recorded - predicted')
title('Compare position prediction direct and via')

anova1([viaAutoenc(:),viaPCA(:),viaNNMF(:)],{'Autoenc','PCA','NMF'})

% EMG
direct=correlations.EEG.emg.Default;
viaAutoenc=correlations.EEG.emg.ViaAutoenc;

anova1([direct(:),viaAutoenc(:)],{'direct','Autoenc'})
ylabel('correlation recorded - predicted')
title('Compare EMG prediction direct and viaAutoenc')
mySaveFigure(gcf,'predictEMGfromEEG')

%% evaluate single combination
input=correlations.LF.Autoenc;
sizeY=2;
limits_y=[1,-1];

names=fieldnames(input);
noOfPlots=size(names,1);

for i=1:noOfPlots
    limits_y=[min(min(min(input.(sprintf('%s',names{i})))),limits_y(1)),...
        max(max(max(input.(sprintf('%s',names{i})))),limits_y(2))];
end
limits_y=[limits_y(1)-0.1*diff(limits_y),limits_y(2)+0.1*diff(limits_y)]

figure();

sizeX=ceil(noOfPlots/sizeY);
for i=1:noOfPlots
    subplot(sizeY,sizeX,i)
    boxplot(input.(sprintf('%s',names{i})))
    title(names{i})
    ylim(limits_y)
    if ceil(i/sizeX) > ceil((i-1)/sizeX)
        ylabel('correlation recorded - predicted')
    end
end

anova1(cat(2,input.Default(:),input.Offset1(:),input.Offset2(:)),[0,1,2])
ylabel('Offset')
anova1(cat(2,input.Default(:),input.Offset1(:),input.Pause1(:),input.Pause1Offset1(:)),{'0.5s Pause','0.5s Pause', '1s Pause', '1s Pause'})

%% EEG to EMG
EMGChannels={'AbdPolLo','Biceps','Triceps','FrontDelt','MidDelt','BackDelt'};

anova1(correlations.EEG.emg.Default,EMGChannels)

title('EMG from EEG')
mySaveFigure(gcf,strcat(figureSavePath,'EEGemg'))

%% compare EMG with synergies
anova1([correlations.EMG.pos.Default,correlations.Autoenc.pos.Default],{'EMG','EMG','EMG','Autoenc','Autoenc','Autoenc'})

title('Predict Positions from EMG or Synergies')
mySaveFigure(gcf,strcat(figureSavePath,'EMGautoencPos'))


anova1([correlations.EMG.kin.Default,correlations.Autoenc.kin.Default],{'EMG','EMG','EMG','Autoenc','Autoenc','Autoenc'})

title('Predict Velocities from EMG or Synergies')
mySaveFigure(gcf,strcat(figureSavePath,'EMGautoenc'))

% prediction from EEG
input=correlations.EEG;

emgPrediction=input.emg.Default;
autoencPrediction=input.Autoenc.Default;
pcaPrediction=input.PCA.Default;
nnmfPrediction=input.NNMF.Default;

EMG=cell(size(emgPrediction,2),1);
EMG(:)={'EMG'};
Autoenc=cell(size(autoencPrediction,2),1);
Autoenc(:)={'Autoenc'};
PCA=cell(size(pcaPrediction,2),1);
PCA(:)={'PCA'};
NNMF=cell(size(nnmfPrediction,2),1);
NNMF(:)={'NMF'};

anova1([emgPrediction,autoencPrediction,pcaPrediction,nnmfPrediction],cat(1,EMG,Autoenc,PCA,NNMF))

title('Predict Synergies or EMG from EEG')
ylabel('correlation')
mySaveFigure(gcf,strcat(figureSavePath,'predictEMGSyn'))


anova1([emgPrediction,autoencPrediction],cat(1,EMG,Autoenc))

title('Predict Autoencoder or EMG from EEG')
ylabel('correlation')
mySaveFigure(gcf,strcat(figureSavePath,'predictEMGAutoenc'))

%% compare predictions via different synergies
input=correlations.EEG.kin;

viaAutoenc=input.ViaAutoenc;
viaPCA=input.ViaPCA;
viaNNMF=input.ViaNNMF;


Autoenc=cell(size(viaAutoenc,2),1);
Autoenc(:)={'Autoenc'};
PCA=cell(size(viaPCA,2),1);
PCA(:)={'PCA'};
NNMF=cell(size(viaNNMF,2),1);
NNMF(:)={'NMF'};

anova1([viaAutoenc,viaPCA,viaNNMF],cat(1,Autoenc,PCA,NNMF))