Sei sulla pagina 1di 3

30/05/18 21.44 C:\Users\vince\Desktop\es1.

m 1 of 3

clear all, close all, clc

load fMRI_data

%size(signals)
%size(valid_vals)

figure, imagesc(valid_vols),colorbar

%OSS: è evidente densità di 0 che affligge il soggetto7: non è una buona


%acquisizione quella per il soggetto 7, c'è molto movimento

%%

figure,

subplot 311, stem(valid_vols(:,7)), title('good volumes')

subplot 312, imagesc(signals(:,:,7)), colormap gray, title('fMRI time series')

subplot 313, plot(signals(:,[246,266],7)), title('signal example')

%OSS: i plot in 312 sembrano essere costanti nel tempo (asse y) in realtà
%la variazione di colorazione è pseudo costante perchè al variare dei voxel
%(asse x) ho forti escursioni di intensità del segnale. Esegui il plot qui
%sotto per rendertene conto:

figure, plot(signals(:,[246,310],7)),title('signal example')

%la scala di grigi infatti enfatizza lo scostamento dalla media, valori


%neri scostamento alto in positivo, viceversa per valori bianchi

figure,

plot(zscore(signals(:,[246,266],7)))

corr(squeeze(signals(:,[246,266],7)))

%OSS: correlazione (la FC Functional Connectivity) tra i due segnali pari a 0.2654

figure,

plot(zscore(signals(find(valid_vols(:,7)==1),[246,266],7)))

corr(squeeze(signals(find(valid_vols(:,7)==1),[246,266],7)))

%OSS: sto togliendo la parte finale del segnale in pratica, quella affetta
%da errori dovuti al movimento. Osservo correlazione più altra rispetto
%a prima!!! Pari a 0.7761

%fisiologicamente questi due segnali dovrebbero essere molto coerenti ma


%gli artefatti da movimento fanno perdere coerenza nel tratto finale dei
%segnali, motivo per cui escludo dall'analisi quella porzione di segnale.
30/05/18 21.44 C:\Users\vince\Desktop\es1.m 2 of 3

[coeff,score,latent,tsq,explained] = pca([signals(:,:,7)]);

figure,plot(cumsum(explained))

hold on

[coeff,score,latent,tsq,explained] = pca([signals(find(valid_vols(:,7)==1),:,7)]);

plot(cumsum(explained))

legend('with noise', 'clean')

title('varianza spiegata')

xlabel('numero di componenti principali')

%% confronto visivo matrice di adiacenza con o senza artefatti

figure,

subplot(121),imagesc(corr(signals(find(valid_vols(:,7)==1),:,7))), colormap jet,


colorbar,

title('FC: solo volumi corretti (privi di rumore)')

subplot(122),imagesc(corr(signals(:,:,7))), colormap jet, colorbar

title('FC: tutti i volumi')

%% estendo il calcolo FC a tutti i soggetti (matrice 3D)

for i = 1:size(signals,3)
FC(:,:,i) = corr(signals(find(valid_vols(:,i)==1),:,i));
% figure,imagesc(FC(:,:,i)), colormap jet, colorbar
% title(['soggetto ' num2str(i)])
end

implay(FC)

%% introduciamo il concetto di significatività del calcolod i FC

[FC7,signif7] = corr(signals(find(valid_vols(:,7)==1),:,7));

figure,

subplot 121, imagesc(FC7,[-0.2,0.7]),colormap jet,colorbar

subplot 122, imagesc(signif7,[0 0.05]),colorbar

%% estendiamo Fc e significatività a tutti i soggetti


% nello stesso modulo soggetti diversi hanno significatività diverse
%non posso fare affidamento su tutti i dati allo stesso modo, dovrò rendere
%omogeneo il mio dataset sia a livello di rumore sia come variabilità dei
%soggetti
30/05/18 21.44 C:\Users\vince\Desktop\es1.m 3 of 3

for i=1:size(signals,3)
[x, signf(:,:,i)]=corr(signals(find(valid_vols(:,i)==1),:,i));
end
implay(signf)

%% clustering gerarchico

nets_hierarchy(FC(:,:,1),FC(:,:,1),0); %stesso soggetto

nets_hierarchy(FC(:,:,1),FC(:,:,7),0); %intrasoggetto

%% caratterizzazione a livello di nodo


%sogliatura

for k=1:size(signals,3)
for i=1:size(signals,2)
x=find(FC(i,:,k)>0.2);%esplorazione per riga
nodedegree(i,k)=length(x); %conto gli elementi maggiori della soglia
y=find(signf(i,:,k)>0.05/100);
strength(i,k)=length(y);
end
end

figure,imagesc(nodedegree),title('node degree sogliata a 0.2'),colorbar

figure,imagesc(squeeze(sum(FC))),title('node degree FC non sogliata'),colorbar

figure,imagesc(zscore(squeeze(sum(FC)))),title('node degree zscores'),colorbar

figure,imagesc(strength),title('strength 0.05/100'),colorbar

%% plot grafici in 3D

load surface_positions.mat

figure

plot3(SURF_VERTEX(:, 1), SURF_VERTEX(:, 2), SURF_VERTEX(:, 3), '-bl')

hold on

plot3(atlas_pos(:, 1), atlas_pos(:, 2),atlas_pos(:, 3),'.y','MarkerSize',30)

plot3(atlas_pos([246,266],1), atlas_pos([246,266],2),atlas_pos([246,266],3),'o-
r','MarkerSize',15,'LineWidth',8)