SYN-SDC not finding phase-encoding direction

Summary of what happened:

BIDS validator is triggering an error about phase encoding, but our .json file looks normal and similar to other files that have passed BIDS validation before. Not sure if we are missing something.

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

import os
import glob

# Set directories
subjects = list(glob.glob('/home/groups/cbohon/EmotEat/mri_data/sub-*')) # generates list of subjects in BIDS folder
dpSub = subjects
for i in range (len(subjects)):
    sj = dpSub[i]
    sj_label = sj[-3]+sj[-2]+sj[-1] # extracts subject number
    cmd = 'singularity run --cleanenv /home/groups/cbohon/fmriprep/fmriprep-22.0.2.simg /home/groups/cbohon/EmotEat/mri_data /home/groups/cbohon/EmotEat/analysis/fmriprep participant --participant-label %s -w /scratch/groups/cbohon/work2 --omp-nthreads 8 --nthreads 12 --mem_mb 30000 --ignore fieldmaps --use-syn-sdc --fs-license-file /home/groups/cbohon/freesurfer/license.txt' %sj_label
    os.system("sbatch -p cbohon -t 48:00:00 --mem=64000 --wrap=\"" + cmd + "\"") # takes the singularity run command and allows for batch submission of multiple jobs"



Environment (Docker, Singularity, custom installation):

HPC cluster running Singularity

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


	e[33m1: [WARN] You should define 'SliceTiming' for this file. If you don't provide this information slice time correction will not be possible. 'Slice Timing' is the time at which each slice was acquired within each volume (frame) of the acquisition. Slice timing is not slice order -- rather, it is a list of times containing the time (in seconds) of each slice acquisition in relation to the beginning of volume acquisition. (code: 13 - SLICE_TIMING_NOT_DEFINED)e[39m

e[36m	Please visit for existing conversations about this issue.e[39m

	e[33m2: [WARN] The recommended file /README is missing. See Section 03 (Modality agnostic files) of the BIDS specification. (code: 101 - README_FILE_MISSING)e[39m

e[36m	Please visit for existing conversations about this issue.e[39m

	e[33m3: [WARN] The Authors field of dataset_description.json should contain an array of fields - with one author per field. This was triggered based on the presence of only one author field. Please ignore if all contributors are already properly listed. (code: 102 - TOO_FEW_AUTHORS)e[39m

e[36m	Please visit for existing conversations about this issue.e[39m

        e[34me[4mSummary:e[24me[39m                  e[34me[4mAvailable Tasks:e[24me[39m        e[34me[4mAvailable Modalities:e[24me[39m 
        404 Files, 10.68GB                                MRI                   
        50 - Subjects                                                           
        1 - Session

Relevant log outputs (up to 20 lines):

Here is the error message in the slurm output:

ValueError: Fieldmap-less (SyN) estimation was requested, but PhaseEncodingDirection information appears to be absent.
INFO:    Cleanup error: while unmounting /var/apptainer/mnt/session/underlay/usr directory: device or resource busy, while unmounting /var/apptainer/mnt/session/final directory: device or resource busy

Screenshots / relevant information:

Here is the .json file:

    "Modality": "MR",
	"MagneticFieldStrength": 3,
	"ImagingFrequency": 127.765,
	"Manufacturer": "GE",
	"ManufacturersModelName": "DISCOVERY MR750",
	"InstitutionName": "Stanford Lucas Center",
	"DeviceSerialNumber": "0000415723SCHMR2",
	"StationName": "lc3t3",
	"BodyPartExamined": "HEAD",
	"PatientPosition": "HFS",
	"ProcedureStepDescription": "Brain",
	"SoftwareVersions": "27\\LX\\MR Software release:DV26.0_R01_1725.a",
	"MRAcquisitionType": "2D",
	"SeriesDescription": "go-nogo1_spiral",
	"ProtocolName": "Bohon_EE_10282021",
	"ScanningSequence": "RM",
	"SequenceVariant": "NONE",
	"ScanOptions": "NONE",
	"ImageType": ["ORIGINAL", "PRIMARY", "OTHER"],
	"SeriesNumber": 4,
	"AcquisitionTime": "16:19:45.000000",
	"AcquisitionNumber": 1,
	"SliceThickness": 3.5,
	"SpacingBetweenSlices": 3.5,
	"EchoNumber": 1,
	"EchoTime": 0.03,
	"RepetitionTime": 2,
	"FlipAngle": 80,
	"CoilString": "8HRBRAIN",
	"PercentPhaseFOV": 100,
	"PercentSampling": 100,
	"AcquisitionMatrixPE": 128,
	"ReconMatrixPE": 64,
	"ParallelReductionFactorInPlane": 2,
	"PixelBandwidth": 500,
	"PhaseEncodingAxis": "i",
	"ImageOrientationPatientDICOM": [
		-0.11438	],
	"InPlanePhaseEncodingDirectionDICOM": "ROW",
	"ConversionSoftware": "dcm2niix",
	"ConversionSoftwareVersion": "v1.0.20210317"

Hi @MStern,

You need to change PhaseEncodingAxis to PhaseEncodingDirection in your JSON file(s).


Hi Steven,

Thank you for your help! I will add that. And apologies for the double post. I was unsure of how to edit the original.