Use_syn_sdc flag erroring out

Summary of what happened:

The flag --use-syn-sdc errors out. I am trying to process multi-band resting state data with a single scan - no field maps etc

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

This is my command:

CMD="apptainer run --cleanenv \
    	-B /path:/data \
    	-B /data/Outputs/test4/fmriprep/sourcedata/freesurfer:/fs_subjects \
    	--env SUBJECTS_DIR=/fs_subjects \
    	${CONTAINER} \
    	/data/Outputs/test4/BIDS \
    	/data/Outputs/test4/fmriprep \
    	participant \
    	--participant-label ${subjID} \
    	--session-label 01 \
    	--fs-license-file /data/Software/license.txt \
    	--ignore slicetiming \
    	--output-spaces T1w MNI152NLin2009cAsym:res-native MNI152NLin2009cAsym:res-2 \
    	--skull-strip-t1w force \
    	--skull-strip-template MNI152NLin2009cAsym \
    	--skull-strip-fixed-seed \
    	--use-syn-sdc \
    	-w /data/Outputs/test4/fmriprep \
    	-vvv"

    echo "${CMD}"
    eval "${CMD}"

Version:

25.2.3

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

Apptainer

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

After which my log reports the following

251126-15:16:43,580 nipype.workflow VERBOSE:
	 fMRIPrep config:
		[environment]
		cpu_count = 8
		exec_env = "singularity"
		free_mem = 117.3
		overcommit_policy = "heuristic"
		overcommit_limit = "50%"
		nipype_version = "1.10.0"
		templateflow_version = "25.0.4"
		version = "25.2.3"
		
		[execution]
		bids_dir = "/data/Outputs/test4/BIDS"
		bids_database_dir = "/data/Outputs/test4/fmriprep/20251126-151443_8c1b61b3-d241-46f8-8a7f-a4b127fcbe43/bids_db"
		bids_description_hash = "04d959ebeba6eed8e555cb59d91e3885bbce597101f70936810cb66e6a9ea497"
		boilerplate_only = false
		sloppy = false
		debug = []
		fmriprep_dir = "/data/Outputs/test4/fmriprep"
		fs_license_file = "/data/Software/license.txt"
		fs_subjects_dir = "/data/Outputs/test4/fmriprep/sourcedata/freesurfer"
		layout = "BIDS Layout: .../data/Outputs/test4/BIDS | Subjects: 1 | Sessions: 1 | Runs: 0"
		log_dir = "/data/Outputs/test4/fmriprep/logs"
		log_level = 10
		low_mem = false
		md_only_boilerplate = false
		notrack = false
		track_carbon = false
		country_code = "CAN"
		output_dir = "/data/Outputs/test4/fmriprep"
		me_output_echos = false
		aggr_ses_reports = 4
		output_layout = "bids"
		output_spaces = "T1w MNI152NLin2009cAsym:res-native MNI152NLin2009cAsym:res-2"
		reports_only = false
		run_uuid = "20251126-151443_8c1b61b3-d241-46f8-8a7f-a4b127fcbe43"
		processing_groups = [ "sub-01_ses-01",]
		participant_label = [ "01",]
		session_label = [ "01",]
		templateflow_home = "/path/user/.cache/templateflow"
		work_dir = "/data/Outputs/test4/fmriprep"
		write_graph = false
		
		[workflow]
		anat_only = false
		bold2anat_dof = 6
		bold2anat_init = "t1w"
		cifti_output = false
		fmap_bspline = false
		force_syn = false
		hires = true
		fs_no_resume = false
		ignore = [ "slicetiming",]
		force = []
		level = "full"
		run_msmsulc = true
		medial_surface_nan = false
		project_goodvoxels = false
		regressors_all_comps = false
		regressors_dvars_th = 1.5
		regressors_fd_th = 0.5
		run_reconall = true
		skull_strip_fixed_seed = true
		skull_strip_template = "MNI152NLin2009cAsym"
		skull_strip_t1w = "force"
		slice_time_ref = 0.5
		spaces = "T1w MNI152NLin2009cAsym:res-native MNI152NLin2009cAsym:res-2"
		subject_anatomical_reference = "first-lex"
		use_syn_sdc = "error"
		me_t2s_fit_method = "curvefit"
		
		[nipype]
		crashfile_format = "txt"
		get_linked_libs = false
		nprocs = 8
		omp_nthreads = 7
		plugin = "MultiProc"
		remove_unnecessary_outputs = true
		resource_monitor = false
		stop_on_first_crash = false
		
		[seeds]
		master = 58299
		ants = 23060
		numpy = 5193
		
		[execution.derivatives]
		
		[execution.dataset_links]
		raw = "/data/Outputs/test4/BIDS"
		templateflow = "/path/user/.cache/templateflow"
		
		[nipype.plugin_args]
		maxtasksperchild = 1
		raise_insufficient = false
