Fmriprep tcompcor IndexError followed by MemoryError

Hi there,
I’ve run the following call lines to docker:

fmriprep-docker -w /media/vm01/‘500gb data’/MemPercp/derivatives/work --fs-license-file /media/vm01/‘500gb data’/MemPercp/code/license.txt /media/vm01/‘500gb data’/MemPercp /media/vm01/‘500gb data’/MemPercp/derivatives participant --output-space T1w fsaverage fsnative template --ignore slicetiming --participant_label 04 --longitudinal --n_cpus 4 --dummy-scans 0

This call has worked for three subjects without any errors; however, on the fourth subject I receive two errors. The first is an IndexError with tcompcor:

Node Name: fmriprep_wf.single_subject_04_wf.func_preproc_ses_fribbles_task_study_run_04_wf.bold_confounds_wf.tcompcor
File: /out/fmriprep/sub-04/log/20190821-130109_e9c26c5e-7501-4f2f-9bfa-426aad22475e/crash-20190822-025126-root-tcompcor-878beec7-a775-4bb2-9788-a680289e867f.txt
Working Directory: /scratch/fmriprep_wf/single_subject_04_wf/func_preproc_ses_fribbles_task_study_run_04_wf/bold_confounds_wf/tcompcor
Inputs:

components_file: tcompcor.tsv
failure_mode: NaN
header_prefix: t_comp_cor_
high_pass_cutoff: 128.0
ignore_initial_volumes: 0
mask_files: ['/scratch/fmriprep_wf/single_subject_04_wf/func_preproc_ses_fribbles_task_study_run_04_wf/bold_confounds_wf/tcc_tfm/sub-04_ses-fribbles_T1w_template_ras_valid_corrected_xform_rbrainmask_eroded_trans_boldmsk.nii.gz']
mask_index:
mask_names:
merge_method:
num_components:
percentile_threshold: 0.05
pre_filter: cosine
realigned_file: /scratch/fmriprep_wf/single_subject_04_wf/func_preproc_ses_fribbles_task_study_run_04_wf/bold_bold_trans_wf/merge/vol0000_xform-00000_merged.nii.gz
regress_poly_degree: 1
repetition_time: 1.25
save_metadata: True
save_pre_filter: True
use_regress_poly:
variance_threshold: 0.5

Traceback (most recent call last):
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/plugins/multiproc.py”, line 69, in run_node
result[‘result’] = node.run(updatehash=updatehash)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py”, line 472, in run
result = self._run_interface(execute=True)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py”, line 563, in _run_interface
return self._run_command(execute)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py”, line 643, in _run_command
result = self._interface.run(cwd=outdir)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/interfaces/base/core.py”, line 375, in run
runtime = self._run_interface(runtime)
File “/usr/local/miniconda/lib/python3.7/site-packages/niworkflows/interfaces/patches.py”, line 51, in _run_interface
runtime = super(RobustTCompCor, self)._run_interface(runtime)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/algorithms/confounds.py”, line 560, in _run_interface
mask_images = self._process_masks(mask_images, imgseries.get_data())
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/algorithms/confounds.py”, line 760, in _process_masks
(1. - self.inputs.percentile_threshold)).astype(int))
File “/usr/local/miniconda/lib/python3.7/site-packages/numpy/lib/function_base.py”, line 3540, in percentile
a, q, axis, out, overwrite_input, interpolation, keepdims)
File “/usr/local/miniconda/lib/python3.7/site-packages/numpy/lib/function_base.py”, line 3652, in _quantile_unchecked
interpolation=interpolation)
File “/usr/local/miniconda/lib/python3.7/site-packages/numpy/lib/function_base.py”, line 3250, in _ureduce
r = func(a, **kwargs)
File “/usr/local/miniconda/lib/python3.7/site-packages/numpy/lib/function_base.py”, line 3767, in _quantile_ureduce_func
x1 = take(ap, indices_below, axis=axis) * weights_below
File “/usr/local/miniconda/lib/python3.7/site-packages/numpy/core/fromnumeric.py”, line 181, in take
return _wrapfunc(a, ‘take’, indices, axis=axis, out=out, mode=mode)
File “/usr/local/miniconda/lib/python3.7/site-packages/numpy/core/fromnumeric.py”, line 51, in _wrapfunc
return getattr(obj, method)(*args, **kwds)
IndexError: cannot do a non-empty take from an empty axes.

The second is a MemoryError:

Node Name: fmriprep_wf.single_subject_04_wf.func_preproc_ses_scenes_task_loc_run_01_wf.func_derivatives_wf.ds_bold_std
File: /out/fmriprep/sub-04/log/20190821-130109_e9c26c5e-7501-4f2f-9bfa-426aad22475e/crash-20190822-042911-root-ds_bold_std.a0-8f4db0e4-ec6c-4d07-8646-99263242a7ee.txt
Working Directory: /scratch/fmriprep_wf/single_subject_04_wf/func_preproc_ses_scenes_task_loc_run_01_wf/func_derivatives_wf/_key_MNI152NLin2009cAsym/ds_bold_std
Inputs:

base_directory: /out
check_hdr: True
compress: True
desc: preproc
extra_values:
in_file: ['/scratch/fmriprep_wf/single_subject_04_wf/func_preproc_ses_scenes_task_loc_run_01_wf/bold_std_trans_wf/_key_MNI152NLin2009cAsym/merge/vol0000_xform-00000_merged.nii.gz']
keep_dtype: True
meta_dict:
source_file: /data/sub-04/ses-scenes/func/sub-04_ses-scenes_task-loc_run-01_bold.nii.gz
space: MNI152NLin2009cAsym

Traceback (most recent call last):
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/plugins/multiproc.py”, line 316, in _send_procs_to_workers
self.procs[jobid].run(updatehash=updatehash)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py”, line 472, in run
result = self._run_interface(execute=True)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py”, line 563, in _run_interface
return self._run_command(execute)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py”, line 643, in _run_command
result = self._interface.run(cwd=outdir)
File “/usr/local/miniconda/lib/python3.7/site-packages/nipype/interfaces/base/core.py”, line 375, in run
runtime = self._run_interface(runtime)
File “/usr/local/miniconda/lib/python3.7/site-packages/niworkflows/interfaces/bids.py”, line 494, in _run_interface
nii.class(np.array(nii.dataobj), nii.affine, hdr).to_filename(
File “/usr/local/miniconda/lib/python3.7/site-packages/nibabel/arrayproxy.py”, line 356, in array
return apply_read_scaling(raw_data, self._slope, self._inter)
File “/usr/local/miniconda/lib/python3.7/site-packages/nibabel/volumeutils.py”, line 967, in apply_read_scaling
arr = arr + inter
MemoryError

This seems similar to this post here. It seems like adding the --low-mem flag may solve the memory error, but I’m not sure about the fix for the IndexError (which occurs first). That post was from 2017 and it seemed to be resolved in a later release of fmriprep (I’m currently running fmriprep version 1.4.1), so this may be a slightly different issue at hand.

Thanks,
-Merika