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