251126-15:16:43,581 nipype.workflow IMPORTANT:
	 fMRIPrep started!

Screenshots / relevant information:

my rsfMRI metadata:

{
	"Modality": "MR",
	"MagneticFieldStrength": 3,
	"ImagingFrequency": 123.259,
	"Manufacturer": "Siemens",
	"ManufacturersModelName": "Prisma",
	"BodyPartExamined": "BRAIN",
	"PatientPosition": "HFS",
	"SoftwareVersions": "syngo MR E11",
	"MRAcquisitionType": "2D",
	"SeriesDescription": "ep2d_bold rest 1",
	"ProtocolName": "ep2d_bold rest 1",
	"ScanningSequence": "EP",
	"SequenceVariant": "SK",
	"ScanOptions": "FS",
	"SequenceName": "*epfid2d1_82",
	"ImageType": ["ORIGINAL", "PRIMARY", "M", "ND", "NORM", "MOSAIC"],
	"NonlinearGradientCorrection": false,
	"SeriesNumber": 9,
	"AcquisitionTime": "11:40:19.397500",
	"AcquisitionNumber": 1,
	"SliceThickness": 3,
	"SpacingBetweenSlices": 3,
	"SAR": 0.0600313,
	"EchoTime": 0.029,
	"RepetitionTime": 0.46,
	"FlipAngle": 44,
	"PartialFourier": 1,
	"BaseResolution": 82,
	"ShimSetting": [
		2383,
		-2874,
		3668,
		242,
		47,
		-179,
		2,
		-26	],
	"TxRefAmp": 247.915,
	"PhaseResolution": 1,
	"VendorReportedEchoSpacing": 0.00053,
	"ReceiveCoilName": "Head_32",
	"ReceiveCoilActiveElements": "HEA;HEP",
	"PulseSequenceDetails": "%SiemensSeq%\\ep2d_bold",
	"RefLinesPE": 12,
	"CoilCombinationMethod": "Sum of Squares",
	"ConsistencyInfo": "N4_VE11C_LATEST_20160120",
	"MultibandAccelerationFactor": 8,
	"PercentPhaseFOV": 100,
	"PercentSampling": 100,
	"EchoTrainLength": 82,
	"PhaseEncodingSteps": 82,
	"AcquisitionMatrixPE": 82,
	"ReconMatrixPE": 82,
	"BandwidthPerPixelPhaseEncode": 23.01,
	"EffectiveEchoSpacing": 0.000529992,
	"DerivedVendorReportedEchoSpacing": 0.000529992,
	"TotalReadoutTime": 0.0429294,
	"PixelBandwidth": 2770,
	"DwellTime": 2.2e-06,
	"PhaseEncodingDirection": "j-",
	"SliceTiming": [
		0.2925,
		0,
		0.22,
		0.1475,
		0.3675,
		0.0725,
		0.2925,
		0,
		0.22,
		0.1475,
		0.3675,
		0.0725,
		0.2925,
		0,
		0.22,
		0.1475,
		0.3675,
		0.0725,
		0.2925,
		0,
		0.22,
		0.1475,
		0.3675,
		0.0725,
		0.2925,
		0,
		0.22,
		0.1475,
		0.3675,
		0.0725,
		0.2925,
		0,
		0.22,
		0.1475,
		0.3675,
		0.0725,
		0.2925,
		0,
		0.22,
		0.1475,
		0.3675,
		0.0725,
		0.2925,
		0,
		0.22,
		0.1475,
		0.3675,
		0.0725	],
	"ImageOrientationPatientDICOM": [
		0.999898,
		0.00088967,
		0.0142391,
		-1.52671e-08,
		0.998054,
		-0.0623581	],
	"ImageOrientationText": "Tra>Cor(-3.6)>Sag(0.8)",
	"InPlanePhaseEncodingDirectionDICOM": "COL",
	"ConversionSoftware": "dcm2niix",
	"ConversionSoftwareVersion": "v1.0.20220720"
}

Hi @nobrain,

In the future, please use the software support category and post template to organize your post.

Is that log the last thing you see or is there any other output? How much memory/CPU are you giving the job? Does it run when you do not include that flag?

Best,
Steven

Hi Steven,

Apologies I think I missed that template. My version of fMRIPrep 25.2.3 and my dataset is formatted to BIDS nomenclature.

When I do set that flag, the fmriprep run does occur - but the use_syn_sdc sets to “error”. I am not placing any limit on the memory usage. I am working on a HPC cluster - so the job grabs whatever resources are available at that point in time.

When I don’t set that flag, this is what I see “use_syn_sdc = false”. The run does occur but no SDC is applied.

Would passing --use-syn-sdc warn help clarify the source of the issue?

Thanks very much for your help!

Are you using slurm (or a similar job scheduler) to submit to the cluster?

Do you mean to say it does not occur? Which situation is leading to the stall?

