Force fMRIPrep to use filedmap-less approach for distortion correction of BOLD

Summary of what happened:

I’m preprocessing 2 functional datasets, and I had a couple of questions about distortion correction:

  • For the first dataset, I want to use the fieldmap-less approach for distortion correcting the BOLD runs. For some reason, when no fieldmaps are present in the rawdata folder, fmriprep seems to skip distortion correction altogether. The command I used for this dataset is attached in the next section, and the summary for one of the runs from the HTML output is at the end of the post. How do I force fmriprep to use the fieldmap-less approach?
  • In a separate dataset, I have a set of task-based runs and two resting state runs. The fieldmaps were collected on the same day as the task-based scans - so I want to use the phasediff approach for the task runs, but use the fieldmap-less approach for the resting state runs. Is it possible to do this in one step? Or do I run fmriprep twice? If I do run fmriprep twice, will it re-use the anatomical preprocessing, freesurfer, etc. the second time?
  • Related to the above question - It seems that when fieldmap scans scans are available (inside rawdata/sub-XXXX/fmap), fmriprep always using them for distortion correction. Is there a way to force fmriprep to ignore the fieldmaps and use the fieldmap-less approach? As mentioned in the usage notes, adding the --use-syn-sdc flag only uses the fieldmap-less approach for the anatomy. I also tried using the --ignore fieldmaps flag, but then it skips distortion correction altogether.

Command used:

fmriprep \
    "$input_dir" \
    "$output_dir" \
    participant \
    --work-dir "$working_dir" \
    --fs-license-file "$freesurfer_dir"/license.txt \
    --participant-label "$sid" \
    --output-spaces anat \
    --mem-mb $SLURM_MEM_PER_NODE \
    --n-cpus $SLURM_CPUS_PER_TASK

Version:

fmriprep version 23.0.2

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

Preprocessing is run on a high-performance computing cluster by loading the apptainer and fmriprep modules.

Relevant log outputs (up to 20 lines):

Unfortunately I’m not allowed to upload the slurm output because I’m a new user on Neurostars :frowning:

Screenshots / relevant information:

Summary

  • Original orientation: LAS
  • Repetition time (TR): 1.87s
  • Phase-encoding (PE) direction: Anterior-Posterior
  • Single-echo EPI sequence.
  • Slice timing correction: Applied
  • Susceptibility distortion correction: None
  • Registration: FreeSurfer bbregister (boundary-based registration, BBR) - 6 dof
  • Non-steady-state volumes: 2

Hi @mrinmayik,

You have several options for forcing syn

  1. Simply remove the fmaps from the bids folder
  2. Use a bids filter file that does not include fmaps
  3. Include —ignore fieldmaps and —use-syn-sdc and —force-syn .

The easiest thing might just be to remove the IntendedFor entries if you want to not apply field maps to a certain file.

Best,
Steven

Thanks a lot for your quick response, @Steven!

  1. Simply remove the fmaps from the bids folder

I’ve tried that, but then it seems to skip DC altogether. Do I need the --force-syn flag in such cases? I also haven’t tried using all three flags, so I’ll give that a shot.

The easiest thing might just be to remove the IntendedFor entries if you want to not apply field maps to a certain file.

Regarding this suggestion, do I include the following in the JSON file for the fieldmaps, and leave the resting state runs out of this field?

“IntendedFor”:[
“func/sub-001_task-sceneviewing_run-01_bold.nii.gz”,
“func/sub-001_task-sceneviewing_run-02_bold.nii.gz”,
“func/sub-001_task-sceneviewing_run-03_bold.nii.gz”,
“func/sub-001_task-sceneviewing_run-04_bold.nii.gz”,
“func/sub-001_task-sceneviewing_run-05_bold.nii.gz”,
“func/sub-001_task-sceneviewing_run-06_bold.nii.gz”,
“func/sub-001_task-sceneviewing_run-07_bold.nii.gz”,
“func/sub-001_task-sceneviewing_run-08_bold.nii.gz”
],

Hi @mrinmayik,

You might, try it out.

Looks good to me.

Best,
Steven