fMRIPrep 1.5.10 preprocessing issue

Summary of what happened:

We are preprocessing old data set with old fMRIprep version 1.5.10 because we have another data sets processed with same version. So far I was able to preprocess 60+ subjects data without any issues. I am getting following error with one subject.

could not run node: fmriprep_wf.single_subject_50078_wf.func_preproc_ses_1_task_PSD_run_6_wf.bold_confounds_wf.tcompcor

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

singularity run --cleanenv \
-B /mnt/fMRIprep_RDoCA \
/mnt/fMRIprep_sing/fmriprep-1.5.10.simg \
/mnt/fMRIprep_RDoCA/RDoCA_Spinecho \
/mnt/fMRIprep_RDoCA/RDoCA_Spinecho_50078_output \
--fs-license-file $PWD/license.txt \
--low-mem participant \
--participant-label sub-50078 \
--ignore slicetiming \
--output-spaces T1w MNI152NLin2009cAsym:res-2 MNI152NLin2009cAsym:res-native

Version:

fMRIprep 1.5.10

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

Singularity

Data formatted according to a validatable standard? Please provide the output of the validator:

BIDS Validated no issues

Relevant log outputs (up to 20 lines):

Node inputs:

components_file = tcompcor.tsv
failure_mode = NaN
header_prefix = t_comp_cor_
high_pass_cutoff = 128.0
ignore_initial_volumes = 0
mask_files = <undefined>
mask_index = <undefined>
mask_names = <undefined>
merge_method = <undefined>
num_components = <undefined>
percentile_threshold = 0.05
pre_filter = cosine
realigned_file = <undefined>
regress_poly_degree = 1
repetition_time = 0.8
save_metadata = True
save_pre_filter = True
use_regress_poly = <undefined>
variance_threshold = 0.5

Traceback (most recent call last):
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/plugins/multiproc.py", line 67, in run_node
    result["result"] = node.run(updatehash=updatehash)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py", line 516, in run
    result = self._run_interface(execute=True)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py", line 635, in _run_interface
    return self._run_command(execute)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py", line 741, in _run_command
    result = self._interface.run(cwd=outdir)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/interfaces/base/core.py", line 397, in run
    runtime = self._run_interface(runtime)
  File "/usr/local/miniconda/lib/python3.7/site-packages/niworkflows/interfaces/patches.py", line 46, in _run_interface
    runtime = super(RobustTCompCor, self)._run_interface(runtime)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/algorithms/confounds.py", line 629, in _run_interface
    mask_images = self._process_masks(mask_images, imgseries.dataobj)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/algorithms/confounds.py", line 845, in _process_masks
    np.round(100.0 * (1.0 - 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.

Screenshots / relevant information:


Hi @sameera2004,

There is not enough information in your output log for us to help you with your issue. You can edit your post to add more of the error traceback. We also highly recommend updating versions, even if that means rerunning the data.

Best,
Steven

Hi @Steven,

Thank you for your prompt response. While we would prefer to use a newer version, we already have existing datasets that were processed using the older version. To maintain consistency, we’d like to continue using the same version for this processing

I found following inside the log folder

Node inputs:

components_file = tcompcor.tsv
failure_mode = NaN
header_prefix = t_comp_cor_
high_pass_cutoff = 128.0
ignore_initial_volumes = 0
mask_files = <undefined>
mask_index = <undefined>
mask_names = <undefined>
merge_method = <undefined>
num_components = <undefined>
percentile_threshold = 0.05
pre_filter = cosine
realigned_file = <undefined>
regress_poly_degree = 1
repetition_time = 0.8
save_metadata = True
save_pre_filter = True
use_regress_poly = <undefined>
variance_threshold = 0.5

  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/pipeline/engine/nodes.py", line 741, in _run_command
    result = self._interface.run(cwd=outdir)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/interfaces/base/core.py", line 397, in run
    runtime = self._run_interface(runtime)
  File "/usr/local/miniconda/lib/python3.7/site-packages/niworkflows/interfaces/patches.py", line 46, in _run_interface
    runtime = super(RobustTCompCor, self)._run_interface(runtime)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/algorithms/confounds.py", line 629, in _run_interface
    mask_images = self._process_masks(mask_images, imgseries.dataobj)
  File "/usr/local/miniconda/lib/python3.7/site-packages/nipype/algorithms/confounds.py", line 845, in _process_masks
    np.round(100.0 * (1.0 - 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.

Hi @sameera2004,

If it doesn’t work after trying with a fresh working directory and you are unable to update software, I don’t know what I could suggest besides dropping the subject from downstream analyses.

Best,
Steven

Hi @Steven, I tried with fresh working directory and it didn’t work. I got the same error. Thanks