Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2. Concetti fondamentali
Esistono diversi programmi per effettuare l’analisi dei dati fMRI; di seguito si fa riferimento
ad “AFNI” (Analyses of Functional Neuroimages, Cox RW, Bethesda, MD,
http://afni.nimh.nih.gov/afni).
Con AFNI le immagini del cervello possono essere mostrate secondo le viste: assiali, sagittali,
coronali. Le mappe di attivazione sono visualizzate a colori, sovrapposte alle immagini anatomiche
di localizzazione ad alta risoluzione spaziale in scala di grigi.
La struttura dati fondamentale è il dataset, un insieme di array 3D di valori numerici. Ciascun
array 3D è chiamato sub-brick e rappresenta un volume cerebrale ricostruito da un insieme di
immagini tomografiche 2D acquisite con lo scanner MRI in un singolo TR. Ogni elemento di un
array 3D rappresenta un voxel del volume cerebrale, con le sue coordinate di posizione (x,y,z); il
valore numerico di un elemento dell’array rappresenta l’intensità del segnale MRI associato al
voxel corrispondente. Ogni TR viene acquisito un intero volume cerebrale: un dataset è costituito
dall’insieme di tutti i volumi cerebrali funzionali, cioè di tutti i sub-bricks acquisiti in successione
temporale in un intero run di scansione e per questo è indicato con 3D+time dataset. Ci sono anche
datasets che si riferiscono ad immagini anatomiche di localizzazione: sono formati da un unico
volume cerebrale, cioè da un unico sub-brick e per questo sono indicati con 3D datasets. Esistono
infine datasets che contengono le statistiche calcolate elaborando i 3D+time datasets funzionali:
sono formati da vari sub-bricks, mostrano le attivazioni cerebrali e sono indicati con 4D datasets.
I valori di uno stesso voxel in tutti i volumi cerebrali costituiscono una serie temporale (time
series). Oltre ai valori dei singoli voxel in tutti i sub-bricks, un dataset contiene anche informazioni
ausiliarie come le dimensioni (in mm) dei voxel stessi, l’orientazione e la posizione del dataset
rispetto alle coordinate dello scanner, la data e l’ora di creazione del dataset, il TR, ecc. Per questo
un dataset è memorizzato in due files con diversa estensione: un file .HEAD che contiene tutte le
informazioni ausiliarie ed un file .BRIK che contiene i valori numerici di tutti i voxel di tutti i sub-
bricks. Per quanto riguarda i tre assi di riferimento (x,y,z) di un dataset, per convenzione:
1) l’asse x identifica la direzione R-L (R = right, L = left), perciò un valore di x identifica
una fetta sagittale del cervello;
2) l’asse y identifica la direzione A-P (A = anterior, P = posterior), perciò un valore di y
identifica una fetta coronale del cervello;
3) l’asse z identifica la direzione I-S (I = inferior, S = superior), perciò un valore di z
identifica una fetta assiale del cervello.
lorenzo.sani@bioclinica.unipi.it 1
Un dataset può essere riferito a tre diversi sistemi di coordinate tridimensionali (detti anche
“viste”):
1) le coordinate originali: (x,y,z) delle immagini 2D acquisite dallo scanner MRI; i datasets
riferiti a queste coordinate sono indicati con il suffisso: +orig;
2) le coordinate AC-PC: il dataset è ruotato in modo tale che la commissura anteriore (AC)
e quella posteriore (PC) risultino allineate su una retta orizzontale; i datasets riferiti a
queste coordinate sono indicati con il suffisso: +acpc;
3) le coordinate di Talairach: il dataset è compresso o dilatato in modo tale che le sue 12
sottoregioni siano conformi all’Atlante Cerebrale di Talairach-Tournoux; i datasets
riferiti a queste coordinate sono indicati con il suffisso: +tlrc.
I nomi dei files dei datasets sono formati da tre parti:
1) il nome scelto dall’utente per mezzo dell’opzione –prefix;
2) il tipo di coordinate di riferimento: +orig, +acpc, oppure +tlrc;
3) l’estensione: .HEAD oppure .BRIK.
lorenzo.sani@bioclinica.unipi.it 2
con il suffisso 'Hz'. Se si pone TR = 0, il valore di questo parametro viene letto
direttamente dagli header files delle immagini 2D acquisite dallo scanner;
Per esempio la parte della linea di comando del programma “to3d” che contiene le
informazioni sulla temporizzazione della scansione può essere la seguente:
-time:tz 110 27 2500
In questo caso in un intero run di scansione vengono acquisiti nt = 110 volumi cerebrali ed il
tempo di scansione di un run vale TR•nt = 2.5•110 = 275 secondi = 4 minuti e 35 secondi. In ogni
TR vengono acquisite nz = 27 fette 2D corrispondenti ad un volume cerebrale; l’inter-slice time
vale:
TR 2500
dt 92.6 m sec
nz 27
In un run di scansione vengono acquisite nella direzione +z, complessivamente nz•nt =
27•110 = 2970 fette 2D.
Nella linea di comando bisogna includere anche le informazioni sulle specifiche geometriche
dell’acquisizione. Esse specificano l’estensione e l’orientazione dei tre assi di riferimento (x,y,z)
della sequenza tomografica di acquisizione; tutte le dimensioni sono espresse in mm. Ricordiamo la
convenzione:
1) l’asse x identifica la direzione R-L (R = right, L = left), perciò un valore di x identifica
una fetta sagittale del cervello;
2) l’asse y identifica la direzione A-P (A = anterior, P = posterior), perciò un valore di y
identifica una fetta coronale del cervello;
3) l’asse z identifica la direzione I-S (I = inferior, S = superior), perciò un valore di z
identifica una fetta assiale del cervello.
L’opzione -save_outliers fname dice al programma “to3d” di salvare il resoconto
degli outliers in un file con estensione: .1D e nome: 'fname' assegnato dall’utente. Si può poi
rappresentare graficamente questo file per mezzo del comando: 1dplot fname. Quando si usa
questa opzione, il resoconto degli outliers viene salvato comunque, anche se non appare niente di
“sospetto”.
In generale gli outliers o spikes sono valori assunti da un voxel in particolari istanti di una
serie temporale, che sono molto diversi dagli altri valori di quel voxel in tale serie temporale. E’
importante controllare graficamente gli outliers di una serie temporale per vedere se ci sono stati
problemi durante l’acquisizione (per esempio movimenti della testa del soggetto o artefatti dello
scanner).
Nella Figura 1 è rappresentato graficamente l’andamento di una serie temporale di un voxel
che in un particolare istante (indicato con la freccia rossa) assume un valore, che è un potenziale
outlier.
lorenzo.sani@bioclinica.unipi.it 3
Figura 1 Rappresentazione grafica dell’andamento di una serie temporale di un voxel che in un particolare istante
(indicato con la freccia rossa) assume un valore, che è un potenziale outlier.
Dall’andamento grafico della serie temporale di Figura 1 si nota che nei primi istanti della
serie, il voxel considerato assume valori molto alti, cioè è affetto da molto rumore: questo è dovuto
a possibili artefatti dello scanner (causati per esempio dal fatto che il campo magnetico generato
all’interno dello scanner dalle bobine di eccitazione a radiofrequenza non ha ancora raggiunto lo
stato stazionario). Se rimuoviamo per esempio i primi tre istanti dalla serie temporale, il potenziale
outlier indicato nella Figura 1 diventa molto più evidente, come è mostrato nella Figura 2.
Figura 2 Rappresentazione grafica dell’andamento della stessa serie temporale di Figura 1, dalla quale sono stati
rimossi i primi tre istanti: come si vede chiaramente, ora il potenziale outlier indicato nella Figura 1 è
diventato molto più evidente.
lorenzo.sani@bioclinica.unipi.it 4
registrazione dei volumi cerebrali permette di confrontare voxel per voxel i dati relativi a diversi
runs di scansione (allineamento inter-session); inoltre, all’interno dello stesso run, dopo la
registrazione (allineamento intra-session) i dati funzionali delle serie temporali sono meno affetti
dagli artefatti dovuti al movimento della testa del soggetto.
Sia J(x) il volume cerebrale scelto come “base”, rispetto al quale si vuole allineare un altro
volume cerebrale “target” I(x). Dati J(x) e I(x), bisogna determinare una trasformazione geometrica
T(x) tale da minimizzare la differenza:
TIx Jx E
cioè tale che risulti: TIx Jx ; E è l’errore di disallineamento tra TIx e Jx . In pratica
ciascun volume cerebrale “target” I(x) è ruotato e/o traslato dalla trasformazione geometrica T(x) in
modo da trovarsi sovrapposto meglio possibile al volume cerebrale “base” J(x). T(x) contiene 6
parametri: bisogna determinare i valori di tali parametri in modo che TIx sia allineato meglio
possibile a Jx .
Per registrare un’intera serie temporale di volumi cerebrali, ciascun volume cerebrale In x ,
con n=1, 2, …1, deve essere allineato al volume “base” Jx per mezzo della sua propria
trasformazione geometrica Tn x . Il risultato è una serie temporale di volumi cerebrali Tn In x ,
con n=1, 2, …, tutti allineati a Jx . Si ricorda che è l’utente che deve scegliere il volume cerebrale
“base”: J(x).
Le principali caratteristiche dell’algoritmo di registrazione utilizzato dal programma
“3dvolreg” sono: il modo in cui viene misurato l’errore E; il modo in cui vengono determinati i
valori dei 6 parametri di T(x) per minimizzare E; il modo in cui il volume cerebrale TIx viene
interpolato alla “griglia” di Jx , in modo da poter confrontare direttamente le intensità dei voxel
corrispondenti dei due volumi cerebrali. Il programma “3dvolreg” di AFNI effettua questo
confronto utilizzando come intensità dei voxel dei due volumi cerebrali, i valori dei livelli di grigio.
I valori dei 6 parametri di T(x) vengono ricavati con un algoritmo ad approssimazioni successive,
precisamente con l’algoritmo di “discesa del gradiente”, per il quale sono disponibili vari metodi di
interpolazione, tra i quali quello usato di default è il metodo di Fourier, ma si possono utilizzare
anche metodi di interpolazione polinomiale di diverso ordine.
L’errore E viene calcolato come somma pesata delle differenze al quadrato, in accordo alla
seguente formula:
E x w x TIx Jx
2
dove w(x) è il peso del voxel “x”. La sommatoria è estesa a tutti i voxel “x” del volume cerebrale:
TIx Jx . Infatti, poiché I(x) è un volume cerebrale, allora “x” è un vettore di tre elementi, le
cui componenti sono le coordinate spaziali (x,y,z) dei vari voxel di I(x); il valore assunto da I(x) per
un certo “x” è l’intensità del voxel individuato da “x”; E è uno scalare.
Il programma “3dvolreg” è in grado di registrare tra loro volumi cerebrali di datasets
funzionali (EPI), oppure di registrare tra loro volumi cerebrali di datasets anatomici (SPGR), ma
non può registrare tra loro volumi cerebrali di datasets funzionali (EPI) con volumi cerebrali di
datasets anatomici (SPGR).
I 6 parametri di T(x) comprendono 3 parametri di traslazione, lungo ciascuno dei tre assi di
riferimento: (x, y, z) e 3 parametri di rotazione, attorno a ciascuno dei tre assi di riferimento. Sono
chiamati parametri di movimento e servono per allineare ciascun volume cerebrale (sub-brick) da
registrare In x rispetto al volume “base” J(x); in generale sono utili sia nel caso di allineamento
inter-session che nel caso di allineamento intra-session. Nel caso di allineamento intra-session, gli
artefatti dovuti a movimenti della testa del soggetto che avvengono all’interno di un singolo TR non
possono essere corretti dal programma “3dvolreg”.
1
Ciascun valore di n rappresenta un istante della serie temporale considerata.
lorenzo.sani@bioclinica.unipi.it 5
L’opzione -dfile dname dice al programma “3dvolreg” di salvare i parametri di
movimento in un file con estensione: .1D e nome: 'dname' assegnato dall’utente. Questo file è
formato da 9 colonne, ciascuna delle quali contiene tanti caratteri ASCII quanti sono i volumi
cerebrali da registrare rispetto al volume “base” J(x), cioè in pratica quanti sono gli istanti delle
serie temporali del 3D+time dataset d’ingresso. Ognuno di questi caratteri rappresenta il valore del
parametro relativo alla colonna in esame e corrispondente al particolare volume cerebrale (sub-
brick) considerato all’interno della serie temporale del 3D+time dataset d’ingresso. Vediamo in
dettaglio quali sono i parametri associati alle 9 colonne del file 'dname':
1) n = indice del sub-brick all’interno della serie temporale (vedi la nota n. 1);
2) roll = parametro di rotazione attorno all’asse z che per convenzione identifica la
direzione I-S (I = inferior, S = superior); si misura in gradi, contati positivamente in
senso antiorario;
3) pitch = parametro di rotazione attorno all’asse x che per convenzione identifica la
direzione R-L (R = right, L = left); si misura in gradi, contati positivamente in senso
antiorario;
4) yaw = parametro di rotazione attorno all’asse y che per convenzione identifica la
direzione A-P (A = anterior, P = posterior); si misura in gradi, contati positivamente in
senso antiorario;
5) dS = parametro di traslazione lungo l’asse z (S = superior); si misura in mm;
6) dL = parametro di traslazione lungo l’asse x (L = left); si misura in mm;
7) dP = parametro di traslazione lungo l’asse y (P = posterior); si misura in mm;
8) rmsold = differenza RMS (root mean square) tra il sub-brick da allineare In x ed il sub-
brick “base” J(x);
9) rmsnew = differenza RMS (root mean square) tra il sub-brick allineato Tn In x ed il
sub-brick “base” J(x).
Come si vede, i 6 parametri di movimento sono contenuti nelle colonne: 2,…,7 del file
'dname'. E’ utile rappresentare graficamente i 6 parametri di movimento in funzione degli istanti
delle serie temporali del 3D+time dataset d’ingresso; si utilizza per questo il comando:
1dplot 'dname[1..6]'
perché i 9 parametri associati alle 9 colonne del file 'dname' corrispondono agli indici: 0,…,8. In
Figura 3 è mostrata la finestra prodotta dal precedente comando, contenente gli andamenti
temporali dei 6 parametri di movimento del dataset considerato. Dai 6 grafici della Figura si notano
dei picchi di movimento in corrispondenza dell’istante: t 160 sec, dovuti al fatto che in quel
momento il soggetto ha mosso improvvisamente la testa facendo uno “scatto”. I picchi nei valori
dei parametri di movimento per t 160 sec sono dovuti al fatto che il volume cerebrale I160x è
molto più disallineato dal volume “base” J(x) di quanto lo sono gli altri volumi In x , con n 160
sec.
lorenzo.sani@bioclinica.unipi.it 6
Figura 3 Rappresentazione grafica degli andamenti dei 6 parametri di movimento del 3D+time dataset d’ingresso
in funzione degli istanti delle serie temporali.
lorenzo.sani@bioclinica.unipi.it 7
temporali acquisite sono affetti da rumore, vengono rimossi anch’essi da tutti i runs acquisiti.
Supponiamo per esempio che l’ultimo run EPI acquisito prima del dataset anatomico sia stato
chiamato: fred_EPI_r10 e sia formato da 138 sub-bricks successivi. Decidiamo di rimuovere
gli ultimi 2 sub-bricks (quelli con indici: 136, 137) scrivendo:
fred_EPI_r10+orig'[3..135]'
In questo caso come volume cerebrale “base” J(x) per il programma “3dvolreg” scegliamo il
136-esimo sub-brick del run EPI fred_EPI_r10+orig, quello con indice 135. Per fare questo
si utilizza l’opzione –base 135 nella linea di comando del programma “3dvolreg”.
Se nella linea di comando del programma “3dvolreg” non si inserisce l’opzione –base n,
per default viene scelto come volume cerebrale “base” J(x) il primo sub-brick (quello con indice 0)
del dataset EPI d’ingresso (è come scrivere: –base 0).
L’opzione -tshift i nella linea di comando del programma “3dvolreg” fa sì che le serie
temporali relative ai voxels del 3D+time dataset d’ingresso vengano shiftate nel tempo in modo che
le diverse fette 2D di ogni volume cerebrale risultino allineate alla stessa origine temporale (media
tra le fette). Questo shift temporale è raccomandato perché ciascun volume cerebrale è formato da
'nz' immagini (fette) tomografiche 2D, ciascuna delle quali viene acquisita dallo scanner MRI,
all’interno di un singolo TR, in istanti di tempo diversi (c’è un ritardo temporale fetta-dipendente).
Questa differenza temporale introduce un ritardo di tempo artificiale tra le risposte (segnali)
provenienti da voxels corrispondenti in fette diverse dello stesso volume cerebrale. Questo ritardo
non influenza apprezzabilmente le statistiche tipicamente prodotte dall’analisi di deconvoluzione
(descritta più avanti), ma può influenzare i dati se per esempio si vogliono confrontare le evoluzioni
temporali delle risposte (serie temporali) provenienti da differenti regioni del cervello, cioè da
voxels che si trovano in fette diverse.
All’interno del programma “3dvolreg” lo shift temporale viene eseguito prima della
registrazione spaziale dei volumi cerebrali: è importante che queste due operazioni vengano
eseguite nell’ordine corretto.
Un’altra possibilità è di eseguire il programma “3dTshift” prima del programma “3dvolreg”.
Infatti il programma “3dTshift” fa esattamente la stessa cosa dell’opzione -tshift nella linea di
comando del programma “3dvolreg”: i risultati che si ottengono nei due casi sono identici.
Il numero intero i si riferisce al numero di istanti iniziali delle serie temporali che vengono
ignorati nell’operazione di shift temporale. Si nota che se i primi istanti sono già stati rimossi dalle
serie temporali dei runs acquisiti, bisogna usare l’opzione –tshift 0, perché agli istanti
temporali rimanenti vengono assegnati nuovi indici che, come abbiamo visto prima, partono da 0.
lorenzo.sani@bioclinica.unipi.it 8
misura le aree di attivazione funzionale e questo può essere ottenuto appunto applicando un filtro
Gaussiano di smoothing ai volumi cerebrali dei 3D+time dataset d’ingresso.
Per realizzare il filtraggio spaziale tridimensionale dei volumi cerebrali dei 3D+time dataset
d’ingresso è stato utilizzato il programma “3dmerge” di AFNI, che permette all’utente di editare
datasets e/o di combinare tra loro datasets diversi, il tutto nello spazio 3D. Abbiamo utilizzato il
programma “3dmerge” per editare i nostri datasets, in particolare per effettuare su di essi un
filtraggio Gaussiano di smoothing.
L’opzione -1blur_rms bmm fa sì che il blurring spaziale applicato a ciascun voxel dei
volumi cerebrali venga effettuato con un filtro Gaussiano con una deviazione RMS (root mean
square) uguale al valore bmm;
L’opzione -1blur_sigma bmm fa sì che il blurring spaziale applicato a ciascun voxel dei
volumi cerebrali venga effettuato con un filtro Gaussiano con una deviazione standard uguale al
valore bmm,;
L’opzione -1blur_fwhm bmm fa sì che il blurring spaziale applicato a ciascun voxel dei
volumi cerebrali venga effettuato con un filtro Gaussiano con una FWHM (full width at half
maximum) uguale al valore bmm.
In pratica in tutti e tre i casi il parametro bmm è espresso in millimetri e rappresenta un indice
della larghezza del filtro Gaussiano che viene utilizzato. Queste tre opzioni forniscono
semplicemente tre modi diversi per specificare il raggio utilizzato per la funzione di blurring; la
relazione tra i valori dei tre parametri bmm è:
sigma 0.57735027 rms 0.42466090 fwhm
Nella Figura 4 è mostrato, su un’immagine assiale, il risultato di un filtraggio (blurring)
spaziale ottenuto con il programma “3dmerge” e con l’opzione -1blur_rms 4.
Figura 4 Risultato, mostrato su un’immagine assiale, di un filtraggio (blurring) spaziale ottenuto con il programma
“3dmerge” e con l’opzione -1blur_rms 4, che fa sì che lo smoothing applicato a ciascun voxel venga
effettuato con un filtro Gaussiano con una deviazione RMS uguale a 4 mm.
In generale quanto più largo è il filtro, maggiore è il blurring che si ottiene, ma maggiore è
anche la perdita di risoluzione spaziale e viceversa quanto più stretto è il filtro.
lorenzo.sani@bioclinica.unipi.it 10
soggetto 1: A = 1050; B = 1000; si ha:
1050
percent signal change 100 % 105 %
1000
e dato che la baseline è stata normalizzata al valore 100 per entrambi i soggetti, una
variazione percentuale del segnale BOLD del 105 % significa un aumento del valore
IRF del (105 – 100 =) 5 % rispetto alla baseline;
soggetto 2: A = 525; B = 500; si ha:
525
percent signal change 100 % 105 %
500
e la solita variazione percentuale del segnale BOLD del 105 % significa di nuovo un
aumento del valore IRF del 5 % rispetto alla baseline.
Questi risultati mostrano che, nell’esempio considerato, la variazione percentuale dei valori
IRF del segnale BOLD tra la condizione baseline (di riposo) e la condizione di presentazione dello
stimolo è identica per entrambi i soggetti; tale variazione è aumento del valore IRF del 5 % rispetto
alla baseline in entrambi i casi. Possiamo allora concludere che, sebbene le differenze assolute tra i
valori IRF diano l’impressione che il soggetto 1 abbia mostrato, in risposta alla condizione di
stimolo, un’attivazione doppia rispetto a quella mostrata dal soggetto 2, questa impressione è
sbagliata. Infatti in realtà, come abbiamo appena visto, entrambi i soggetti hanno mostrato, in
risposta alla condizione di stimolo rispetto alla condizione baseline, un aumento del valore IRF del
5 % nell’attivazione cerebrale dell’ippocampo. In altre parole non c’è differenza significativa, in
risposta alla presentazione dello stimolo, nella variazione percentuale del segnale BOLD tra questi
due soggetti.
Questo esempio fa capire in maniera adeguata l’importanza e la necessità della
normalizzazione dei dati fMRI, in preparazione di un’analisi di gruppo, che prevede confronti
statistici tra soggetti diversi.
La normalizzazione dei dati fMRI prevede una procedura che si articola in due passi
successivi, che verranno di seguito descritti in dettaglio.
6.1 Calcolo dell’intensità media relativa alla condizione di riposo (baseline) di ogni voxel dei
datasets funzionali
Si utilizza il programma “3dTstat” di AFNI per calcolare il valore dell’intensità media relativa
alla condizione di riposo (baseline) di ogni voxel, cioè di ogni serie temporale, di un 3D+time
dataset funzionale (run) di un soggetto. In pratica per ogni voxel vengono sommate le intensità di
tutti gli istanti della corrispondente serie temporale relativi alla condizione di riposo ed il risultato
viene diviso per il numero totale di tali istanti temporali. Si ottiene come risultato un nuovo dataset
formato da un unico volume cerebrale (sub-brick), i valori dei cui voxels rappresentano le intensità
medie relative alla condizione di riposo di tutte le serie temporali del dataset d’ingresso,
corrispondenti al run considerato. Si ripete poi questo calcolo per tutti i runs del soggetto
considerato e poi per tutti i soggetti.
Nella Figura 5 a sinistra è rappresentata l’immagine di una fetta assiale di un 3D+time dataset
funzionale (run) di un soggetto; a destra in alto si ha una matrice 3x3 che si riferisce a tale dataset e
che contiene i 9 grafici relativi all’andamento delle serie temporali dei 9 voxels evidenziati nella
fetta assiale con il quadrato verde. A destra in basso si ha ancora una matrice 3x3 che però si
riferisce al dataset prodotto dal programma “3dTstat” e che contiene i 9 valori dell’intensità media
relativa alla condizione di riposo calcolata per le serie temporali relative ai soliti 9 voxels
evidenziati nella fetta assiale con il quadrato verde. Per esempio per il voxel centrale della matrice,
evidenziato in giallo, il valore dell’intensità media relativa alla condizione di riposo della
corrispondente serie temporale, calcolato come detto sopra, è: 1523.346. Si nota che nella matrice a
destra in basso non ci sono grafici, cioè andamenti di serie temporali, perché tale matrice è relativa
al dataset prodotto dal programma “3dTstat” che, come si è detto sopra, è formato da un unico
lorenzo.sani@bioclinica.unipi.it 11
volume cerebrale (sub-brick), perciò i suoi voxels non si riferiscono a serie temporali, ma a singoli
valori numerici di intensità media relativi alla condizione di riposo.
Figura 5 Sinistra: rappresentazione di una fetta assiale di un 3D+time dataset funzionale; destra in alto: matrice
3x3 che si riferisce a tale dataset e che contiene i 9 grafici relativi all’andamento delle serie temporali dei
9 voxels evidenziati nella fetta assiale con il quadrato verde; destra in basso: matrice 3x3 che si riferisce al
dataset prodotto dal programma “3dTstat” e che contiene i 9 valori dell’intensità media relativa alla
condizione di riposo calcolata per le serie temporali relative ai soliti 9 voxels evidenziati nella fetta assiale
con il quadrato verde.
Il valore dell’intensità media relativa alla condizione di riposo di ogni serie temporale (voxel)
ci serve nel calcolo della variazione percentuale del segnale BOLD, perché rappresenta la baseline
di tale serie temporale, cioè il valore da assegnare al parametro B che compare nell’equazione (2.1).
Se non diversamente specificato, il programma “3dTstat” esegue per default il calcolo della
media voxel per voxel di tutte le serie temporali del 3D+time dataset d’ingresso. Per questo motivo
non è necessario inserire l’opzione –mean nella linea di comando del programma. In realtà il
programma “3dTstat” può calcolare anche altre statistiche, sempre voxel per voxel come sopra
specificato, oltre alla media; per esempio può calcolare la deviazione standard, il coefficiente di
correlazione, la mediana, il minimo, il massimo e altre ancora.
lorenzo.sani@bioclinica.unipi.it 12
A
percent signal change 100 %
B
Nel nostro caso A, cioè il valore IRF dello stimolo, è rappresentato dai valori dei singoli
voxels, cioè dalle serie temporali dei 3D+time datasets ricostruiti, shiftati nel tempo, registrati
volumetricamente e filtrati nello spazio. Invece B, cioè il valore IRF della baseline, è rappresentato
dai valori dei singoli voxels dei datasets prodotti dal programma “3dTstat”, cioè dai valori delle
intensità medie relative alla condizione di riposo di tutte le serie temporali dei 3D+time datasets
d’ingresso.
In pratica il programma “3dcalc”, per ogni voxel di un 3D+time dataset d’ingresso, deve
prendere tutti i valori di intensità corrispondenti ai vari istanti della relativa serie temporale (valori
di A), dividere ciascuno di essi per il valore dell’intensità media relativa alla condizione di riposo di
quella serie temporale (valore di B calcolato in precedenza dal programma “3dTstat”) e moltiplicare
i valori ottenuti per 100, per ottenere la variazione percentuale del segnale BOLD in corrispondenza
dei vari istanti della serie temporale (voxel) considerata. Facendo tutto questo per tutti i voxels del
3D+time dataset d’ingresso, il programma “3dcalc” produce come risultato un nuovo 3D+time
dataset normalizzato, relativo al run considerato del soggetto in esame e nel quale, rispetto al
3D+time dataset d’ingresso, in corrispondenza di ogni voxel ed in corrispondenza di ogni istante
della relativa serie temporale, il valore assoluto di intensità del segnale BOLD è stato sostituito con
il corrispondente valore relativo di variazione percentuale del segnale stesso rispetto alla baseline,
che è stata normalizzata (riscalata) al valore 100 per tutte le serie temporali del run considerato.
In realtà il programma “3dcalc” provvede anche a moltiplicare il secondo membro della
precedente equazione per il valore di clip ricavato dall’esecuzione del programma “3dClipLevel”
oppure per la maschera generata dal programma “3dAutomask”. In questo modo la variazione
percentuale del segnale BOLD viene calcolata solamente in corrispondenza di quei voxels che
hanno valori di intensità superiori al valore di clip oppure che appartengono alla maschera (in
pratica viene calcolata solamente in corrispondenza dei voxels del cervello) e non viene calcolata
per i voxels appartenenti allo sfondo.
Nella Figura 6 a sinistra è rappresentata l’immagine di una fetta assiale del 3D+time dataset
normalizzato, prodotto come risultato dal programma “3dcalc”, relativo al run considerato del
soggetto in esame; a destra si ha una matrice 3x3 che si riferisce a tale dataset e che contiene i 9
grafici relativi all’andamento delle serie temporali dei 9 voxels evidenziati nella fetta assiale con il
quadrato verde.
Consideriamo per esempio il voxel centrale della matrice, evidenziato in giallo: il grafico si
riferisce alla corrispondente serie temporale ed i valori assunti da tale grafico nei vari istanti di
tempo sono valori normalizzati, cioè sono variazioni percentuali del segnale BOLD rispetto alla
baseline. In tale grafico è stato evidenziato l’istante di tempo: 18 con un puntino rosso (vedi la
freccia 1); tale istante di tempo è indicato anche dall’indice sotto la matrice (vedi la freccia 2). Dato
che la baseline è stata normalizzata al valore 100 per tutte le serie temporali del dataset, il valore
della variazione percentuale del segnale BOLD: 101.7501 % scritto nell’indice sotto la matrice
(vedi ancora la freccia 2) in realtà indica che la presentazione dello stimolo (ed anche del rumore)
ha provocato, nel voxel considerato ed all’istante di tempo fissato, un aumento percentuale del
segnale BOLD dell’ 1.7501 % rispetto alla baseline.
La freccia 3 indica i valori assunti dalle tre coordinate spaziali (x, y, z) in corrispondenza del
voxel considerato che, si ricorda, è quello centrale della matrice, evidenziato in giallo. Tale voxel
ovviamente corrisponde anche al voxel centrale nel quadrato verde della fetta assiale riportata nella
parte sinistra della figura.
lorenzo.sani@bioclinica.unipi.it 13
1
2
3
Figura 6 Sinistra: rappresentazione di una fetta assiale del 3D+time dataset normalizzato, prodotto come risultato
dal programma “3dcalc”; destra: matrice 3x3 che si riferisce a tale dataset e che contiene i 9 grafici
relativi all’andamento delle serie temporali dei 9 voxels evidenziati nella fetta assiale con il quadrato
verde; in tali grafici i valori assunti nei vari istanti di tempo sono valori normalizzati, cioè sono variazioni
percentuali del segnale BOLD rispetto alla baseline. Le varie grandezze indicate dalle tre frecce sono
descritte nel testo.
lorenzo.sani@bioclinica.unipi.it 14
In generale il sistema considerato può essere comunque complesso, possiamo non sapere
come esso è fatto internamente, ma se tale sistema è lineare e stazionario, la sua risposta y(t) ad un
arbitrario segnale d’ingresso f(t) può essere ricavata, se si conosce la risposta h(t) di tale sistema ad
un segnale impulsivo (chiamato anche funzione delta di Dirac) δ(t) applicato al suo ingresso:
La funzione h(t) è chiamata risposta impulsiva del sistema considerato. Possiamo allora
scrivere:
yt f ht d f t ht
Questo è chiamato integrale di convoluzione tra le due funzioni: f(t) ed h(t). Supponiamo ora
che il sistema sia causale, cioè che il segnale d’uscita y(t) all’istante t 0 sia determinato solo dai
valori del segnale d’ingresso f(t) per t t 0 e non da quelli per t t 0 . Se supponiamo anche che sia
f t 0 per t 0 , allora il precedente integrale di convoluzione diventa:
yt f ht d
t
0
Dato che il tempo è misurato ad istanti discreti, tutte le precedenti funzioni in realtà sono
discrete. Per esempio: y(t) diventa: yn t , dove: “n” è la variabile temporale e t TR è il
tempo di ripetizione. Supponiamo che sia: t 1 , perciò: yn t yn ; per semplicità di
notazione indichiamo: y(n) con: yn. Allora il precedente integrale di convoluzione diventa una
sommatoria e, ponendo: t n; m , la precedente espressione di y(t) diventa, nel dominio del
tempo discreto:
n n
yn f m h n m h m f n m
m0 m0
Di solito la risposta impulsiva hm di un sistema, oltre ad essere nulla per m<0, si annulla
anche per m>p: supponiamo cioè che hm sia diversa da zero solamente in corrispondenza dei (p+1)
istanti temporali: h 0 , h1, , h p . In questo caso la risposta yn del sistema allo stimolo fn diventa:
p
yn h m f n m h 0f n h1f n 1 h pf n p (2.2)
m0
yn risulta diversa da zero solamente nell’intervallo n p , con p fissato. Come abbiamo detto
sopra, yn è la variazione misurata del segnale BOLD proveniente dal distretto cerebrale considerato,
provocata dall’applicazione dello stimolo fn. La funzione fn è una serie temporale che vale 0 negli
istanti di tempo “n” in cui lo stimolo non viene presentato al soggetto e vale 1 negli istanti di tempo
in cui lo stimolo viene presentato.
La classe di metodi maggiormente usata per effettuare l’analisi statistica dei dati delle serie
temporali contenute nei 3D+time datasets fMRI e che permette la determinazione dei voxels
“attivi” nelle immagini relative a tali serie temporali, è basata sulla creazione di un modello ideale
che, in base allo stimolo applicato fn e alla risposta emodinamica hm (HRF = “Hemodynamic
Response Function”), fornisce l’andamento ideale (“di riferimento”) yn del segnale BOLD che ci si
aspetta di ricevere da una determinata regione cerebrale attiva dal punto di vista neuronale-
sinaptico. Come abbiamo visto sopra, yn è dato dalla convoluzione (discreta) tra lo stimolo fn e la
risposta emodinamica hm. Viene eseguito un “fitting” della risposta yn del modello ideale ai dati
reali Zn, per tutti i voxels (serie temporali) del 3D+time dataset fMRI considerato e quei voxels per
i quali il fitting ha una significatività statistica superiore ad un certo valore di soglia fissato, sono
dichiarati attivi.
lorenzo.sani@bioclinica.unipi.it 15
Chiaramente la risposta yn del modello ideale non coincide con i dati reali Zn a causa del
rumore, sempre presente nel segnale BOLD che si misura; supponendo che il rumore: “n” sia
Gaussiano bianco (ipotesi giustificata dal fatto che è richiesta, in fase di pre-processing dei dati,
un’operazione di filtraggio spaziale (smoothing) Gaussiano), additivo, incorrelato con il segnale
BOLD e a valor medio nullo, si può scrivere:
Zn yn n
Zn, come yn, risulta diversa da zero solamente nell’intervallo n p . Spesso i dati fMRI
misurati: Zn vengono modellizzati, oltre che dal modello ideale del segnale BOLD: yn e dal rumore:
n, anche da una costante: 0 e da un trend lineare: 1 n :
Zn 0 1 n yn n (2.3)
In questa espressione di Zn, la parte: 0 1 n n è chiamata: modello del rumore o
“baseline model”; yn come abbiamo detto è il modello ideale del segnale BOLD;
0 1 n yn n è chiamato: modello del segnale + rumore o “full model”.
Sostituendo l’espressione (2.2) di yn nella precedente espressione di Zn si ottiene:
Zn 0 1n h 0f n h1f n 1 h pf n p n
Questa espressione è valida per: n = p, p+1 , … , N-1, dove N è il numero di istanti da cui
sono formate le serie temporali del 3D+time dataset fMRI considerato.
La precedente equazione può essere posta in forma matriciale:
Z X
dove:
0
Zp 1 p fp f0 p
Z 1 p 1 f
f1 1
Z p 1
, X p 1
, h 0 , p 1
Z N 1 1 N 1 f N 1 f N p 1 h p N 1
Risolvere il problema di regressione lineare multipla significa trovare una stima b del vettore
β dei parametri incogniti:
ˆ 0
ˆ
1
b ˆ ĥ 0
ĥ
p
In pratica, dato lo stimolo applicato fn e i dati fMRI misurati: Zn, bisogna ricavare una stima
dei valori dei p+3 parametri incogniti del vettore β, tali che con essi la risposta yn del modello
ideale costituisce un buon “fitting” (approssimazione) dei dati reali Zn. In questo modo otteniamo
una stima Ẑ dei dati reali Z:
Ẑ X ˆ X b
Il criterio usato normalmente per stimare i valori dei parametri incogniti (cioè per determinare
il vettore b), è di minimizzare la somma dei quadrati degli errori (scarti, differenze) tra i dati stimati
Ẑ e i dati reali Z. Tale somma è indicata con SSE (dall’Inglese: error sum of squares) e la sua
espressione è:
N 1
SSE Zn Ẑn Z Ẑ Z Ẑ
2 T
n p
lorenzo.sani@bioclinica.unipi.it 16
1
b XT X XT Z ˆ
Gli elementi del vettore b rappresentano la stima, secondo il metodo della somma dei minimi
quadrati, dei valori dei parametri incogniti contenuti nel vettore β. Si nota che con questo metodo si
trova una stima ĥ m dei valori della risposta emodinamica hm, con: m = 0 , …, p. Questa è chiamata
analisi di deconvoluzione; a noi interessa fare invece un’analisi di regressione lineare, nella quale
la risposta emodinamica h(t) (notare che abbiamo di nuovo usato la notazione relativa al dominio
del tempo continuo) è fissata a priori. La scelta della funzione h(t) viene fatta senza tenere in
considerazione il valore del TR o la temporizzazione dello stimolo f(t); h(t) è una funzione
universale che riproduce approssimativamente le caratteristiche della reale risposta emodinamica
del cervello ad un singolo stimolo di durata temporale molto breve, minore di 1 sec (l’analogo reale
del segnale impulsivo δ(t), che è solo ideale). Nella Figura 7 è mostrato l’andamento grafico della
funzione h(t) (curva nera), in risposta ad uno stimolo molto breve (curva rossa).
Figura 7 Andamento grafico della risposta emodinamica h(t) del cervello (curva nera) ad un singolo stimolo di
durata temporale molto breve, minore di 1 sec (curva rossa).
0 per t 0
h t
t b e t c per t 0
dove: b = 8.6; c = 0.547 sec (Cohen, 1977). Come si vede dal grafico della Figura 7, la
risposta emodinamica h(t) ha un ritardo temporale, rispetto allo stimolo, di 1-2 secondi, un tempo di
salita di 4-5 secondi ed un tempo di discesa di 4-6 secondi.
Quando vengono presentati più stimoli successivi, tra loro più vicini nel tempo della durata
delle singole risposte emodinamiche h(t), alcune parti di tali funzioni risultano sovrapposte.
Supponiamo che il nostro modello ideale del cervello sia lineare: la risposta emodinamica
lorenzo.sani@bioclinica.unipi.it 17
complessiva ai vari stimoli presentati è data dalla somma delle risposte emodinamiche ai singoli
stimoli, come è mostrato nella Figura 8.
Figura 8 Linearità della risposta emodinamica: andamento grafico della risposta emodinamica complessiva
(curva blu) a tre brevi stimoli successivi; le parti delle tre risposte emodinamiche ai tre stimoli (curve:
nera, rossa, verde) che risultano tra loro sovrapposte si sommano.
Il network neuronale del cervello può essere rappresentato con un sistema non lineare e di
conseguenza anche la risposta emodinamica misurata con l’fMRI probabilmente è non lineare.
Tuttavia il modello lineare, anche se non perfettamente corretto, è molto utile e largamente
utilizzato per il “fitting” dei dati delle serie temporali dei 3D+time datasets fMRI.
Ricordiamo che la risposta yn del modello ideale è data dalla convoluzione (discreta) tra lo
stimolo presentato fn e la risposta emodinamica hm: questa convoluzione può essere calcolata
utilizzando per esempio il programma “waver” di AFNI. Riscriviamo la (2.3) cambiando il nome
dei parametri del baseline model e ponendo yn rn :
Zn a b n rn n
Dato che la risposta emodinamica hm è fissata, perciò nota, si hanno solo 3 parametri
incogniti: a, b, β, il valore dei quali deve essere calcolato in tutti i voxels del dataset fMRI
considerato. I due parametri: a, b del baseline model non interessano nell’analisi; interessa invece il
valore del parametro β, che rappresenta l’ampiezza della risposta rn del modello ideale (segnale
BOLD che ci si aspetta di ricevere) nel “fitting” dei dati reali Zn (segnale BOLD che effettivamente
si riceve e si misura). In altre parole il valore di β ci dice quale percentuale del segnale BOLD
ricevuto (relativo ai dati reali Zn) è “spiegato” da rn, cioè è una risposta alla presentazione dello
stimolo fn. Il parametro β è detto coefficiente di regressione lineare o β-weight, mentre la funzione
rn è detta “regressore” dello stimolo fn.
lorenzo.sani@bioclinica.unipi.it 18
Finora abbiamo considerato il caso in cui si ha un solo stimolo d’ingresso (fn): si parla di
analisi di regressione lineare semplice; se si ha più di uno stimolo d’ingresso: f ni , con: i = 1, 2, … ,
si parla di analisi di regressione lineare multipla. In questo caso si ha una diversa risposta rni del
modello ideale per ogni diverso stimolo d’ingresso: f ni . Supponiamo per esempio che siano presenti
3 diversi stimoli d’ingresso: f n1 , f n2 , f n3 ; calcolando la convoluzione (discreta) di questi 3 stimoli
d’ingresso con la risposta emodinamica hm fissata, si trovano le 3 diverse risposte: rn1 , rn2 , rn3 del
modello ideale a tali 3 stimoli d’ingresso. La precedente espressione di Zn può allora essere riscritta
nella forma più generale:
Zn a b n c n 2 1 rn1 2 rn2 3 rn3 n
nella quale, come appare evidente, nel baseline model abbiamo inserito anche un trend
parabolico: c n 2 . Si nota che il modello ideale del segnale BOLD: 1 rn1 2 rn2 3 rn3 è una
combinazione lineare delle 3 risposte rni del modello ideale ai 3 stimoli d’ingresso: f ni , con: i = 1, 2,
3. Ora si hanno 6 parametri incogniti: a, b, c, β1, β2, β3, il valore dei quali deve essere calcolato in
tutti i voxels del dataset fMRI considerato. Analogamente al caso della regressione lineare
semplice, mentre i tre parametri: a, b, c del baseline model non interessano nell’analisi, interessa il
valore dei tre parametri (coefficienti di regressione lineare): βi (i = 1, 2, 3); essi rappresentano
l’ampiezza della risposta rni del modello ideale nel “fitting” dei dati reali Zn. Cioè il valore di βi ci
dice quale percentuale del segnale BOLD ricevuto (relativo ai dati reali Zn) è “spiegato” dal
regressore rni , cioè è una risposta alla presentazione dello stimolo f ni .
La Figura 9 mostra un esempio in cui sono presenti 2 diversi stimoli d’ingresso: f1 t , f 2 t ;
calcolando la convoluzione (notare che ora siamo nel dominio del tempo continuo) di questi 2
stimoli d’ingresso con la risposta emodinamica h(t) fissata, si trovano le 2 diverse risposte: r1 t ,
r2 t (curve rossa e verde rispettivamente) del modello ideale a tali 2 stimoli d’ingresso. Non
considerando il baseline model, bisogna trovare il valore dei 2 parametri incogniti: β1, β2 con i quali
il modello ideale del segnale BOLD: 1 r1 t 2 r2 t (curva blu) costituisce, per tutti i voxels
(serie temporali) del 3D+time dataset fMRI considerato, il fitting migliore dei dati reali Z(t) (curva
grigia). In questo esempio si sono trovati i due valori: β1 = 1.5, β2 = 0.6.
lorenzo.sani@bioclinica.unipi.it 19
Figura 9 Esempio grafico in cui sono presenti le 2 diverse risposte: r1(t), r2(t) (curve rossa e verde
rispettivamente) del modello ideale ai 2 diversi stimoli d’ingresso: f1(t), f2(t). I valori dei 2 parametri
incogniti: β1, β2 con i quali il modello ideale del segnale BOLD: 1 r1 t 2 r2 t (curva blu)
costituisce, per tutti i voxels (serie temporali) del 3D+time dataset fMRI considerato, il fitting migliore
dei dati reali Z(t) (curva grigia), sono: β1 = 1.5, β2 = 0.6.
lorenzo.sani@bioclinica.unipi.it 20
soglia fissato, sono dichiarati essere attivi quando al soggetto viene presentato lo stimolo d’ingresso
f ni , rispetto alla condizione di riposo.
Si possono anche effettuare dei GLT (general linear tests) sui coefficienti di regressione βi o
su combinazioni lineari di essi. Per esempio si può fare un test per valutare la differenza statistica
(“contrasto”): i j 0 , che ci permette di vedere quali voxels hanno differenti livelli di
attivazione in risposta ai due diversi stimoli d’ingresso: f ni , f nj . Quei voxels per i quali la precedente
condizione è soddisfatta con una significatività statistica superiore ad un certo valore di soglia
fissato, sono dichiarati essere più attivi (cioè ad essi corrisponde una maggiore variazione del
segnale BOLD ricevuto) quando al soggetto viene presentato lo stimolo d’ingresso f ni , rispetto a
quando gli viene presentato lo stimolo f nj .
Gli artefatti dovuti al movimento della testa del soggetto possono rimanere anche dopo la
registrazione dei volumi cerebrali, per esempio a causa di errori nella registrazione stessa o di
disomogeneità nel campo magnetico statico. In questi casi tali artefatti residui possono essere
rimossi, almeno in parte, inserendo, nella linea di comando del programma “3dDeconvolve”, i
valori stimati dal programma “3dvolreg” dei parametri di movimento come termini aggiuntivi del
baseline model. Come abbiamo visto, i parametri di movimento sono delle funzioni del tempo, cioè
sono delle serie temporali, che nell’analisi di regressione lineare multipla sono considerate come
regressori “di non interesse”.
lorenzo.sani@bioclinica.unipi.it 21