User Tools

Site Tools


neuroimagen:bioface_tbss

TBSS (proyecto BIOFACE)

tbss_1_preproc

[osotolongo@detritus bioface]$ mkdir bftbss
[osotolongo@detritus bioface]$ cd bftbss/
[osotolongo@detritus bftbss]$ cp ../working/*FA* ./
[osotolongo@detritus bftbss]$ tbss_1_preproc *.nii.gz
processing 0002_dti_FA
processing 0003_dti_FA
processing 0004_dti_FA
processing 0005_dti_FA
processing 0006_dti_FA
...
...
...

tbss_2_reg

[osotolongo@detritus bftbss]$ tbss_2_reg -T
0002_dti_FA_FA_to_target
0003_dti_FA_FA_to_target
0004_dti_FA_FA_to_target
0005_dti_FA_FA_to_target
0006_dti_FA_FA_to_target
...
...
...

tbss_3_postreg

[osotolongo@detritus bftbss]$ tbss_3_postreg -T
using pre-chosen target for registration
transforming all FA images into MNI152 space
0002_dti_FA_FA
0003_dti_FA_FA
0004_dti_FA_FA
0005_dti_FA_FA
...
....
...

tbss_4_prestats

[osotolongo@detritus bftbss]$ tbss_4_prestats 0.2
creating skeleton mask using threshold 0.2
creating skeleton distancemap (for use in projection search)
projecting all FA data onto skeleton
 
now run stats - for example:  
randomise -i all_FA_skeletonised -o tbss -m mean_FA_skeleton_mask -d design.mat -t design.con -n 500 --T2 -V
(after generating design.mat and design.con)

Test con lenguaje

[osotolongo@detritus bftbss]$ head bioface_data.csv 
PSubject,Subject,Edad,Sexo,Estudios,FACEmem
B001,0001,64,1,11,13
B002,0002,53,2,9,48
B003,0003,60,2,8,10
B004,0004,64,2,7,21
B005,0005,62,2,16,30
B006,0006,64,2,5,25
B007,0007,62,2,11,39
B008,0008,58,2,11,45
B009,0009,51,2,11,28
[osotolongo@detritus bftbss]$ grep -f subjects.list bioface_data.csv > sub_bioface_data.csv
[osotolongo@detritus bftbss]$ head sub_bioface_data.csv
B002,0002,53,2,9,48
B003,0003,60,2,8,10
B004,0004,64,2,7,21
B005,0005,62,2,16,30
B006,0006,64,2,5,25
B007,0007,62,2,11,39
B008,0008,58,2,11,45
B009,0009,51,2,11,28
B010,0010,62,2,6,17
B011,0011,54,2,16,67

Redo

[osotolongo@detritus bftbss]$ grep -v "`awk -F',' '{print $2}' sub_bioface_data.csv`" subjects.list 
0032

Borro el 0032 de subjects.list, y

[osotolongo@detritus bftbss]$ for x in `cat subjects.list`; do cp ../working/${x}_dti_FA.nii.gz ./; done
[osotolongo@detritus bftbss]$ awk -F"," '{print $3,$4,$5,$6}' sub_bioface_data.csv > comp_data.dat
[osotolongo@detritus bftbss]$ head comp_data.dat
53 2 9 48
60 2 8 10
64 2 7 21
62 2 16 30
64 2 5 25
62 2 11 39
58 2 11 45
51 2 11 28
62 2 6 17
54 2 16 67
[osotolongo@detritus bftbss]$ Text2Vest comp_data.dat design.mat
[osotolongo@detritus bftbss]$ head design.mat
/NumWaves 4
/NumPoints 83
/Matrix
53 2 9 48
60 2 8 10
64 2 7 21
62 2 16 30
64 2 5 25
62 2 11 39
58 2 11 45
[osotolongo@detritus bftbss]$ cat model.con
0 0 0 1
0 0 0 -1
[osotolongo@detritus bftbss]$ Text2Vest model.con design.con
[osotolongo@detritus bftbss]$ cat design.con
/NumWaves 4
/NumPoints 2
/Matrix
0 0 0 1
0 0 0 -1

y repito todos los pasos.

[osotolongo@detritus bftbss]$ tbss_1_preproc *.nii.gz
...
[osotolongo@detritus bftbss]$ tbss_2_reg -T
...
[osotolongo@detritus bftbss]$ tbss_3_postreg -T
...
[osotolongo@detritus bftbss]$ tbss_4_prestats 0.2
...

Statistics

ahora ejecuto el randomise,

[osotolongo@detritus bftbss]$ randomise -i stats/all_FA_skeletonised.nii.gz -o bftbss -m stats/mean_FA_skeleton_mask -d design.mat -t design.con -n 1000 --T2 -V
randomise options: -i stats/all_FA_skeletonised.nii.gz -o bftbss -m stats/mean_FA_skeleton_mask -d design.mat -t design.con -n 1000 --T2 -V 
Loading Data: 
Data loaded
4.97831e+111 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
...
...
...

Vamos a mirarlo,

[fsluser@FSLVm7_64 bftbss]$ fslview_deprecated /usr/local/fsl/data/standard/MNI152_T1_1mm stats/mean_FA_skeleton -l Green -b 0.2,0.7 bftbss_tfce_corrp_tstat1 -l Red-Yellow -b 0.95,1

y hacemos un tbss_fill,

[osotolongo@detritus bftbss]$ tbss_fill bftbss_tfce_corrp_tstat1 0.95 stats/mean_FA tbss_fill

para verlo mejor,

[fsluser@FSLVm7_64 bftbss]$ fslview_deprecated stats/mean_FA stats/mean_FA_skeleton -l Green -b 0.2,0.8 tbss_fill -l Red-Yellow -b 0.05,0.2

TBSS vs NP Composites

Lo primero es que tengo que tener los composites de NP hechos, esto de aqui: Sacando los Composite Scores de NP para BIOFACE.

Ahora he de unir estos composites con las variables demograficas que actuaran como covariables. En este caso, edad, sexo y educacion. Vamos a ver lo que tengo,

[osotolongo@brick03 tbss]$ cp ../ccs/bioface_composite_scores.csv ./
 
[osotolongo@brick03 tbss]$ head bioface_composite_scores.csv 
,Attention.and.Working.Memory,Processing.speed.and.Executive.function,Language,Verbal.Learning.and.Memory,Praxis,Visual.gnosis
B072,0.940383261534547,0.712149416119579,0.325607497357412,-0.550959332389243,0.421836370550401,0.445705493949369
B060,-0.200675612140164,0.605014438691104,0.325607497357412,0.546888909234256,-3.77634938935993,-0.906684675087603
B041,-1.34173448581487,-2.05628737448506,-1.98722088956859,-0.398317187495001,-1.64011037957474,-0.56858713282836
B051,0.374478120167295,0.963714319556467,0.325607497357412,-0.242472701174079,0.421836370550401,-1.13138977880836
B038,-0.191427021199958,0.588076018557911,0.325607497357412,-0.751279560842757,0.436694822482413,0.219960503550505
B052,1.51553699384201,0.966079684763052,0.0209050508660859,-0.167752799440297,0.421836370550401,0.670410597670127
B026,0.940383261534547,0.624957199529257,-1.07311355009461,-1.77280673001914,0.421836370550401,0.276136779480695
B040,0.940383261534547,0.716084275587973,0.325607497357412,0.429294436081222,0.421836370550401,0.670410597670127
B006,-1.34173448581487,0.416707414517106,0.0209050508660859,0.665373444688287,-1.68468573537077,0.0998024379954218
 
[osotolongo@brick03 tbss]$ head bioface_demog.csv 
Subject,Edad_visita,Sexo,Anyos_escolaridad
B072,66,0,7
B060,59,1,12
B041,63,1,11
B051,61,1,9
B038,63,1,10
B052,62,1,9
B026,62,1,20
B040,62,1,17
B006,64,1,6

Uf! a editar un poco,

[osotolongo@brick03 tbss]$ sed -i 's/^,/PSubject,/' bioface_composite_scores.csv
[osotolongo@brick03 tbss]$ sed -i 's/Subject/PSubject/;s/Edad_visita/Age/;s/Sexo/Gender/;s/Anyos_escolaridad/Education/' bioface_demog.csv 
[osotolongo@brick03 tbss]$ (head -n 1 bioface_composite_scores.csv && tail -n +2 bioface_composite_scores.csv | sort -t, -k 1) > bioface_composite_scores_sorted.csv 
[osotolongo@brick03 tbss]$ (head -n 1 bioface_demog.csv && tail -n +2 bioface_demog.csv | sort -t, -k 1) > bioface_demog_sorted.csv
[osotolongo@brick03 tbss]$ join -t, bioface_demog_sorted.csv bioface_composite_scores_sorted.csv > bioface_np_data.csv

y ahora me boy a buscar los codigos de neuroimagen,

[osotolongo@brick03 tbss]$ sed 's/;/,/g' ../bioface_mri.csv | sort -t, -k 2 > bioface_ni.csv 
[osotolongo@brick03 tbss]$ sed 's/;/,/g' ../bioface_mri.csv | sort -t, -k 2 | sed '1iSubject,PSubject' > bioface_ni.csv 
[osotolongo@brick03 tbss]$ join -t, -1 2 -2 1 bioface_ni.csv bioface_np_data.csv > bioface_data.csv
[osotolongo@brick03 tbss]$ (head -n 1 bioface_data.csv && tail -n +2 bioface_data.csv | sort -t, -k 2) > bioface_data_sorted.csv

y me quedan los datos juntos y ordenados por el id de neuroimagen,

[osotolongo@brick03 tbss]$ head bioface_data_sorted.csv
PSubject,Subject,Age,Gender,Education,Attention.and.Working.Memory,Processing.speed.and.Executive.function,Language,Verbal.Learning.and.Memory,Praxis,Visual.gnosis
B001,0001,64,0,13,0.940383261534547,0.258400126101346,0.325607497357412,0.351372192920761,0.421836370550401,0.437899980254665
B002,0002,53,1,10,-0.766580753507416,-0.640726365145137,0.325607497357412,-0.506483590256652,-1.65496883150675,-0.680939684688739
B003,0003,60,1,8,-0.775829344447622,-1.92758435997598,-0.588499842116566,0.188411915334138,0.451553274414425,-0.62476340875855
B004,0004,64,1,7,0.365229529227089,-0.078687424137654,-0.28379739562524,-0.313279153068839,0.421836370550401,-0.906684675087603
B005,0005,62,1,16,0.940383261534547,0.336724978845789,0.325607497357412,-0.205112750307188,0.421836370550401,-0.906684675087603
B006,0006,64,1,6,-1.34173448581487,0.416707414517106,0.0209050508660859,0.665373444688287,-1.68468573537077,0.0998024379954218
B007,0007,62,1,9,-1.34173448581487,-1.36008617577211,-1.50260718159054,-0.230553397768359,0.421836370550401,-3.05438810752004
B008,0008,58,1,15,-0.200675612140164,1.39604181164675,0.325607497357412,0.112090842887017,0.421836370550401,1.00850813992937
B009,0009,51,1,9,0.374478120167295,0.0671339898083944,0.325607497357412,0.465053216234773,-1.68468573537077,0.670410597670127

Lo que necesito ahora es quitar de esta lista todos los que no tengan DTI preprocesado,

[osotolongo@brick03 tbss]$ ls data
0002_dti_FA.nii.gz  0017_dti_FA.nii.gz  0036_dti_FA.nii.gz  0051_dti_FA.nii.gz  0070_dti_FA.nii.gz  0085_dti_FA.nii.gz
0003_dti_FA.nii.gz  0018_dti_FA.nii.gz  0037_dti_FA.nii.gz  0052_dti_FA.nii.gz  0071_dti_FA.nii.gz  0086_dti_FA.nii.gz
0004_dti_FA.nii.gz  0019_dti_FA.nii.gz  0038_dti_FA.nii.gz  0054_dti_FA.nii.gz  0072_dti_FA.nii.gz  0087_dti_FA.nii.gz
0005_dti_FA.nii.gz  0020_dti_FA.nii.gz  0039_dti_FA.nii.gz  0055_dti_FA.nii.gz  0073_dti_FA.nii.gz  0088_dti_FA.nii.gz
0006_dti_FA.nii.gz  0021_dti_FA.nii.gz  0040_dti_FA.nii.gz  0056_dti_FA.nii.gz  0074_dti_FA.nii.gz  0089_dti_FA.nii.gz
0007_dti_FA.nii.gz  0022_dti_FA.nii.gz  0041_dti_FA.nii.gz  0058_dti_FA.nii.gz  0075_dti_FA.nii.gz  0090_dti_FA.nii.gz
0008_dti_FA.nii.gz  0023_dti_FA.nii.gz  0042_dti_FA.nii.gz  0059_dti_FA.nii.gz  0076_dti_FA.nii.gz  0091_dti_FA.nii.gz
0009_dti_FA.nii.gz  0024_dti_FA.nii.gz  0043_dti_FA.nii.gz  0061_dti_FA.nii.gz  0077_dti_FA.nii.gz  0092_dti_FA.nii.gz
0010_dti_FA.nii.gz  0027_dti_FA.nii.gz  0044_dti_FA.nii.gz  0062_dti_FA.nii.gz  0078_dti_FA.nii.gz  0093_dti_FA.nii.gz
0011_dti_FA.nii.gz  0028_dti_FA.nii.gz  0045_dti_FA.nii.gz  0064_dti_FA.nii.gz  0079_dti_FA.nii.gz  0094_dti_FA.nii.gz
0012_dti_FA.nii.gz  0029_dti_FA.nii.gz  0046_dti_FA.nii.gz  0065_dti_FA.nii.gz  0080_dti_FA.nii.gz  0095_dti_FA.nii.gz
0013_dti_FA.nii.gz  0030_dti_FA.nii.gz  0047_dti_FA.nii.gz  0066_dti_FA.nii.gz  0081_dti_FA.nii.gz  0096_dti_FA.nii.gz
0014_dti_FA.nii.gz  0031_dti_FA.nii.gz  0048_dti_FA.nii.gz  0067_dti_FA.nii.gz  0082_dti_FA.nii.gz
0015_dti_FA.nii.gz  0034_dti_FA.nii.gz  0049_dti_FA.nii.gz  0068_dti_FA.nii.gz  0083_dti_FA.nii.gz
0016_dti_FA.nii.gz  0035_dti_FA.nii.gz  0050_dti_FA.nii.gz  0069_dti_FA.nii.gz  0084_dti_FA.nii.gz

asi que saco la lista, y tomo solo los datos de estos sujetos,

[osotolongo@brick03 tbss]$ ls data | awk -F"_" '{print $1}' > fas.list 
[osotolongo@brick03 tbss]$ (head -n 1 bioface_data_sorted.csv && while read -r x; do awk -v sbj="${x}" -F"," '{if($2==sbj) print}' bioface_data_sorted.csv; done <  fas.list) > bioface_data_dti.csv
[osotolongo@brick03 tbss]$ head bioface_data_dti.csv
PSubject,Subject,Age,Gender,Education,Attention.and.Working.Memory,Processing.speed.and.Executive.function,Language,Verbal.Learning.and.Memory,Praxis,Visual.gnosis
B002,0002,53,1,10,-0.766580753507416,-0.640726365145137,0.325607497357412,-0.506483590256652,-1.65496883150675,-0.680939684688739
B003,0003,60,1,8,-0.775829344447622,-1.92758435997598,-0.588499842116566,0.188411915334138,0.451553274414425,-0.62476340875855
B004,0004,64,1,7,0.365229529227089,-0.078687424137654,-0.28379739562524,-0.313279153068839,0.421836370550401,-0.906684675087603
B005,0005,62,1,16,0.940383261534547,0.336724978845789,0.325607497357412,-0.205112750307188,0.421836370550401,-0.906684675087603
B006,0006,64,1,6,-1.34173448581487,0.416707414517106,0.0209050508660859,0.665373444688287,-1.68468573537077,0.0998024379954218
B007,0007,62,1,9,-1.34173448581487,-1.36008617577211,-1.50260718159054,-0.230553397768359,0.421836370550401,-3.05438810752004
B008,0008,58,1,15,-0.200675612140164,1.39604181164675,0.325607497357412,0.112090842887017,0.421836370550401,1.00850813992937
B009,0009,51,1,9,0.374478120167295,0.0671339898083944,0.325607497357412,0.465053216234773,-1.68468573537077,0.670410597670127
B010,0010,62,1,8,-1.34173448581487,0.580441125865297,-0.28379739562524,-0.161348116586939,0.421836370550401,-0.906684675087603

Y ahora para cada variable a analizar solo tengo que construir el design.mat y ejecutar el randomise apropiado. A ver que datos tengo,

[osotolongo@brick03 tbss]$ head -n 1 bioface_data_sorted.csv | sed 's/,/\n/g' | cat -n
     1	PSubject
     2	Subject
     3	Age
     4	Gender
     5	Education
     6	Attention.and.Working.Memory
     7	Processing.speed.and.Executive.function
     8	Executive.function.verbal
     9	Language
    10	Verbal.Learning.and.Memory
    11	Praxis
    12	Visual.gnosis     

Por otra parte para los DTI voy a hacer,

[osotolongo@brick04 data]$ tbss_1_preproc *.nii.gz && tbss_2_reg -T && tbss_3_postreg -T && tbss_4_prestats 0.2 

OJO: Esto demora bastante, asi que lo envias y ahi lo dejas, con suerte ya mañana estara hecho!

y despues de todo esto lo que hacemos es lanzar los randomise a traves de slurm,

y al lanzarlo, crea el entorno adecuado, ejecuta los randomise, y extrae los resultados posteriormente,

[osotolongo@brick04 tbss]$ ./prandomise.py -d bioface_data_dti.csv 
[osotolongo@brick04 tbss]$ head tbss_cs6/design.mat 
/NumWaves 4
/NumPoints 87
/Matrix
53 1 10 -0.766580753507416
60 1 8 -0.775829344447622
64 1 7 0.365229529227089
62 1 16 0.940383261534547
64 1 6 -1.34173448581487
62 1 9 -1.34173448581487
58 1 15 -0.200675612140164
 
[osotolongo@brick04 tbss]$ queue
   JOBID PARTITION                                 NAME     USER ST       TIME  NODES NODELIST(REASON)
  218903      fast                            randomise osotolon PD       0:00      1 (Dependency)
  218905      fast                            randomise osotolon PD       0:00      1 (Dependency)
  218907      fast                            randomise osotolon PD       0:00      1 (Dependency)
  218909      fast                            randomise osotolon PD       0:00      1 (Dependency)
  218911      fast                            randomise osotolon PD       0:00      1 (Dependency)
  218913      fast                            randomise osotolon PD       0:00      1 (Dependency)
  218914      fast                            randomise osotolon PD       0:00      1 (Dependency)
  218902      fast                            randomise osotolon  R      42:18      1 brick01
  218904      fast                            randomise osotolon  R      42:18      1 brick01
  218906      fast                            randomise osotolon  R      42:18      1 brick01
  218908      fast                            randomise osotolon  R      42:18      1 brick01
  218910      fast                            randomise osotolon  R      42:18      1 brick01
  218912      fast                            randomise osotolon  R      42:18      1 brick01

y ahi tienes para tres horas mas de calculo, pero despues(llega email de finalizacion) podemos saber rapidamente done tenemos resultados haciendo,

[osotolongo@brick03 tbss]$ for x in $(seq 6 12); do echo " var ${x} "; cat tbss_cs${x}/*_index.txt; done
 var 6 
Cluster Index	Voxels	MAX	MAX X (vox)	MAX Y (vox)	MAX Z (vox)	COG X (vox)	COG Y (vox)	COG Z (vox)
 var 7 
Cluster Index	Voxels	MAX	MAX X (vox)	MAX Y (vox)	MAX Z (vox)	COG X (vox)	COG Y (vox)	COG Z (vox)
 var 8 
Cluster Index	Voxels	MAX	MAX X (vox)	MAX Y (vox)	MAX Z (vox)	COG X (vox)	COG Y (vox)	COG Z (vox)
 var 9 
Cluster Index	Voxels	MAX	MAX X (vox)	MAX Y (vox)	MAX Z (vox)	COG X (vox)	COG Y (vox)	COG Z (vox)
1	53880	0.994	100	144	93	89	110	88.1
 var 10 
Cluster Index	Voxels	MAX	MAX X (vox)	MAX Y (vox)	MAX Z (vox)	COG X (vox)	COG Y (vox)	COG Z (vox)
1	55983	0.997	58	59	80	89.4	107	87.4
 var 11 
Cluster Index	Voxels	MAX	MAX X (vox)	MAX Y (vox)	MAX Z (vox)	COG X (vox)	COG Y (vox)	COG Z (vox)
 var 12 
Cluster Index	Voxels	MAX	MAX X (vox)	MAX Y (vox)	MAX Z (vox)	COG X (vox)	COG Y (vox)	COG Z (vox)

Ahora hago un tbss_fill de los que tienen resultados,

[osotolongo@brick03 tbss]$ tbss_fill tbss_cs9/tbss_cs9_tfce_corrp_tstat1.nii.gz 0.95 data/stats/mean_FA tbss_cs9/tbss_fill
[osotolongo@brick03 tbss]$ tbss_fill tbss_cs10/tbss_cs10_tfce_corrp_tstat1.nii.gz 0.95 data/stats/mean_FA tbss_cs10/tbss_fill

y los miro encima de la plantilla,

[osotolongo@brick03 tbss]$ fslview_deprecated data/stats/mean_FA data/stats/mean_FA_skeleton -l Green -b 0.2,0.8 tbss_cs9/tbss_fill -l Red-Yellow -b 0.05,0.2
Language Verbal Learning and Memory
neuroimagen/bioface_tbss.txt · Last modified: 2021/12/24 11:42 by osotolongo