Fieldmap-less SDC correction not working [fmriprep]

Summary of what happened:

Hi there,

In my project I have a PEPOLAR scheme for sdc correction and made everything work perfectly. However, I have a couple subjects for whom I don’t have fmaps collected. For some reason, SyN-based SDC was not run whenever fmaps weren’t in the directory, even if --use-syn-sdc and --force-syn are present. Fmriprep finishes with no error, just doesn’t perform syn-based sdc.

Thanks in advance.

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

#!/bin/bash
#SBATCH --job-name=fmri_nofmap_pipeline
#SBATCH --output=pipeline_nofmap_%A_%a.out
#SBATCH --error=pipeline_nofmap_%A_%a.err
#SBATCH --ntasks=1                    # Two tasks for simultaneous execution
#SBATCH --cpus-per-task=4             # 8 CPUs per task
#SBATCH --mem=24G                    # 127GB of memory
#SBATCH --time=48:00:00               # 48 hours
#SBATCH --partition=normal            # Partition to use

ml load contribs
ml load poldrack
ml load fsl
ml load system ruse

export TEMPLATEFLOW_HOME=~/.cache/templateflow

# Define paths
FMRI_PROJECT_DIR="/scratch/groups/nolanw/OCD_TMS_fMRI_Data_No_Fmap"
FMRI_OUTPUT_DIR="$FMRI_PROJECT_DIR/fmriprep_output"
FMRI_WORK_DIR="$FMRI_PROJECT_DIR/fmriprep_work"
LICENSE_FILE="/scratch/groups/nolanw/freesurfer_license.txt"
FMRIPREP_SIF="/scratch/groups/nolanw/fmriprep_24.1.1.sif"
QSIPREP_SIF="/scratch/groups/nolanw/qsiprep-1.0.0rc1.sif"

# Generate a list of all subjects dynamically
SUBJECTS=($(ls -d $FMRI_PROJECT_DIR/sub-* | xargs -n 1 basename))
SUBJECT=${SUBJECTS[$SLURM_ARRAY_TASK_ID]}  # Get the subject for this job array
PARTICIPANT_LABEL=$(echo $SUBJECT | cut -d- -f2)  # Extract subject ID

echo "Processing subject: $PARTICIPANT_LABEL"


# Run fMRIPrep in the background
singularity run --cleanenv \
    -B $FMRI_PROJECT_DIR:/data:ro \
    -B $FMRI_OUTPUT_DIR:/out \
    -B $FMRI_WORK_DIR:/work \
    -B $LICENSE_FILE:/fs_license.txt \
    -B ~/.cache/templateflow:/templateflow \
    $FMRIPREP_SIF \
    /data /out participant \
    --participant-label $PARTICIPANT_LABEL \
    --fs-license-file /fs_license.txt \
    --output-spaces MNI152NLin2009cAsym T1w \
    --me-output-echos \
    --skip-bids-validation \
   --use-syn-sdc \
    --force-syn \
    --nthreads 8 \
    --omp-nthreads 4 \
    --work-dir /work > fmriprep_${PARTICIPANT_LABEL}.out 2> fmriprep_${PARTICIPANT_LABEL}.err &

FMRIPREP_PID=$!  # Capture the process ID of fMRIPrep


# Wait for both processes to finish
wait $FMRIPREP_PID
echo "fMRIPrep completed for subject: $PARTICIPANT_LABEL"


echo "Completed processing for subject: $PARTICIPANT_LABEL"

Version:

24.1.1

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

Singularity

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

Data is BIDS validated.

I skipped BIDS validation here.

Relevant log outputs (up to 20 lines):

