6. ΣΥΜΠΕΡΑΣΜΑΤΑ
6.2 Συμπεράσματα για τα δεδομένα με ομιλία
Στατιστική ανάλυση σε δεδομένα fMRI: εφαρμογή και ανάλυση της μεθόδου ICA
ΠΙΝΑΚΑΣ ΟΡΟΛΟΓΙΑΣ
Ξενόγλωσση ορολογία Ελληνική ορολογία
action potential δυναμικό δράσης
artifacts ψευδείς/τεχνητές ενδείξεις
block design σχεδιασμός μπλοκ
Blood Oxygen
Level Dependent Εξαρτώμενη από το επίπεδο οξυγόνωσης του αίματος
contrast αντίθεση
coregistration από κοινού καταχώριση
correlation coefficient συντελεστής συσχέτισης
covariance συνδιασπορά
data driven analysis ανάλυση οδηγούμενη από τα δεδομένα
design matrix πίνακας σχεδιασμού
event related design
σχετικός με το γεγονός σχεδιασμός
flip angle γωνία εκτροπής
free induction decay φθορά ελεύθερης επαγωγής
full column rank στήλη πλήρης τάξης
functional Magnetic Resonance Imaging Λειτουργική Απεικόνιση Μαγνητικού Συντονισμού
General Linear Model Γενικό Γραμμικό Μοντέλο
grey matter φαιά ουσία
group analysis ανάλυση για πολλά άτομα
hemodynamic response αιμοδυναμική απόκριση
Hemodynamic Response Function Συνάρτηση Αιμοδυναμικής Απόκρισης Independent Components Analysis Ανάλυση Ανεξάρτητων Συνιστωσών
International Consortium of Brain Mapping Διεθνής Κοινοπραξία Χαρτογράφησης Εγκεφάλου
Least Squares Method Μέθοδος Ελάχιστων Τετραγώνων
longitudinal διαμήκης
Minimum Description Length Μήκος Ελάχιστης Περιγραφής
mixed design σύνθετος σχεδιασμός
Montreal Neurological Institute Νευρολογικό Ινστιτούτο του Μόντρεαλ
multivariate πολυμεταβλητός
normalization κανονικοποίηση
preprocess προεπεξεργασία
Principal Components Analysis Ανάλυση Κύριων Συνιστωσών radiofrequency pulse παλμός ραδιοσυχνότητας
Random Field Theory
Θεωρία Τυχαίων Πεδίων
realignment ευθυγράμμιση
residuals κατάλοιπα
Restricted Maximum Likelihood Περιορισμένη Μέγιστη Πιθανοφάνεια
sample δείγμα
scanner σαρωτής
session συνεδρία
smoothing εξομάλυνση
spatial χωρικός
spatial concatenation χωρική συνένωση
stimulus ερέθισμα
subject άτομο
temporal χρονικός
temporal concatenation χρονική συνένωση
univariate μονομεταβλητός
unmixing/separating matrix πίνακας διαχωρισμού
variance διακύμανση
voxel κυβίδιο
white matter λευκή ουσία
Στατιστική ανάλυση σε δεδομένα fMRI: εφαρμογή και ανάλυση της μεθόδου ICA
ΣΥΝΤΜΗΣΕΙΣ – ΑΡΚΤΙΚΟΛΕΞΑ – ΑΚΡΩΝΥΜΙΑ
ANCOVA Analysis Of Covariance ANOVA Analysis Of Variance FID Free Induction Decay
FWE Family
Wise Error
GIFT Group ICA of fMRI Toolbox GLM General Linear Model
HRF Hemodynamic Response Function ICA Independent Component Analysis
ICBM International Consortium of Brain Mapping MANCOVA Multivariate Analysis Of Covariance
MANOVA Multivariate Analysis Of Variance MDL Minimum Description Length
mm millimeter
MNI Montreal Neurological Institute
ms millisecond
PCA Principal Component Analysis ReML Restricted Maximum Likelihood
RF Radiofrequency
sec second
SPM Statistical Parametrical Mapping
Τ Tesla
ΠΑΡΑΡΤΗΜΑ
Ακολουθούν τα τμήματα κώδικα που υλοποιήθηκαν για την εφαρμογή των 2 μεθόδων ICA. Ο κώδικας είναι υλοποιημένος σε Matlab.
ICA APPLICATION- METHOD 1
% Initial parameters total_subjects = 6;
same_runs=[1 1 10 9 11 7];
total_runs=ones(6,1);
base_folder = '/path/to/the/base/folder';
frames = 121;
vol_size = [53 63 52];
voxels = vol_size(1) * vol_size(2) * vol_size(3);
% Number of componenets for PCA and ICA nPCs = 35;
nICs = 35;
% Seed selection rng(211);
indxs=[];
% ICA for every subject for subject=1:total_subjects
run = same_runs(subject);
fprintf('---%s---
\n',datestr(now));
fprintf('\tRuning for subject #%d, run #%d...\n', subject, run);
path = sprintf('%ssub%03d%sBOLD%stask001_run%03d%s',...
base_folder, subject, filesep, filesep, run, filesep');
cd(path);
input_file = sprintf('%sswbold.nii', path);
% Loading of the initial .nii file nii = load_untouch_nii('swbold.nii');
% Exporting 4d image Y = nii.img;
% Converting to 2D (frames x voxels) init_X = vxVectorize(YC);
% Creating the mask if subject == 1
volume_mean = mean(mean(init_X));
% Using the first scan to create the mask indxs = init_X(1,:) > volume_mean / 3;
end
% New number of voxels, after masking voxels=sum(indxs);
% Applying the mask
X=zeros(121, sum(indxs));
for i = 1:size(init_X, 1)
X(i, :) = init_X(i, indxs);
end
fprintf('\tCreated 2D matrix X[%d, %d].\n', size(X,1), size(X,2));
% Applying ICA
[icasig1, A1, W] = fastica(X, 'verbose', 'on', 'numOfIC', nICs, 'firstEig', 1, 'lastEig', nPCs);
% Saving results for each subject
Στατιστική ανάλυση σε δεδομένα fMRI: εφαρμογή και ανάλυση της μεθόδου ICA A(:, :, subject) = A1;
% Componenets
S(:, :, subject) = icasig1;
% Residuals
R(:,:,subject) = X-A(:,:,subject)*S(:,:,subject);
fprintf('---%s---
\n\n',datestr(now));
end
path = sprintf('%sgroup_ica%s', base_folder, filesep);
cd(path);
clear('A1', 'W', 'nii', 'Y', 'YC', 'X')
ICA APPLICATION - METHOD 2
% Initial parameters total_subjects = 6;
same_runs=[1 1 10 9 11 7];
total_runs=ones(6,1);
base_folder = '/path/to/the/base/folder';
frames = 121;
vol_size = [53 63 52];
% Number of componenets for every step of PCA and ICA nPCs = 50;
nICs = 35;
nPCs2 = 35;
GroupData = [];
newX = [];
Wm = [];
DWm = [];
% Seed selection rng('default');
rng(0781123581);
allMeans = zeros(121,total_subjects);
indxs=[];
X=[];
volume_mean=-1;
% 1st step of reduction per subject for subject=1:total_subjects
run = same_runs(subject);
fprintf('---%s---
\n',datestr(now));
fprintf('\tRuning for subject #%d, run #%d...\n', subject, run);
path = sprintf('%ssub%03d%sBOLD%stask001_run%03d%s',...
base_folder, subject, filesep, filesep, run, filesep');
cd(path);
input_file = sprintf('%sswbold.nii', path);
% Loading of the initial .nii file nii = load_untouch_nii('swbold.nii');
% Exporting 4d image Y = nii.img;
% Converting to 2D (frames x voxels)
init_X = vxVectorize(Y);
fprintf('\tCreated 2D matrix X[%d, %d].\n', size(init_X, 1), size(init_X, 2));
% Creating the mask if subject == 1
volume_mean = mean(mean(init_X));
% Using the first scan to create the mask indxs = init_X(1,:) > volume_mean / 3;
end
% New number of voxels, after masking voxels=sum(indxs);
% Applying the mask
X=zeros(121, sum(indxs));
for i = 1:size(init_X, 1)
X(i, :) = init_X(i, indxs);
end
% Saving the initial X, for the computation of the residuals normX=X;
allX(:,:,subject) = normX;
% Removing mean per row
[normX, allMeans(:,subject)] = remmean(X);
% Applying PCA
[E(:, :, subject), D(:, :, subject)] = pcamat(normX, 1, nPCs, 'off', 'on');
[newX(:, :, subject), Wm(:, :, subject), DWm(:, :, subject)] = whitenv(normX, E(:, :, subject), D(:, :, subject), 'on');
% Concatenating the reduced matrix to a new Group matrix GroupData = vertcat(GroupData, newX(:, :, subject));
end
path = sprintf('%sgroup_ica%s', base_folder, filesep);
cd(path);
fprintf('---%s---\n',datestr(now));
fprintf('Doing ICA in the concatenated matrix\n');
[S_group, Am, W] = fastica(GroupData, 'verbose', 'on', 'numOfIC', nICs, 'firstEig', 1, 'lastEig', nPCs2);
% Reconstructing the resulats after ICA per subject A = zeros(frames, nICs, total_subjects);
S = zeros(nICs, voxels, total_subjects);
R = zeros(frames,voxels,total_subjects);
for subject = 1:total_subjects % Normalizing W
tW = W(:, (1 + (subject - 1) * nPCs):(subject * nPCs));
for i = 1:size(tW, 1)
tW(i, :) = tW(i, :) / norm(tW(i, :));
end
W(:, (1 + (subject - 1) * nPCs):(subject * nPCs)) = tW;
% Reconstructing components
S(:, :, subject) = W(:, (1 + (subject - 1) * nPCs):(subject * nPCs)) * newX(:, :, subject)+ W(:, (1 + (subject - 1) * nPCs):(subject * nPCs))*Wm(:, :, subject)*allMeans(:,subject)*ones(1,voxels);
% Calculating the time courses
A(:, :, subject) =allX(:,:,subject) * pinv(S(:,:,subject));
% Calculating the residuals
R(:,:,subject) = allX(:,:,subject) - A(:,:,subject) * S(:,:,subject);
end
clear('X', 'Y', 'YC', 'nii', 'init_X', 'allX', 'normX', 'E', 'D', ...
Στατιστική ανάλυση σε δεδομένα fMRI: εφαρμογή και ανάλυση της μεθόδου ICA
fprintf('---%s---\n\n',datestr(now));
cd(base_folder);
COMPUTING RESULTS
% Initial Parameters total_subjects = 6;
same_runs = [1 1 10 9 11 7];
total_runs = ones(6,1);
base_folder = '/path/to/the/base/folder';
vol_size = [53 63 52];
path = sprintf('%sgroup_ica%s', base_folder, filesep);
cd(path);
% Loading the data from the ICA application
% load mask_indxs.mat
% load adali1_ica_decomp.mat
% Loading the ideal time course, as produced from the SPM load design_matrix.mat
IC_num = size(A,2);
% Calculate error variance for the standard error, needed for the T-statistic df = size(A,1)-size(A,2);
MRSS = zeros(size(S,2),total_subjects);
pinverA = zeros(size(A,2),size(A,2),total_subjects);
for subject = 1:total_subjects
MRSS(:,subject) = calc_err_var(R(:,:,subject),df);
pinverA(:,:,subject) = pinv(A(:,:,subject)'*A(:,:,subject));
end
n = zeros(size(A, 2), total_subjects);
allsorted=zeros(IC_num, 3, 6);
% For every subject normalizing the time course and the component for subject = 1:total_subjects
temp = zeros(size(S, 1), 2);
[a, ma] = remmean(A(:, :, subject)');
norA(:, :, subject) = a';
for t = 1:size(A, 2)
n(t, subject) = norm(A(:, t, subject));
A(:, t, subject) = A(:, t, subject) / n(t, subject);
S(t, :, subject) = S(t, :, subject) * n(t, subject);
norA(:, t, subject) = norA(:, t, subject) / std(norA(:, t, subject));
end end
% Computing and nomralizing the ideal time course stimulus = sum(des_mat(:, 1:3), 2);
[nst mst] = remmean(stimulus');
nst = nst'/std(nst');
normStim = nst;
contrast_average_best_fit = zeros(1, size(S, 2));
contrast_average_tmap_best_fit = zeros(1, size(S, 2));
X2nd = zeros(total_subjects,size(S,2));
% Starting the comparison for every subject
% Searching the best time course correlated componenets for subject = 1:total_subjects
% Computing correlations of estimated time courses and ideal cors = compare_correlations(norA(:, :, subject), stimulus);
sorted_cors = flipud(sortrows(cors, 1));
allsorted(:, :, subject) = sorted_cors;
% Selecting the best 3 (if the exists) TCs based on the p-value selected_cors = select_cors2(sorted_cors);
n_selected = size(selected_cors, 1);
best_fit = S(selected_cors(1, 2), :, subject);
% for every selected TC computing the tmap and saving for c = 1:n_selected
fit = S(selected_cors(c, 2), :, subject);
% Computing the tmap
cont = zeros(size(A, 2) ,1);
cont(selected_cors(c, 2)) = 1;
fit_tmap = convert_tstat(fit', pinverA(:, :, subject), cont', MRSS(:, subject))';
if c == 1
best_fit_tmap = fit_tmap;
end % Saving
path = sprintf('%sica1_results%ssub%03d', base_folder, filesep, subject);
name = sprintf('best_fit_ica1_sub%03d_comp%d.nii', subject, c);
volumize(fit, vol_size, base_folder, path, name, indxs);
name = sprintf('best_fit_tmap_ica1_sub%03d_comp%d.nii', subject, c);
volumize(fit_tmap, vol_size, base_folder, path, name, indxs);
end
% Adding the top component of each subject for the group results X2nd(subject,:) = best_fit;
contrast_average_best_fit = contrast_average_best_fit + best_fit/std(best_fit);
contrast_average_tmap_best_fit = contrast_average_tmap_best_fit + best_fit_tmap/sqrt(total_subjects);
% Printing the best time courses selected_cors
figure
plot(normStim,'-b','LineWidth',1) hold on
legends = ['1-None '; '2-None '; '3-None '];
line = ['--g'; ':r '; '--k'];
for i=1:3
if i>size(selected_cors,1) continue
end
legends(i,:) = sprintf('%d -p-val = %1.4f', i, selected_cors(i,3));
plot(norA(:,selected_cors(i,2),subject),line(i,:),'LineWidth',1) hold on
end
legend('Ideal',legends(1,:),legends(2,:),legends(3,:));
end
% Computing the group results
Στατιστική ανάλυση σε δεδομένα fMRI: εφαρμογή και ανάλυση της μεθόδου ICA
% Calculate t-map
xx = zeros(total_subjects,1)+1;
pinvX = pinv(xx'*xx);
Res = X2nd-xx*contrast_average_best_fit;
df = total_subjects-1;
mrss = calc_err_var(Res,df);
contrast_average_best_fit_tmap =
convert_tstat(contrast_average_best_fit',pinvX,[1],mrss)';
% Saving the group results
path = sprintf('%sica1_results%sgroup_average', base_folder, filesep);
name = sprintf('average_best_fit_ica1.nii');
volumize(contrast_average_best_fit, vol_size, base_folder, path, name, indxs);
name = sprintf('average_best_fit_tmap_ica1.nii');
volumize(contrast_average_tmap_best_fit, vol_size, base_folder, path, name, indxs);
cd(base_folder);