I am running the latest version of fmriprep, on macOS 10.11.6 using the default settings. It crashes with an error, apparently after successfully running freesurfer recon-all. Any idea what I could be doing wrong? Iβve set Docker so it uses 4 core and 8 GB of RAM.
Error message:
recon-all -s sub-sid000198 exited with ERRORS at Sat Apr 1 00:54:03 UTC 2017
For more details, see the log file /out/out/freesurfer/sub-sid000198/scripts/recon-all.log
To report a problem, see http://surfer.nmr.mgh.harvard.edu/fswiki/BugReporting
Standard error:
Return code: 1
Interface ReconAllRPT failed to run.
170401-00:54:04,285 workflow INFO:
***********************************
170401-00:54:04,285 workflow ERROR:
could not run node: workflow_enumerator.sid000080.t1w_preprocessing.Reconstruction2
170401-00:54:04,285 workflow INFO:
crashfile: /out/out/fmriprep/sub-sid000080/log/20170330-235106_1babf002-9211-4023-9532-b9cd50ed974a/crash-20170331-122539-root-Reconstruction2-c8afe603-bb79-43c5-b91e-c9a63de72b79.pklz
170401-00:54:04,287 workflow ERROR:
could not run node: workflow_enumerator.sid000198.t1w_preprocessing.Reconstruction2
170401-00:54:04,287 workflow INFO:
crashfile: /out/out/fmriprep/sub-sid000198/log/20170330-235106_1babf002-9211-4023-9532-b9cd50ed974a/crash-20170401-005404-root-Reconstruction2-25adc201-e030-493b-aa11-dbe155edd363.pklz
170401-00:54:04,288 workflow INFO:
***********************************
Info from fmriprep HTML report:
Node Name: workflow_enumerator.sid000080.t1w_preprocessing.Reconstruction2
File: crash-20170331-122539-root-Reconstruction2-c8afe603-bb79-43c5-b91e-c9a63de72b79.pklz
Working Directory: /root/src/fmriprep/work/workflow_enumerator/sid000080/t1w_preprocessing/Reconstruction2
Inputs:
T1_files:
T2_file:
args:
compress_report: auto
directive: all
environ: {}
expert:
flags: -noskullstrip
generate_report: True
hemi:
hires:
ignore_exception: False
mri_aparc2aseg:
mri_ca_label:
mri_ca_normalize:
mri_ca_register:
mri_edit_wm_with_aseg:
mri_em_register:
mri_fill:
mri_mask:
mri_normalize:
mri_pretess:
mri_remove_neck:
mri_segment:
mri_segstats:
mri_tessellate:
mri_watershed:
mris_anatomical_stats:
mris_ca_label:
mris_fix_topology:
mris_inflate:
mris_make_surfaces:
mris_register:
mris_smooth:
mris_sphere:
mris_surf2vol:
mrisp_paint:
openmp: 4
out_report: reconall.svg
parallel: True
subject_id: sub-sid000080
subjects_dir: /out/out/freesurfer
talairach:
terminal_output: stream
use_T2: False
Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.6/site-packages/nipype/pipeline/plugins/multiproc.py", line 52, in run_node
result['result'] = node.run(updatehash=updatehash)
File "/usr/local/miniconda/lib/python3.6/site-packages/nipype/pipeline/engine/nodes.py", line 366, in run
self._run_interface()
File "/usr/local/miniconda/lib/python3.6/site-packages/nipype/pipeline/engine/nodes.py", line 476, in _run_interface
self._result = self._run_command(execute)
File "/usr/local/miniconda/lib/python3.6/site-packages/nipype/pipeline/engine/nodes.py", line 607, in _run_command
result = self._interface.run()
File "/usr/local/miniconda/lib/python3.6/site-packages/nipype/interfaces/base.py", line 1085, in run
runtime = self._run_wrapper(runtime)
File "/usr/local/miniconda/lib/python3.6/site-packages/nipype/interfaces/base.py", line 1728, in _run_wrapper
runtime = self._run_interface(runtime)
File "/usr/local/miniconda/lib/python3.6/site-packages/niworkflows/common/report.py", line 52, in _run_interface
ReportCapableInterface, self)._run_interface(runtime)
File "/usr/local/miniconda/lib/python3.6/site-packages/nipype/interfaces/base.py", line 1762, in _run_interface
self.raise_exception(runtime)
File "/usr/local/miniconda/lib/python3.6/site-packages/nipype/interfaces/base.py", line 1686, in raise_exception
**runtime.dictcopy()))
RuntimeError: Command:
recon-all -all -noskullstrip -openmp 4 -parallel -subjid sub-sid000080 -sd /out/out/freesurfer -nomotioncor -notalairach -nonuintensitycor -nonormalization
This is weird. Even though the log mentions that FreeSurfer exited with errors it does not mention any details. It might be worth sharing this on the FreeSurfer mailing list.
Does this happen for consistently across subjects?
Iβve tried it on two subjects (data collected and organized the same way for both subjects) and it happened for both. It is weirdβto my (admittedly non-expert) eye, it looks like recon-all ran successfully, insofar as it created the following files (in the freesurfer subdirectory of /out):
Iβm currently reinstalling Docker (to deal with a separate, unrelated issue), and will try running fmriprep again with the same output directory. Iβll reply to this issue after thatβs finished (it may take quite some time).
This is difficult to track down and hard to interpret for an out-of-memory errorβthanks for your help.
Docker was set to use 8GB of system RAM. The T1s were .9mm x .938mm x .938mmβthe fmriprep manual mentions that this should kick in Freesurferβs submillimeter reconstruction. Is this an unusually memory-intensive process? And if so, is there an option to turn it off?
@ChrisGorgolewski Running FMRIPREP on the same subject using the same output folder does not fix the problem, but results in a different error:
ERROR: there is a pre-existing expert options file and
you have specified an expert options file on the command-line.
If you want to use the file specified on the command-line,
you must run with -xopts-overwrite, or you may edit the
existing file /root/src/fmriprep/work/workflow_enumerator/sid000080/t1w_preprocessing/Reconstruction/expert.opts (and not use the -expert option).
Standard error:
Return code: 1
Interface ReconAll failed to run.
@effigies Thanks! This is very helpful. For now Iβm going to use --no-freesurfer, but the --nosubmm-recon flag will be useful in the future.
Hi @beau. To fix your expert options issue, delete, in the output directory: freesurfer/sub-sid000080/scripts/expert-options.
The issue is that our autorecon1 step creates an expert options file, which gets copied into the subject directory on the first run. We didnβt account for this step crashing and trying to re-copy it, which FreeSurfer (rightly, most of the time) warns you about.