our cluster uses SGE not slurm.

To clarify, the runs always continue and complete - regardless. The SDC correction alone does not run when I explicitly call the flag (“error”) and when I don’t specify, it just sets to “false”.

I just set my flag to “warn”, and here is the report under the wf subdirectory

Node: sub_01_ses_01_wf (sdc_method_merge (utility)
===============================================================


 Hierarchy : fmriprep_25_2_wf.sub_01_ses_01_wf.sdc_method_merge
 Exec ID : sdc_method_merge


Original Inputs
———————


* axis : vstack
* in1 : <undefined>
* in2 : ['FLB ("fieldmap-less", SyN-based)']
* no_flatten : False
* ravel_inputs : False


Execution Inputs
————————


* axis : vstack
* in1 : <undefined>
* in2 : ['FLB ("fieldmap-less", SyN-based)']
* no_flatten : False
* ravel_inputs : False


Execution Outputs
————————


* out : ['FLB ("fieldmap-less", SyN-based)']


Runtime info
——————


* duration : 0.000231
* hostname : c2341
* prev_wd : /path/Scripts
* working_dir : /data/Outputs/test4/fmriprep/fmriprep_25_2_wf/sub_01_ses_01_wf/sdc_method_merge


Environment
~~~~~~~~~~~


* AFNI_IMSAVE_WARNINGS : NO
* ANTS_RANDOM_SEED : 63437
* APPTAINER_APPNAME : 
* APPTAINER_BIND : /data,/fs_subjects
* APPTAINER_COMMAND : run
* APPTAINER_CONTAINER : /path/Software/sif/fmriprep_25.2.3.sif
* APPTAINER_ENVIRONMENT : /.singularity.d/env/91-environment.sh
* APPTAINER_NAME : fmriprep_25.2.3.sif
* DEBIAN_FRONTEND : noninteractive
* FIX_VERTEX_AREA : 
* FREESURFER_HOME : /opt/freesurfer
* FSF_OUTPUT_FORMAT : nii.gz
* FSLDIR : /app/.pixi/envs/fmriprep
* FSLGECUDAQ : cuda.q
* FSLLOCKDIR : 
* FSLMACHINELIST : 
* FSLMULTIFILEQUIT : TRUE
* FSLOUTPUTTYPE : NIFTI_GZ
* FSLREMOTECALL : 
* FS_LICENSE : /data/Software/license.txt
* FS_OVERRIDE : 0
* FUNCTIONALS_DIR : /opt/freesurfer/sessions
* HOME : user
* IS_DOCKER_8395080871 : 1
* KMP_DUPLICATE_LIB_OK : True
* KMP_INIT_AT_FORK : FALSE
* LANG : C.UTF-8
* LC_ALL : C.UTF-8
* LD_LIBRARY_PATH : /.singularity.d/libs
* LOCAL_DIR : /opt/freesurfer/local
* MINC_BIN_DIR : /opt/freesurfer/mni/bin
* MINC_LIB_DIR : /opt/freesurfer/mni/lib
* MKL_NUM_THREADS : 1
* MNI_DATAPATH : /opt/freesurfer/mni/data
* MNI_DIR : /opt/freesurfer/mni
* MNI_PERL5LIB : /opt/freesurfer/mni/lib/perl5/5.8.5
* NIPYPE_NO_ET : 1
* NO_ET : 1
* OMP_NUM_THREADS : 1
* OS : Linux
* PATH : /app/.pixi/envs/fmriprep/bin:/opt/freesurfer/bin:/opt/freesurfer/tktools:/opt/freesurfer/mni/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
* PERL5LIB : /opt/freesurfer/mni/lib/perl5/5.8.5
* PROMPT_COMMAND : PS1="Apptainer> "; unset PROMPT_COMMAND
* PS1 : Apptainer> 
* PWD : /path/Scripts
* PYTHONNOUSERSITE : 1
* PYTHONWARNINGS : ignore
* SINGULARITY_BIND : /data,/fs_subjects
* SINGULARITY_CONTAINER : /path/Software/sif/fmriprep_25.2.3.sif
* SINGULARITY_ENVIRONMENT : /.singularity.d/env/91-environment.sh
* SINGULARITY_NAME : fmriprep_25.2.3.sif
* SUBJECTS_DIR : /fs_subjects
* TERM :

Not sure if this means it will run

Is there any error log with a full error trace back?

Hi Steven,

I will update this space in a while and post the full log as it gets populated.

I don’t have any previous logs when it set to “error”.

Thanks!

I just mean the logs for any run where you expected SDC to run when it didn’t.

Here is one:
fmriprep_log_old.txt (2.0 MB)

Hi @nobrain,

I see no error here relating to syn SDC, and it seems like syn sdc was not enabled for this run. There is a freesurfer error run I see, but that does not seem related. Are you sure you provided the right log?

Best,
Steven