FSL Topup Field Mapping - neuropsytox/Documentation GitHub Wiki
Se requiere el archivo funcional normal y el de la dirección opuesta.
Con fslroi primero se extraen volumenes de cada archivo nifti. Sugiero los 3 primeros volúmenes.
Primero el funcional normal:
fslroi sub-99_ses-01_task-switch_bold.nii.gz sub-99_ses-01_task-switch_bold-b0_blip_down 0 3
Luego el funcional opuesto:
fslroi sub-99_ses-01_task-switch_bold-pepolar.nii.gz sub-99_ses-01_task-switch_bold-b0_blip_up 0 3
Luego mezclar ambos archivos usando fslmerge
fslmerge -t sub-99_ses-01_task-switch_bold-both_b0 sub-99_ses-01_task-switch_bold-b0_blip_down.nii.gz sub-99_ses-01_task-switch_bold-b0_blip_up.nii.gz
Recordar crear un archivo de texto que le diga a FSL cuantos volúmenes hay, cual es el opuesto (eje y suponemos) y cual es su Readout Time.
0 1 0 0.021328
0 1 0 0.021328
0 1 0 0.021328
0 -1 0 0.021328
0 -1 0 0.021328
0 -1 0 0.021328
Ya con este archivo se corre topup:
topup --imain=sub-99_ses-01_task-switch_bold-both_b0.nii.gz --datain=acqparams.txt --config=b02b0.cnf --out=sub-99_ses-01_task-switch_bold_topup --fout=sub-99_ses-01_task-switch_bold_field -v
Finalmente se aplica el topup para crear el nuevo archivo. Este es solo si tuvieramos 2 resonancias funcionales con mismo numero de volúmenes pero en direcciones opuestas:
applytopup --imain=sub-99_ses-01_task-switch_bold.nii.gz,sub-99_ses-01_task-switch_bold-pepolar.nii.gz --inindex=1,4 --datain=acqparams.txt --topup=sub-99_ses-01_task-switch_bold_topup --out=sub-99_ses-01_task-switch_bold_field --verbose
Pero como solo es una secuencia con volúmenes completos y la secuencia opuesta solo se usó para crear el field map, se usa:
applytopup --imain=sub-99_ses-01_task-switch_bold.nii.gz --inindex=1 --datain=acqparams.txt --method=jac --topup=sub-99_ses-01_task-switch_bold_topup --out=sub-99_ses-01_task-switch_bold-fmapcorr --verbose
El archivo resultante debe estar corregido.
Si tienes cortes impares (i.e. 47), no deja correr topup con el Configuration file b02b0.cnf porque hace subsampling con 2.
Topup::topup_clp::topup_clp: Subsampling levels incompatible with image data.
Correr mejor el b02b0_1.cnf que es lo mismo pero hace subsampling 1
topup --imain=sub-99_ses-01_task-switch_bold-both_b0.nii.gz --datain=acqparams.txt --config=b02b0_1.cnf --out=sub-99_ses-01_task-switch_bold_topup --fout=sub-99_ses-01_task-switch_bold_field -v
Si queremos pasar los field maps a SPM por ejemplo para usarlo en CONN Toolbox o SPM directamente, podemos usar este comando:
fslchfiletype NIFTI_PAIR ${fieldmap}/${i}_field ${fieldmap}/fpm_${i}_field_spm
Example
#!/bin/bash
#######################################################
# SCRIPT FOR Field Mapping using TOPUP
# Written by Eduardo Garza-Villarreal
#######################################################
# Variables
rootdir=/media/INP_MRI_Backup/projects/INP/conectome_inp
scripts=/media/INP_MRI_Backup/projects/INP/conectome_inp/scripts
fieldmap=/media/INP_MRI_Backup/projects/INP/conectome_inp/data/preprocessed/rsfmri/fieldmapping
nii=/media/INP_MRI_Backup/projects/INP/conectome_inp/data/nifti
params=/media/INP_MRI_Backup/projects/INP/conectome_inp/data/preprocessed/rsfmri/acqparams
#cat ${scripts}/files_fmepi1_2.txt | while read i;
for i in AD_043 HC_111;
do
echo "!!!!!!!!!!!!! SUBJECT ${i} !!!!!!!!!!!!!!!!!!!!!!!!"
echo fslroi ${nii}/fmri/${i}_fmri.nii ${fieldmap}/${i}_b0_blip_down 0 3
fslroi ${nii}/fmri/${i}_fmri.nii ${fieldmap}/${i}_b0_blip_down 0 3
echo fslroi ${nii}/fm_fmri/${i}_fmfmri ${fieldmap}/${i}_b0_blip_up 0 3
fslroi ${nii}/fm_fmri/${i}_fmfmri ${fieldmap}/${i}_b0_blip_up 0 3
echo fslmerge -t ${fieldmap}/${i}_both_b0 ${fieldmap}/${i}_b0_blip_down ${fieldmap}/${i}_b0_blip_up
fslmerge -t ${fieldmap}/${i}_both_b0 ${fieldmap}/${i}_b0_blip_down ${fieldmap}/${i}_b0_blip_up
echo "!!!!!!!!!!!!! TOPUP SUBJECT ${i} !!!!!!!!!!!!!!!!!!!!!!!!"
topup --imain=${fieldmap}/${i}_both_b0 --datain=${params}/acqparams1.txt --config=b02b0.cnf --out=${fieldmap}/${i}_topup --fout=${fieldmap}/${i}_field -v
echo "!!!!!!!!!!!!! SPM CONVERSION SUBJECT ${i} !!!!!!!!!!!!!!!!!!!!!!!!"
echo fslchfiletype NIFTI_PAIR ${fieldmap}/${i}_field ${fieldmap}/${i}_field_spm
fslchfiletype NIFTI_PAIR ${fieldmap}/${i}_field ${fieldmap}/fpm_${i}_field_spm
#applytopup --imain=${nii}/fmri/${i}_fmri.nii,${nii}/fm_fmri/${i}_fmfmri --inindex=1,2 --datain=${params}/acqparams1.txt --topup=${fieldmap}/${i}_topup --out=${fieldmap}/${i}_fmri_uw --verbose
echo "!!!!!!!!!!!!! SUBJECT ${i} Finished !!!!!!!!!!!!!!!!!!!!!!!!"
done