FSL VBM
Data
[osotolongo@detritus vbmlang]$ head model_vbm.csv Subject;PSubject;group;edat_v0;Anyos_Escolaridad_FAC_v0;Sex_1H_0M_v0;FE_anflu_NP_v0;FE_Pflu_NP_v0;Fluidesa_Verbal_Accio_NP_v0;Action_Namimg_Libre_FAC_v0;Boston_Libre_FAC_v0;Piramides_Y_Palmeras_Palab_FAC_v0;Piramides_Y_Plameras_Imag_FAC_v0;Kissing_Dancing_Imagenes_FAC_v0;Kissing_Dancing_Palabras_FAC_v0 1;F001;1;71;8;0;17;22;13;52;53;NA;NA;NA;NA 2;F002;1;70;12;1;25;23;22;53;55;NA;NA;NA;NA 3;F003;1;70;8;0;17;14;11;47;48;NA;NA;NA;NA 4;F004;1;76;16;0;15;18;20;54;50;NA;NA;NA;NA 5;F005;1;68;20;1;26;22;28;53;65;NA;NA;NA;NA 6;F006;1;64;14;0;20;24;30;55;51;NA;NA;NA;NA 7;F007;1;59;19;1;24;24;25;48;62;NA;NA;NA;NA 8;F008;1;55;16;0;17;15;10;58;53;NA;NA;NA;NA 9;F009;1;67;16;0;28;20;19;55;58;NA;NA;NA;NA
Lista de sujetos,
[osotolongo@detritus vbmlang]$ awk -F";" '{printf "%04i\n", $1}' model_vbm.csv | tail -n +2 > subjects.list [osotolongo@detritus vbmlang]$ head subjects.list 0001 0002 0003 0004 0005 0006 0007 0008 0009 0010
Data para matriz,
[osotolongo@detritus vbmlang]$ awk -F";" '{print $3" "$4" "$5" "$6" "$7}' model_vbm.csv | tail -n +2 > vbm_data.dat [osotolongo@detritus vbmlang]$ head vbm_data.dat 1 71 8 0 17 1 70 12 1 25 1 70 8 0 17 1 76 16 0 15 1 68 20 1 26 1 64 14 0 20 1 59 19 1 24 1 55 16 0 17 1 67 16 0 28 1 68 20 1 26
design.mat
[osotolongo@detritus vbmlang]$ Text2Vest vbm_data.dat design.mat [osotolongo@detritus vbmlang]$ head design.mat /NumWaves 5 /NumPoints 198 /Matrix 1 71 8 0 17 1 70 12 1 25 1 70 8 0 17 1 76 16 0 15 1 68 20 1 26 1 64 14 0 20 1 59 19 1 24
design.con
[osotolongo@detritus vbmlang]$ cat contras_model.txt 0 0 0 0 1 0 0 0 0 -1 [osotolongo@detritus vbmlang]$ Text2Vest contras_model.txt design.con [osotolongo@detritus vbmlang]$ cat design.con /NumWaves 5 /NumPoints 2 /Matrix 0 0 0 0 1 0 0 0 0 -1
BET
[osotolongo@detritus vbmlang]$ mkdir struc [osotolongo@detritus vbmlang]$ for x in `cat subjects.list`; do get_fsbrain.sh facehbi ${x} struc; done mri_convert.bin --in_type mgz --out_type nii /nas/data/subjects/facehbi_0001/mri/nu.mgz struc/0001_tmp.nii.gz $Id: mri_convert.c,v 1.226 2016/02/26 16:15:24 mreuter Exp $ reading from /nas/data/subjects/facehbi_0001/mri/nu.mgz... TR=2200.00, TE=0.00, TI=0.00, flip angle=0.00 i_ras = (-1, 2.79397e-09, 0) j_ras = (0, 0, -1) k_ras = (1.86265e-09, 1, 0) writing to struc/0001_tmp.nii.gz... ...... ...... ......
Comprobando,
[osotolongo@detritus vbmlang]$ cd struc/ [osotolongo@detritus struc]$ for x in `cat ../subjects.list`; do a="$a ${x}_struc ${x}_struc_brain"; done [osotolongo@detritus struc]$ slicesdir -o $a 0001_struc 0002_struc 0003_struc ... ... ... 0204_struc 0205_struc 0206_struc Finished. To view, point your web browser at file:/nas/data/facehbi/vbmlang/struc/slicesdir/index.html
Aqui se revisa, se excluyen los erroneos de subjects.list, design.mat y las imagenes de struc/ .
Aqui he visto que los sujetos 0097, 0144 necesitan ser removidos del experimento.
Template
[osotolongo@detritus vbmlang]$ fslvbm_2_template -n 0001_struc 0002_struc 0003_struc 0004_struc 0005_struc 0006_struc ... ... ... 0205_struc 0206_struc Running segmentation: ID=26666 Running initial registration: ID=27593 Creating first-pass template: ID=16311 Running registration to first-pass template: ID=20708 Creating second-pass template: ID=23713 Study-specific template will be created, when complete, check results with: fslview struc/template_4D_GM and turn on the movie loop to check all subjects, then run: fslview /usr/local/fsl/data/standard/tissuepriors/avg152T1_gray struc/template_GM to check general alignment of mean GM template vs. original standard space template.
Mirando struc/template_4D_GM veo que el volumen 101 se ha procesado mal, asi que debo borrarlo de la lista. Las imagenes van del 0 al 195.
A ver la lista esa,
[osotolongo@detritus vbmlang]$ ls struc/*_struc.nii.gz > templist.txt
El 101 es la linea 102 de esta lista, que corresponde al sujeto 0107. Ademas, corresponde a la linea 105 de design.mat, que debe eliminarse.
[osotolongo@detritus vbmlang]$ rm struc/0107_struc* [osotolongo@detritus vbmlang]$ sed -e 105d design.mat > design.mat
Nota: Se ha de cambiar tambien la linea /Numpoints XXX y poner el numero correcto.
OK. y ahora rerun.
[osotolongo@detritus vbmlang]$ fslvbm_2_template -n 0001_struc 0002_struc 0003_struc ... ... ...
Ahora todo ha quedado correcto,
[osotolongo@detritus vbmlang]$ fslview_deprecated struc/template_4D_GM
[osotolongo@detritus vbmlang]$ fslview_deprecated /usr/local/fsl/data/standard/tissuepriors/avg152T1_gray struc/template_GM
PreProc
[osotolongo@detritus vbmlang]$ fslvbm_3_proc Now running the preprocessing steps and the pre-analyses 0001_struc 0002_struc 0003_struc 0004_struc ... ... ...
y esto produce el subdirectorio stats , donde debe revisarse que la imagen, GM_mod_merg contenga todos los sujetos alineados.
Analisis
Siguiendo el manual ahora se ha de ejecutar randomise para visualizar los resultados. Esta herramienta utliza el metodo de montecarlo para determinar las regiones que son afectadas por elmodelo que hemos construido. Esto quiere decir que mientras mas permutaciones se usen mejor sera el resultado pero tambien muchisimo mas largo el calculo ya que el tiempo crece como progresion geometrica (no aritmetica) en cuanto al numero de permutaciones.
Primeramente se ha de decidir que tipo de analisis se quiere. Si los cluster se han de buscar con threshold o sin el (TFCE). Cuanto suavizado se ha de usar, etc
cluster-based thresholding
Aqui un ejemplo corto (1000 permutaciones), con un smooth de 3.0mm y un umbral de 2.3 para la correccion de los clusters.
[osotolongo@detritus vbmlang]$ randomise -i stats/GM_mod_merg_s3 -m stats/GM_mask -o fslvmblang -d design.mat -t design.con -c 2.3 -n 1000 randomise options: -i stats/GM_mod_merg_s3 -m stats/GM_mask -o fslvmblang -d design.mat -t design.con -c 2.3 -n 1000 Loading Data: Data loaded 5.54365e+221 permutations required for exhaustive test of t-test 1 Doing 1000 random permutations Starting permutation 1 (Unpermuted data) Starting permutation 2 Starting permutation 3 Starting permutation 4 Starting permutation 5 Starting permutation 6 Starting permutation 7 ... ... ... Starting permutation 998 Starting permutation 999 Starting permutation 1000 Critical Value for: fslvmblang_clustere_tstat1 is: 1371 5.54365e+221 permutations required for exhaustive test of t-test 2 Doing 1000 random permutations Starting permutation 1 (Unpermuted data) Starting permutation 2 Starting permutation 3 Starting permutation 4 ... ... ... Starting permutation 998 Starting permutation 999 Starting permutation 1000 Critical Value for: fslvmblang_clustere_tstat2 is: 1664 Finished, exiting.
Esto produce una imagen de los clusters con cierta densidad de probabilidad,
Aqui podemos hacer elthreshold deseado, ejemplo 95%,
[osotolongo@detritus vbmlang]$ fslmaths fslvmblang_clustere_corrp_tstat1 -thr 0.95 -bin mask_pcorrected [osotolongo@detritus vbmlang]$ fslmaths fslvmblang_tstat1 -mas mask_pcorrected fslvmblang_tstat1_corrected
Aqui hemos hechos unamascara con los clusters que estan por encima del 95% y la hemos aplicado a la imagen de p-values. Veamos lo que queda,
atlasquery
[osotolongo@brick03 vbmlang]$ atlasquery -a "Harvard-Oxford Subcortical Structural Atlas" -m mask_pcorrected Left Cerebral White Matter:27.5929 Left Cerebral Cortex:63.1373 [osotolongo@brick03 vbmlang]$ atlasquery -a "Harvard-Oxford Cortical Structural Atlas" -m mask_pcorrected Insular Cortex:0.1878 Temporal Pole:4.4353 Superior Temporal Gyrus, anterior division:0.3435 Superior Temporal Gyrus, posterior division:1.7789 Middle Temporal Gyrus, anterior division:2.9409 Middle Temporal Gyrus, posterior division:13.8637 Inferior Temporal Gyrus, anterior division:9.6836 Inferior Temporal Gyrus, posterior division:15.6154 Inferior Temporal Gyrus, temporooccipital part:0.0007 Parahippocampal Gyrus, anterior division:0.1551 Temporal Fusiform Cortex, anterior division:6.3129 Temporal Fusiform Cortex, posterior division:1.8651 Planum Polare:0.7024 Heschl's Gyrus (includes H1 and H2):0.0501 Planum Temporale:0.0111
TFCE
Ahora, sin presuponer ningun umbral para la construccion de clusters
[osotolongo@detritus vbmlang]$ randomise -i stats/GM_mod_merg_s3 -m stats/GM_mask -o fslvmblang_tfce -d design.mat -t design.con -T -n 1000 randomise options: -i stats/GM_mod_merg_s3 -m stats/GM_mask -o fslvmblang_tfce -d design.mat -t design.con -T -n 1000 Loading Data: Data loaded 5.54365e+221 permutations required for exhaustive test of t-test 1 Doing 1000 random permutations Starting permutation 1 (Unpermuted data) Starting permutation 2 Starting permutation 3 Starting permutation 4 Starting permutation 5 Starting permutation 6 Starting permutation 7 Starting permutation 8 ... ... ...
Aqui los resultados no estan tan claros,
[osotolongo@brick03 vbmlang]$ fslview_deprecated $FSLDIR/data/standard/MNI152_T1_2mm fslvmblang_tfce_tfce_corrp_tstat1 -l Red-Yellow -b 0.9,1
[osotolongo@brick03 vbmlang]$ fslmaths fslvmblang_tfce_tfce_corrp_tstat1 -thr 0.9 -bin mask_tfce [osotolongo@brick03 vbmlang]$ atlasquery -a "Harvard-Oxford Subcortical Structural Atlas" -m mask_tfce Left Cerebral White Matter:65.2038 Left Cerebral Cortex:34.7684
Nota: Observese que he bajado de p=0.05 a p=0.1 para poder observar algo.
smooth 4mm
Con smooth de 4mm y usando directamente GM_mod_merg,
Sin modular no se obtienen resultados
[osotolongo@detritus vbmlang]$ randomise -i stats/GM_mod_merg_s4 -m stats/GM_mask -o fslvmblang -d design.mat -t design.con -T -n 1000 randomise options: -i stats/GM_mod_merg_s4 -m stats/GM_mask -o fslvmblang -d design.mat -t design.con -T -n 1000 Loading Data: Data loaded Starting permutation 1 (Unpermuted data) Starting permutation 2 Starting permutation 3 Starting permutation 4 Starting permutation 5 Starting permutation 6 Starting permutation 7 Starting permutation 8 ... ... ...
Tengo la misma region que con smooth 3mm (un puntito ) pero ahora con p=0.05.Voy a subir n.
[osotolongo@detritus vbmlang]$ randomise -i stats/GM_mod_merg_s4 -m stats/GM_mask -o fslvmblang -d design.mat -t design.con -T -n 5000