nipreps / smriprep

Structural MRI PREProcessing (sMRIPrep) workflows for NIPreps (NeuroImaging PREProcessing tools)

Home Page:https://nipreps.github.io/smriprep

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

smriprep errors out during autorecon2-vol due to missing lta file

girishmm opened this issue · comments

I tried to run the complete smriprep pipeline on a structural MRI dataset. The dataset was organized according to BIDS and had T1w, T2W, and FLAIR images for each subject. To check if the pipeline completes successfully, I ran it over one subject.

smriprep bids bids/derivatives participant --participant-label 150352

It errors out during the autorecon2-vol phase of recon-all. To verify if it completes without freesurfer surface preprocessing and subcortical segmentation, I ran it with the fs-no-reconall flag.

smriprep bids bids/derivatives participant --participant-label 150352 --fs-no-reconall

This completes without throwing any errors.

I trace the issue in the autorecon2 phase to the canorm step mentioned here. mri_ca_normalize tries to read the xform file talairach.lta from /bids/derivatives/freesurfer/sub-150352/mri/transforms but it is absent, and this leads to the error. Instead of talairach.lta, there is a talairach.xfm.lta file. On running, canorm step using this xform file, it runs successfully.

Is this a misnaming problem by the smriprep pipeline, or am I missing something? Log below for more info.

Node: smriprep_wf.single_subject_140152_wf.anat_preproc_wf.surface_recon_wf.autorecon_resume_wf.autorecon2_vol
Working directory: /home/bhalla/girishmm/data/work/smriprep_wf/single_subject_140152_wf/anat_preproc_wf/surface_recon_wf/autorecon_resume_wf/autorecon2_vol

Node inputs:

FLAIR_file = <undefined>
T1_files = <undefined>
T2_file = <undefined>
args = <undefined>
big_ventricles = <undefined>
brainstem = <undefined>
directive = autorecon2-volonly
environ = {}
expert = <undefined>
flags = <undefined>
hemi = <undefined>
hippocampal_subfields_T1 = <undefined>
hippocampal_subfields_T2 = <undefined>
hires = <undefined>
mprage = <undefined>
mri_aparc2aseg = <undefined>
mri_ca_label = <undefined>
mri_ca_normalize = <undefined>
mri_ca_register = <undefined>
mri_edit_wm_with_aseg = <undefined>
mri_em_register = <undefined>
mri_fill = <undefined>
mri_mask = <undefined>
mri_normalize = <undefined>
mri_pretess = <undefined>
mri_remove_neck = <undefined>
mri_segment = <undefined>
mri_segstats = <undefined>
mri_tessellate = <undefined>
mri_watershed = <undefined>
mris_anatomical_stats = <undefined>
mris_ca_label = <undefined>
mris_fix_topology = <undefined>
mris_inflate = <undefined>
mris_make_surfaces = <undefined>
mris_register = <undefined>
mris_smooth = <undefined>
mris_sphere = <undefined>
mris_surf2vol = <undefined>
mrisp_paint = <undefined>
openmp = 8
parallel = <undefined>
steps = <undefined>
subject_id = recon_all
subjects_dir = <undefined>
talairach = <undefined>
use_FLAIR = <undefined>
use_T2 = <undefined>
xopts = <undefined>

Traceback (most recent call last):
  File "/home/bhalla/girishmm/miniconda3/envs/napi/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 67, in run_node
    result["result"] = node.run(updatehash=updatehash)
  File "/home/bhalla/girishmm/miniconda3/envs/napi/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
    result = self._run_interface(execute=True)
  File "/home/bhalla/girishmm/miniconda3/envs/napi/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
    return self._run_command(execute)
  File "/home/bhalla/girishmm/miniconda3/envs/napi/lib/python3.10/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 autorecon2_vol.

Cmdline:
	recon-all -autorecon2-volonly -openmp 8 -subjid sub-140152 -sd /home/bhalla/girishmm/data/bids/derivatives/freesurfer 
