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