Fmriprep failed on some subjects: anat_preproc_wf.surface_recon_wf.fsnative2t1w_xfm

Summary of what happened:

I ran fmriprep with a fully reconned freesurfer subject directory. out of 630 subjects, 24 of them had this problem.

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

PASTE CODE HERE

Version:

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

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

Node Name: fmriprep_22_0_wf.single_subject_7841485_wf.anat_preproc_wf.surface_recon_wf.fsnative2t1w_xfm
File: /scratch/junhong.yu/HCP_BIDS/output/sub-7841485/log/20240223-234903_825fc69b-1c60-4e0c-b9ae-49f2b9731bc8/crash-20240223-235605-junhong.yu-fsnative2t1w_xfm-100137c1-fa85-422f-81a9-dbdae5d21bb2.txt
Working Directory: /scratch/junhong.yu/HCP_BIDS/work/fmriprep_22_0_wf/single_subject_7841485_wf/anat_preproc_wf/surface_recon_wf/fsnative2t1w_xfm
Inputs:
args:
auto_sens: True
environ: {'SUBJECTS_DIR': '/scratch/junhong.yu/HCP_BIDS/output/sourcedata/freesurfer'}
est_int_scale: True
force_double:
force_float:
half_source:
half_source_xfm:
half_targ:
half_targ_xfm:
half_weights:
high_iterations:
in_xfm_file:
init_orient:
iteration_thresh:
least_squares:
mask_source:
mask_target:
max_iterations:
no_init:
no_multi:
out_reg_file: True
outlier_limit:
outlier_sens:
registered_file:
source_file:
subjects_dir: /scratch/junhong.yu/HCP_BIDS/output/sourcedata/freesurfer
subsample_thresh:
target_file:
trans_only:
weights_file:
write_vo2vox:
Traceback (most recent call last):
  File "/home/junhong.yu/fmriprepenv/lib/python3.7/site-packages/nipype/pipeline/plugins/multiproc.py", line 67, in run_node
    result["result"] = node.run(updatehash=updatehash)
  File "/home/junhong.yu/fmriprepenv/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
    result = self._run_interface(execute=True)
  File "/home/junhong.yu/fmriprepenv/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
    return self._run_command(execute)
  File "/home/junhong.yu/fmriprepenv/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py", line 771, in _run_command
    raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node fsnative2t1w_xfm.

Cmdline:
	mri_robust_register --satit --iscale --lta /scratch/junhong.yu/HCP_BIDS/work/fmriprep_22_0_wf/single_subject_7841485_wf/anat_preproc_wf/surface_recon_wf/fsnative2t1w_xfm/T1_robustreg.lta --mov /scratch/junhong.yu/HCP_BIDS/output/sourcedata/freesurfer/sub-7841485/mri/T1.mgz --dst /scratch/junhong.yu/HCP_BIDS/work/fmriprep_22_0_wf/single_subject_7841485_wf/anat_preproc_wf/anat_validate/sub-7841485_T1w_ras_valid.nii.gz