250110-16:46:39,559 nipype.workflow IMPORTANT:
	 Running fMRIPrep version 24.1.1

         License NOTICE ##################################################
         fMRIPrep 24.1.1
         Copyright The NiPreps Developers.
         
         This product includes software developed by
         the NiPreps Community (https://nipreps.org/).
         
         Portions of this software were developed at the Department of
         Psychology at Stanford University, Stanford, CA, US.
         
         This software is also distributed as a Docker container image.
         The bootstrapping file for the image ("Dockerfile") is licensed
         under the MIT License.
         
         This software may be distributed through an add-on package called
         "Docker Wrapper" that is under the BSD 3-clause License.
         #################################################################
250110-16:46:39,882 nipype.workflow IMPORTANT:
	 Building fMRIPrep's workflow:
           * BIDS dataset path: /data.
           * Participant list: ['53879s005'].
           * Run identifier: 20250110-164617_678ec2dd-b37f-4eb5-ba24-bf248620cf16.
           * Output spaces: MNI152NLin2009cAsym:res-native T1w.
           * Pre-run FreeSurfer's SUBJECTS_DIR: /out/sourcedata/freesurfer.
250110-16:46:40,867 nipype.workflow INFO:
	 ANAT Stage 1: Adding template workflow
250110-16:46:41,708 nipype.workflow INFO:
	 ANAT Stage 2: Preparing brain extraction workflow
250110-16:46:41,850 nipype.workflow INFO:
	 ANAT Stage 3: Preparing segmentation workflow
250110-16:46:41,857 nipype.workflow INFO:
	 ANAT Stage 4: Preparing normalization workflow for ['MNI152NLin2009cAsym']
250110-16:46:41,873 nipype.workflow INFO:
	 ANAT Stage 5: Preparing surface reconstruction workflow
250110-16:46:41,903 nipype.workflow INFO:
	 ANAT Stage 6: Preparing mask refinement workflow
250110-16:46:41,907 nipype.workflow INFO:
	 ANAT No T2w images provided - skipping Stage 7
250110-16:46:41,907 nipype.workflow INFO:
	 ANAT Stage 8: Creating GIFTI surfaces for ['white', 'pial', 'midthickness', 'sphere_reg', 'sphere']
250110-16:46:41,935 nipype.workflow INFO:
	 ANAT Stage 8: Creating GIFTI metrics for ['thickness', 'sulc']
250110-16:46:41,946 nipype.workflow INFO:
	 ANAT Stage 8a: Creating cortical ribbon mask
250110-16:46:41,952 nipype.workflow INFO:
	 ANAT Stage 9: Creating fsLR registration sphere
250110-16:46:41,963 nipype.workflow INFO:
	 ANAT Stage 10: Creating MSM-Sulc registration sphere
250110-16:46:42,559 nipype.workflow INFO:
	 No single-band-reference found for sub-53879s005_ses-V15_task-resting_run-01_echo-02_bold.nii.gz.
250110-16:46:42,695 nipype.workflow INFO:
	 Stage 1: Adding HMC boldref workflow
250110-16:46:42,710 nipype.workflow INFO:
	 Stage 2: Adding motion correction workflow
250110-16:46:42,726 nipype.workflow INFO:
	 Stage 3: Adding coregistration boldref workflow
250110-16:46:42,808 nipype.workflow IMPORTANT:
	 BOLD series will be slice-timing corrected to an offset of 0.525s.
250110-16:46:43,61 nipype.workflow INFO:
	 No single-band-reference found for sub-53879s005_ses-V15_task-resting_run-01_echo-03_bold.nii.gz.
250110-16:46:43,135 nipype.workflow INFO:
	 Stage 1: Adding HMC boldref workflow
250110-16:46:43,144 nipype.workflow INFO:
	 Stage 2: Adding motion correction workflow
250110-16:46:43,159 nipype.workflow INFO:
	 Stage 3: Adding coregistration boldref workflow
250110-16:46:43,225 nipype.workflow IMPORTANT:
	 BOLD series will be slice-timing corrected to an offset of 0.525s.
250110-16:46:43,425 nipype.workflow INFO:
	 No single-band-reference found for sub-53879s005_ses-V15_task-resting_run-02_echo-01_bold.nii.gz.
250110-16:46:43,491 nipype.workflow INFO:
	 Stage 1: Adding HMC boldref workflow
250110-16:46:43,498 nipype.workflow INFO:
	 Stage 2: Adding motion correction workflow
250110-16:46:43,504 nipype.workflow INFO:
	 Stage 3: Adding coregistration boldref workflow
250110-16:46:43,560 nipype.workflow IMPORTANT:
	 BOLD series will be slice-timing corrected to an offset of 0.525s.
250110-16:46:43,730 nipype.workflow INFO:
	 No single-band-reference found for sub-53879s005_ses-V15_task-resting_run-02_echo-02_bold.nii.gz.
250110-16:46:43,794 nipype.workflow INFO:
	 Stage 1: Adding HMC boldref workflow
250110-16:46:43,801 nipype.workflow INFO:
	 Stage 2: Adding motion correction workflow
250110-16:46:43,806 nipype.workflow INFO:
	 Stage 3: Adding coregistration boldref workflow

Screenshots / relevant information: