fMRIPrep skips SDC despite valid fieldmap + magnitude files (IntendedFor correctly set)

Summary of what happened:

Hello everyone,
I am running fMRIPrep (vs23.2.3, Docker) on resting state fMRI data, and the preprocessing completes successfully. However, susceptibility distortion correction (SDC) is being skipped, even though fieldmap data are present and correctly structured.

Some jsons below:
/media/fmrilab/fmridata1/Emma_HB_BEACON_DFC/BEACON/NII/sub-BEACON01/ses-1/func

{
    "TaskName": "rest",
    "Modality": "MR",
    "PhaseEncodingDirection": "j",
    "MagneticFieldStrength": 3,
    "EffectiveEchoSpacing": 0.0002523,
    "MultibandAccelerationFactor": 3,
      "ParallelReductionFactorInPlane": 2,
    "ImagingFrequency": 127.775,
    "Manufacturer": "Philips",
    "ManufacturersModelName": "Ingenia_Elition_X",
    "BodyPartExamined": "BRAIN",
    "PatientPosition": "HFS",
    "SoftwareVersions": "5.7.1_5.7.1.2",
    "MRAcquisitionType": "2D",
    "ScanningSequence": "GR",
    "SequenceVariant": "SK",
    "ScanOptions": "FS",
    "ImageType": ["ORIGINAL", "PRIMARY", "M", "FFE", "M", "FFE"],
    "SeriesNumber": 501,
    "AcquisitionTime": "23:13:18.320000",
    "AcquisitionNumber": 5,
    "PhilipsRWVSlope": 0.830769,
    "PhilipsRWVIntercept": 0,
    "PhilipsRescaleSlope": 0.830769,
    "PhilipsRescaleIntercept": 0,
    "PhilipsScaleSlope": 0.0648714,
    "UsePhilipsFloatNotDisplayScaling": 1,
    "SliceThickness": 2.5,
    "SpacingBetweenSlices": 2.811,
    "SAR": 0.0881832,
    "EchoTime": 0.03,
    "RepetitionTime": 1.02,
    "FlipAngle": 52,
    "CoilString": "MULTI_COIL",
    "PartialFourier": 0.5,
    "PercentPhaseFOV": 100,
    "EchoTrainLength": 41,
    "PhaseEncodingSteps": 82,
    "AcquisitionMatrixPE": 82,
    "ReconMatrixPE": 96,
    "PixelBandwidth": 2416,
    "PhaseEncodingAxis": "j",
    "ImageOrientationPatientDICOM": [
        0.999814,
        0.0148244,
        -0.012361,
        -0.0160474,
        0.994284,
        -0.105554    ],
    "InPlanePhaseEncodingDirectionDICOM": "COL",
    "ConversionSoftware": "dcm2niix",
    "ConversionSoftwareVersion": "v1.0.20181125  (JP2:OpenJPEG) GCC9.3.0"
}

fieldmap (name, pathway and JSON)
sub-BEACON01_ses-1_fieldmap.json in /media/fmrilab/fmridata1/Emma_HB_BEACON_DFC/BEACON/NII/sub-BEACON01/ses-1/fmap

{
    "Modality": "MR",
    "MagneticFieldStrength": 3,
    "ImagingFrequency": 127.775,
    "Manufacturer": "Philips",
    "ManufacturersModelName": "Ingenia_Elition_X",
    "BodyPartExamined": "BRAIN",
    "PatientPosition": "HFS",
    "SoftwareVersions": "5.7.1_5.7.1.2",
    "MRAcquisitionType": "2D",
    "ScanningSequence": "RM",
    "SequenceVariant": "SS",
    "ScanOptions": "OTHER",
    "ImageType": ["ORIGINAL", "PRIMARY", "B0", "MAP", "B0", "UNSPECIFIED"],
    "SeriesNumber": 401,
    "AcquisitionTime": "10:20:19.320000",
    "AcquisitionNumber": 4,
    "PhilipsRWVSlope": 0.0815629,
    "PhilipsRWVIntercept": -167,
    "PhilipsRescaleSlope": 0.0815629,
    "PhilipsRescaleIntercept": -167,
    "PhilipsScaleSlope": 12.285,
    "UsePhilipsFloatNotDisplayScaling": 1,
    "SliceThickness": 4,
    "SpacingBetweenSlices": 4,
    "SAR": 0.219502,
    "EchoNumber": 1,
    "FlipAngle": 80,
    "CoilString": "MULTI_COIL",
    "PercentPhaseFOV": 100,
    "PhaseEncodingSteps": 64,
    "AcquisitionMatrixPE": 64,
    "ReconMatrixPE": 64,
    "PixelBandwidth": 435,
    "PhaseEncodingAxis": "j",
    "IntendedFor":"bids::ses-1/func/sub-BEACON01_ses-1_task-rest_bold.nii.gz",
    "Units": "rad/s",
    "B0FieldIdentifier": "b0map_fmap0",
    "ImageOrientationPatientDICOM": [
        0.999803,
        0.0112664,
        0.0163186,
        -0.0112261,
        0.999934,
        -0.00255858    ],
    "InPlanePhaseEncodingDirectionDICOM": "COL",
    "ConversionSoftware": "dcm2niix",
    "ConversionSoftwareVersion": "v1.0.20181125  (JP2:OpenJPEG) GCC9.3.0"
}

magnitude (Name, pathway and JSON)

sub-BEACON01_ses-1_magnitude.json in /media/fmrilab/fmridata1/Emma_HB_BEACON_DFC/BEACON/NII/sub-BEACON01/ses-1/fmap

{
    "Modality": "MR",
    "MagneticFieldStrength": 3,
    "ImagingFrequency": 127.775,
    "Manufacturer": "Philips",
    "ManufacturersModelName": "Ingenia_Elition_X",
    "BodyPartExamined": "BRAIN",
    "PatientPosition": "HFS",
    "SoftwareVersions": "5.7.1_5.7.1.2",
    "MRAcquisitionType": "2D",
    "ScanningSequence": "GR",
    "SequenceVariant": "SS",
    "ScanOptions": "OTHER",
    "ImageType": ["ORIGINAL", "PRIMARY", "M", "FFE", "M", "FFE"],
    "SeriesNumber": 301,
    "AcquisitionTime": "00:40:34.290000",
    "AcquisitionNumber": 3,
    "PhilipsRWVSlope": 1.48132,
    "PhilipsRWVIntercept": 0,
    "PhilipsRescaleSlope": 1.48132,
    "PhilipsRescaleIntercept": 0,
    "PhilipsScaleSlope": 0.00256169,
    "UsePhilipsFloatNotDisplayScaling": 1,
    "SliceThickness": 4,
    "SpacingBetweenSlices": 4,
    "SAR": 0.219502,
    "EchoNumber": 1,
    "EchoTime": 0.007001,
    "RepetitionTime": 0.650002,
    "FlipAngle": 80,
    "CoilString": "MULTI_COIL",
    "PercentPhaseFOV": 100,
    "PhaseEncodingSteps": 64,
    "AcquisitionMatrixPE": 64,
    "ReconMatrixPE": 64,
    "PixelBandwidth": 435,
    "PhaseEncodingAxis": "j",
    "ImageOrientationPatientDICOM": [
        0.999327,
        -0.015659,
        0.0331684,
        0.0154202,
        0.999853,
        0.00744253    ],
    "InPlanePhaseEncodingDirectionDICOM": "COL",
    "ConversionSoftware": "dcm2niix",
    "IntendedFor": "ses-1/func/sub-BEACON01_ses-1_task-rest_bold.nii.gz",
    "ConversionSoftwareVersion": "v1.0.20181125  (JP2:OpenJPEG) GCC9.3.0"
}

(also I have acq-restblip available but that should not be neccessary and i also tried to run fMRIPrep with BlipUp/Down but it skipped SDC anyways)

What I already checked:
„IntendedFor“
Proper BIDS naming
JSON formatting

Under what conditions does fMRIPrep (23.2.3) skip SDC even when fieldmap and magnitude are present and seemingly valid?
Is there any additional metadata required for direct B0 fieldmaps that could cause silent skipping?
I would greatly appreciate any suggestions on how to debug this.
Thank you!

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

docker run -ti --rm \
-v /home/fmrilab/freesurfer/license.txt:/opt/freesurfer/license.txt:ro \
-v /media/fmrilab/fmridata1/Emma_HB_BEACON_DFC/BEACON/NII:/data:rw \
-v /media/fmrilab/fmridata1/Emma_HB_BEACON_DFC/BEACON/BEACON_fmriprep_output3:/out \
nipreps/fmriprep:23.2.3 \
/data /out participant \
--participant-label BEACON01  \
--nthreads 12 --omp-nthreads 6 -\
-stop-on-first-crash \
--ignore slicetiming \
--fd-spike-threshold 0.3 \
-w /media/fmrilab/fmridata1/Emma_HB_BEACON_DFC/BEACON/tmp \
--fs-no-reconall

Version:

23.2.3

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

Docker

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):

PASTE LOG OUTPUT HERE

Screenshots / relevant information:


Hi @Emma2507, and welcome to neurostars,

In the future, please submit software support posts under the Software Support post category and post template. This helps format your post for readability and prompts you for important information we can help debug. You can see I have edited it in for you this time.

Your version of fMRIPrep is too old to recognize the BIDS URI version of IntendedFor. You would need to change it to relative path IntendedFor (like you have for the magnitude file), or even better, update fMRIPrep.

Best,
Steven