Stdout:
	fs-check-version --s sub-140152 --o /tmp/tmp.TYR5Ox
	Wed Mar 15 14:19:19 IST 2023

	setenv SUBJECTS_DIR /home/bhalla/girishmm/data/bids/derivatives/freesurfer
	cd /home/bhalla/girishmm/data/work/smriprep_wf/single_subject_140152_wf/anat_preproc_wf/surface_recon_wf/autorecon_resume_wf/autorecon2_vol
	/home/bhalla/girishmm/packages/freesurfer/bin/fs-check-version --s sub-140152 --o /tmp/tmp.TYR5Ox
	-rwxrwxr-x 1 girishmm bhalla 18565 Aug  4  2022 /home/bhalla/girishmm/packages/freesurfer/bin/fs-check-version

	freesurfer-linux-ubuntu22_x86_64-7.3.2-20220804-6354275
	$Id$
	Linux xutuli 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
	pid 2558366
	Current FS Version freesurfer-linux-ubuntu22_x86_64-7.3.2-20220804-6354275
	bstampfile exists /home/bhalla/girishmm/data/bids/derivatives/freesurfer/sub-140152/scripts/build-stamp.txt
	Subject FS Version: freesurfer-linux-ubuntu22_x86_64-7.3.2-20220804-6354275
	No constraints on version because REQ=UnSet and FsVerFile=NotThere
	#@#% fs-check-version match = 1
	fs-check-version Done
	INFO: SUBJECTS_DIR is /home/bhalla/girishmm/data/bids/derivatives/freesurfer
	Actual FREESURFER_HOME /home/bhalla/girishmm/packages/freesurfer
	-rw-rw-r-- 1 girishmm bhalla 47243 Mar 15 14:19 /home/bhalla/girishmm/data/bids/derivatives/freesurfer/sub-140152/scripts/recon-all.log
	Linux xutuli 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
	~/data/bids/derivatives/freesurfer/sub-140152/mri/transforms ~/data/bids/derivatives/freesurfer/sub-140152 
	~/data/bids/derivatives/freesurfer/sub-140152 
	#--------------------------------------
	#@# CA Normalize Wed Mar 15 14:19:19 IST 2023
	/home/bhalla/girishmm/data/bids/derivatives/freesurfer/sub-140152/mri

	 mri_ca_normalize -c ctrl_pts.mgz -mask brainmask.mgz nu.mgz /home/bhalla/girishmm/packages/freesurfer/average/RB_all_2020-01-02.gca transforms/talairach.lta norm.mgz 

	writing control point volume to ctrl_pts.mgz
	using MR volume brainmask.mgz to mask input volume...
	reading 1 input volume
	reading atlas from '/home/bhalla/girishmm/packages/freesurfer/average/RB_all_2020-01-02.gca'...
	reading transform from 'transforms/talairach.lta'...
	error: No such file or directory
	error: ltaReadFile(transforms/talairach.lta): can't open file�
	error: No such file or directory
	error: mri_ca_normalize: could not open xform file transforms/talairach.lta�
	Command exited with non-zero status 252
	@#@FSTIME  2023:03:15:14:19:19 mri_ca_normalize N 8 e 0.63 S 0.10 U 0.52 P 99% M 432936 F 0 R 106867 W 0 c 1 w 2 I 0 O 0 L 12.97 18.99 36.60
	@#@FSLOADPOST 2023:03:15:14:19:20 mri_ca_normalize N 8 12.97 18.99 36.60
	Linux xutuli 5.15.0-56-generic #62-Ubuntu SMP Tue Nov 22 19:54:14 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

	recon-all -s sub-140152 exited with ERRORS at Wed Mar 15 14:19:20 IST 2023

	For more details, see the log file /home/bhalla/girishmm/data/bids/derivatives/freesurfer/sub-140152/scripts/recon-all.log
	To report a problem, see http://surfer.nmr.mgh.harvard.edu/fswiki/BugReporting

Stderr:

Traceback:
	RuntimeError: subprocess exited with code 1.

What version of freesurfer and smriprep? This should be fixed in the latest release.

FreeSurfer version: freesurfer-linux-ubuntu22_x86_64-7.3.2-20220804-6354275
smriprep version : smriprep v0.10.0

Freesurfer 7.3.2 is the latest version available. I will upgrade smriprep to 0.11.0 and try again.

Upgrading smriprep to 0.11.0 resolves the error. I suggest adding Connectome Workbench to the list of well-known software packages used in README as smriprep fails to run without wb_command in the latest version. Closing issue as resolved.