Fmriprep on multi-echo: Susceptibility distortion correction

Summary of what happened:

I’m running fmriprep on multi-echo data (3 echos) and want to do susceptibility distortion correction with a gradient-echo fieldmap (2 magnitude images, 1 phase image). I put the following info into the json-files of the fieldmap (e.g. here the first magnitude image):

"IntendedFor": [
        "bids::sub-01/ses-1/func/sub-01_ses-1_task-ConcLoc_acq-25iso3echosMB4P2_echo-1_bold.nii",
        "bids::sub-01/ses-1/func/sub-01_ses-1_task-ConcLoc_acq-25iso3echosMB4P2_echo-3_bold.nii",
        "bids::sub-01/ses-1/func/sub-01_ses-1_task-ConcLoc_acq-25iso3echosMB4P2_echo-2_bold.nii",
        "bids::sub-01/ses-1/func/sub-01_ses-1_task-AudLoc_acq-25iso3echosMB4P2_echo-3_bold.nii",
        "bids::sub-01/ses-1/func/sub-01_ses-1_task-AudLoc_acq-25iso3echosMB4P2_echo-2_bold.nii",
        "bids::sub-01/ses-1/func/sub-01_ses-1_task-AudLoc_acq-25iso3echosMB4P2_echo-1_bold.nii",
        "bids::sub-01/ses-1/func/sub-01_ses-1_task-MotLoc_acq-25iso3echosMB4P2_echo-3_bold.nii",
        "bids::sub-01/ses-1/func/sub-01_ses-1_task-MotLoc_acq-25iso3echosMB4P2_echo-2_bold.nii",
        "bids::sub-01/ses-1/func/sub-01_ses-1_task-MotLoc_acq-25iso3echosMB4P2_echo-1_bold.nii"
    ],
    "B0FieldIdentifier": "magnitude1"

But SDC is not applied.

Am I missing something to turn on the correction?

Thanks in advance!

Command used (and if a helper script was used, a link to the helper script or the command generated):

And my fmriprep call is:

singularity run -B /data/pt_02907 -B /data/pt_01756 -B /data/u_software/fmriprep/templateflow:/home/fmriprep/.cache/templateflow 
--cleanenv /data/pt_02907/Scripts/fmriprep/fmriprep-23.2.0.simg 
/data/pt_02907/Data/BIDS /data/pt_02907/Derivatives/fmriprep/output_23.2.0 
--fs-license-file /data/pt_02907/Scripts/fmriprep/license.txt
 --participant-label 01 --output-space T1w MNI152NLin2009cAsym fsaverage fsnative 
--nthreads 20 -w /data/pt_02907/Derivatives/fmriprep/wd 

Version:

23.2.0

Environment (Docker, Singularity / Apptainer, custom installation):

Singularity

Data formatted according to a validatable standard? Please provide the output of the validator:

PASTE VALIDATOR OUTPUT HERE

Relevant log outputs (up to 20 lines):

Unfortunately, susceptibilty distortion correction is currently not applied. The html-file reads:

Susceptibility distortion correction: None

Screenshots / relevant information:


I don’t believe fMRIPrep supports BIDS-URIs yet, so I would stick with B0FieldIdentifier and B0FieldSource. What do you have for B0FieldIdentifier for the other field map files, and B0FieldSource for the BOLD files?

If you want to stick with IntendedFor before BIDS URI is supported, you could remove bids::sub-01/ from each entry.

Best,
Steven

Oh I see. So this should work?

"IntendedFor": [
        "ses-1/func/sub-01_ses-1_task-ConcLoc_acq-25iso3echosMB4P2_echo-1_bold.nii",
        "ses-1/func/sub-01_ses-1_task-ConcLoc_acq-25iso3echosMB4P2_echo-3_bold.nii",
        "ses-1/func/sub-01_ses-1_task-ConcLoc_acq-25iso3echosMB4P2_echo-2_bold.nii",
        "ses-1/func/sub-01_ses-1_task-AudLoc_acq-25iso3echosMB4P2_echo-3_bold.nii",
        "ses-1/func/sub-01_ses-1_task-AudLoc_acq-25iso3echosMB4P2_echo-2_bold.nii",
        "ses-1/func/sub-01_ses-1_task-AudLoc_acq-25iso3echosMB4P2_echo-1_bold.nii",
        "ses-1/func/sub-01_ses-1_task-MotLoc_acq-25iso3echosMB4P2_echo-3_bold.nii",
        "ses-1/func/sub-01_ses-1_task-MotLoc_acq-25iso3echosMB4P2_echo-2_bold.nii",
        "ses-1/func/sub-01_ses-1_task-MotLoc_acq-25iso3echosMB4P2_echo-1_bold.nii"
    ]

That is, I also leave out B0FieldIdentifier and B0FieldSource for now?

That should work. The b0identifier method would be a more permanent solution though.

Thanks! I believe I have not fully understood the b0identifier method yet. Could you explain how to apply this here?

Hi @PhilK,

Something to note, in your case, it’s really mainly important that your phasediff file has the information to correspond to bold images.

In your phdiff fmap json, put something like

"B0FieldIdentifier": "fmri_fmap"

In your BOLD jsons, then put

"B0FieldSource": "fmri_fmap"

Then the fmap and BOLD files will be linked.

Best,
Steven

Ah fantastic, that’s very clear, thank you!

All the best,
Philipp