Qsiprep: nibabel.deprecator.expireddeprecationerror:

Summary of what happened:

Hi everyone, recently, when I call qsiprep in singularity, it returns the error. Any suggestions to fix this bug?

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

Here is my script:

#!/bin/bash

Data_DIR=/share/ceph/hawk/yuzi20_123121/kaz220/fmri_preprocess/OAS_dwi/
BIDS_DIR=/share/ceph/hawk/yuzi20_123121/kaz220/fmri_preprocess/OAS_dwi/BIDS_DTI
OUT_DIR=/share/ceph/hawk/yuzi20_123121/kaz220/fmri_preprocess/OAS_dwi/output
WORK_DIR=/scratch/${USER}/${SLURM_JOBID}

SINGULARITY_BIN=/share/ceph/hawk/yuzi20_123121/shared

FMRIPREP_OPTS="--omp-nthreads 4 --nthreads 4 --mem_mb 3000000 --output-resolution 1.2 --skip_bids_validation"
echo $SUBJECT

unset PYTHONPATH
export FS_LICENSE=/home/kaz220/fmri_prep/other_files_need/FreesurferLicense/freesurfer.txt

cmd="singularity run --cleanenv -B /scratch/${USER}/${SLURM_JOBID},${Data_DIR} $SINGULARITY_BIN/qsiprep-23.2.14.simg ${BIDS_DIR} ${OUT_DIR} participant --participant-label $SUBJECT --fs-license-file ${FS_LICENSE} -w ${WORK_DIR} ${FMRIPREP_OPTS}"

echo Commandline: $cmd
echo $SUBJECT
eval $cmd

Version:

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

Singularity

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

[WARNING] This document format requires a nonempty <title> element.
  Please specify either 'title' or 'pagetitle' in the metadata.
  Falling back to 'CITATION'
QSIPrep failed: 7 raised. Re-raising first.
RuntimeError: Traceback (most recent call last):
  File "/home/kaz220/.local/lib/python3.8/site-packages/nipype/pipeline/plugins/multiproc.py", line 67, in run_node
    result["result"] = node.run(updatehash=updatehash)
  File "/home/kaz220/.local/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
    result = self._run_interface(execute=True)
  File "/home/kaz220/.local/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
    return self._run_command(execute)
  File "/home/kaz220/.local/lib/python3.8/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 raw_merge.

Traceback:
	Traceback (most recent call last):
	  File "/home/kaz220/.local/lib/python3.8/site-packages/nipype/interfaces/base/core.py", line 398, in run
	    runtime = self._run_interface(runtime)
	  File "/usr/local/miniconda/lib/python3.8/site-packages/qsiprep/interfaces/nilearn.py", line 142, in _run_interface
	    new_nii = nb.Nifti1Image(np.abs(new_nii.get_data()), new_nii.affine, new_nii.header)
	  File "/home/kaz220/.local/lib/python3.8/site-packages/nibabel/deprecator.py", line 208, in deprecated_func
	    raise exception(message)
	nibabel.deprecator.ExpiredDeprecationError: get_data() is deprecated in favor of get_fdata(), which has a more predictable return type. To obtain get_data() behavior going forward, use numpy.asanyarray(img.dataobj).

	* deprecated from version: 3.0
	* Raises <class 'nibabel.deprecator.ExpiredDeprecationError'> as of version: 5.0



The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/miniconda/bin/qsiprep", line 8, in <module>
    sys.exit(main())
  File "/usr/local/miniconda/lib/python3.8/site-packages/qsiprep/cli/run.py", line 664, in main
    qsiprep_wf.run(**plugin_settings)
  File "/home/kaz220/.local/lib/python3.8/site-packages/nipype/pipeline/engine/workflows.py", line 638, in run
    runner.run(execgraph, updatehash=updatehash, config=self.config)
  File "/home/kaz220/.local/lib/python3.8/site-packages/nipype/pipeline/plugins/base.py", line 212, in run
    raise error from cause
RuntimeError: 7 raised. Re-raising first.
Sentry is attempting to send 8 pending error messages
Waiting up to 2 seconds
Press Ctrl-C to quit

Screenshots / relevant information:


Hi @alienx-zero,

That is not a qsiprep version. The most recent qsiprep is 0.20.0. Which version are you using? May you also share the BIDS validation report when not skipping BIDS validation in your command?

Best,
Steven

Hi, Steven, thanks for your quick response. Yeah, it is due to the qsiprep. When I generate new qsiprep simg, it work well now.