Stdout:
	7.4.1

	--satit: Will iterate with different SAT to ensure outliers below wlimit!
	--iscale: Enabling intensity scaling!
	--lta: Output transform as /scratch/junhong.yu/HCP_BIDS/work/fmriprep_22_0_wf/single_subject_7841485_wf/anat_preproc_wf/surface_recon_wf/fsnative2t1w_xfm/T1_robustreg.lta . 
	--mov: Using /scratch/junhong.yu/HCP_BIDS/output/sourcedata/freesurfer/sub-7841485/mri/T1.mgz as movable/source volume.
	--dst: Using /scratch/junhong.yu/HCP_BIDS/work/fmriprep_22_0_wf/single_subject_7841485_wf/anat_preproc_wf/anat_validate/sub-7841485_T1w_ras_valid.nii.gz as target volume.

	reading source '/scratch/junhong.yu/HCP_BIDS/output/sourcedata/freesurfer/sub-7841485/mri/T1.mgz'...
	reading target '/scratch/junhong.yu/HCP_BIDS/work/fmriprep_22_0_wf/single_subject_7841485_wf/anat_preproc_wf/anat_validate/sub-7841485_T1w_ras_valid.nii.gz'...

	Registration::setSourceAndTarget(MRI s, MRI t, keeptype = TRUE )
	   Type Source : 0  Type Target : 0  keeping type 
	   Reordering axes in mov to better fit dst... ( -1 -3 2 )
	 Determinant after swap : 1
	   Mov: (1, 1, 1)mm  and dim (256, 256, 256)
	   Dst: (1, 1, 1)mm  and dim (256, 256, 256)
	   Asserting both images: 1mm isotropic 
	    - no Mov reslice necessary
	    - no Dst reslice necessary


	 Registration::findSaturation 
	   - computing centroids 
	   - computing initial transform
	     -- using translation info
	   - Get Gaussian Pyramid Limits ( min size: 16 max size: -1 ) 
	   - Build Gaussian Pyramid ( Limits min steps: 0 max steps: 3 ) 
	   - Build Gaussian Pyramid ( Limits min steps: 0 max steps: 3 ) 

	   - Max Resolution used: 2
	     -- gpS ( 64 , 64 , 64 )
	     -- gpT ( 64 , 64 , 64 )
	   - running loop to estimate saturation parameter:
	     -- Iteration: 1  trying sat: 16
	         min sat: 0 ( -1 ), max sat: 16 ( 0.00986734 ), sat diff: 16, (wlimit=0.16)
	     -- Iteration: 2  trying sat: 8
	         min sat: 0 ( -1 ), max sat: 8 ( 0.0380718 ), sat diff: 8, (wlimit=0.16)
	     -- Iteration: 3  trying sat: 4
	         min sat: 0 ( -1 ), max sat: 4 ( 0.122164 ), sat diff: 4, (wlimit=0.16)
	     -- Iteration: 4  trying sat: 2
Stderr:

	 ERROR: All entries are zero! Images do not overlap (anymore?).
	    This can have several reasons (i.e. different modalities, different 
	    intensity scales, large non-linearities, too diff. voxel sizes ...)
	    Try calling with --noinit (if the original images are well aligned)
	    Maybe use --ixform  with an approx. alignment
	    obtained from tkregister or another registration program.
	    Or do some prior intensity correction? 
	    You can also try to switch off symmetric reg. via --nosym 
	    or manually play around with the --sat parameter. 

Traceback:
	Traceback (most recent call last):
	  File "/home/junhong.yu/fmriprepenv/lib/python3.7/site-packages/nipype/interfaces/base/core.py", line 398, in run
	    runtime = self._post_run_hook(runtime)
	  File "/home/junhong.yu/fmriprepenv/lib/python3.7/site-packages/niworkflows/interfaces/freesurfer.py", line 248, in _post_run_hook
	    fix_lta_length(lta_file)
	  File "/home/junhong.yu/fmriprepenv/lib/python3.7/site-packages/niworkflows/interfaces/freesurfer.py", line 399, in fix_lta_length
	    lines = Path(lta_file).read_text().splitlines(keepends=True)
	  File "/usr/local/intel/oneapi/2021.3/intelpython/python3.7/lib/python3.7/pathlib.py", line 1221, in read_text
	    with self.open(mode='r', encoding=encoding, errors=errors) as f:
	  File "/usr/local/intel/oneapi/2021.3/intelpython/python3.7/lib/python3.7/pathlib.py", line 1208, in open
	    opener=self._opener)
	  File "/usr/local/intel/oneapi/2021.3/intelpython/python3.7/lib/python3.7/pathlib.py", line 1063, in _opener
	    return self._accessor.open(self, flags, mode)
	FileNotFoundError: [Errno 2] No such file or directory: '/scratch/junhong.yu/HCP_BIDS/work/fmriprep_22_0_wf/single_subject_7841485_wf/anat_preproc_wf/surface_recon_wf/fsnative2t1w_xfm/T1_robustreg.lta'

Screenshots / relevant information:


Hi @gerardyu,

In the future, please submit software related questions under the Software Support category which prompts you for important information we can use to debug your issue. I have added it in for you, please update your post to add the missing information.

Best,
Steven

i cant seem to update my post— clicking on the pencil brings me to the history instead of allowing me to edit the post.

Anyway i figured out this issue, previously recon-all was carried out on the skullstripped t1w images, but the t1w images in my fmriprep BIDS directory were not skullstripped. So i simply skullstripped these t1w images and the issue was resolved