QSIPrep error gather_inputs

Summary of what happened:

I am running QSIPrep version 1.0.1 using SLURM for a dataset. The pipeline fails saying ‘gather_inputs failed to run on host.’ This is also a part of NiChart dataset (BLSA). I am using comp_space to save intermediate files (working dir).

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

list=$1
sub=`awk NR==${SLURM_ARRAY_TASK_ID} ${list}`

singularity run --cleanenv --containall -e \
-B ${WORK_DIR}:/work/ \
-B ${BIDS_DIR}:/data/ \
-B ${OUT_DIR}:/out/ \
-B ${PIPELINE_DIR:/indir/
/indir/qsiprep-1.0.1.sif \
/data/ /out/ participant \
--fs-license-file /indir//license.txt \
--participant-label ${sub} \
--anat-modality T1w \
--separate-all-dwis \
--ignore fieldmaps \
--nthreads 4 \
--work-dir /work/ \
--hmc-model eddy \
--unringing-method mrdegibbs \
--output-resolution 2 \

Version:

qsiprep:1.0.1

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

apptainer build ${PWD}/qsiprep-1.0.1.sif docker://pennlinc/qsiprep:1.0.1

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

Input data appears valid and follows BIDS structure.

tree Data/sub-1217/ses-24/
Data/sub-1217/ses-24/
├── anat
│   ├── sub-1217_ses-24_FLAIR.json
│   ├── sub-1217_ses-24_FLAIR.nii.gz -> ../../../.git/annex/objects/GZ/1V/MD5E-s4318144--2d6240ae7550759897b5bc6dedc74fe7.nii.gz/MD5E-s4318144--2d6240ae7550759897b5bc6dedc74fe7.nii.gz
│   ├── sub-1217_ses-24_PDw.json
│   ├── sub-1217_ses-24_PDw.nii.gz -> ../../../.git/annex/objects/3K/QQ/MD5E-s2734518--544fe8043a565ec9117f0cb8719c4368.nii.gz/MD5E-s2734518--544fe8043a565ec9117f0cb8719c4368.nii.gz
│   ├── sub-1217_ses-24_T1w.json
│   ├── sub-1217_ses-24_T1w.nii.gz -> ../../../.git/annex/objects/G7/P3/MD5E-s8552333--5b20d73b9672005fd7ecf560791cb513.nii.gz/MD5E-s8552333--5b20d73b9672005fd7ecf560791cb513.nii.gz
│   ├── sub-1217_ses-24_T2w.json
│   └── sub-1217_ses-24_T2w.nii.gz -> ../../../.git/annex/objects/7K/wV/MD5E-s2605960--0724af8fb02cd56ccdad00815f2efab3.nii.gz/MD5E-s2605960--0724af8fb02cd56ccdad00815f2efab3.nii.gz
├── dwi
│   ├── sub-1217_ses-24_run-01_dwi.bval
│   ├── sub-1217_ses-24_run-01_dwi.bvec
│   ├── sub-1217_ses-24_run-01_dwi.json
│   ├── sub-1217_ses-24_run-01_dwi.nii.gz -> ../../../.git/annex/objects/GZ/Zm/MD5E-s32961980--8586b96c07443be29a0fbda47df0157e.nii.gz/MD5E-s32961980--8586b96c07443be29a0fbda47df0157e.nii.gz
│   ├── sub-1217_ses-24_run-02_dwi.bval
│   ├── sub-1217_ses-24_run-02_dwi.bvec
│   ├── sub-1217_ses-24_run-02_dwi.json
│   └── sub-1217_ses-24_run-02_dwi.nii.gz -> ../../../.git/annex/objects/14/kp/MD5E-s30927984--65713d82ac52130343c3e6df6333ddf4.nii.gz/MD5E-s30927984--65713d82ac52130343c3e6df6333ddf4.nii.gz
└── func
    ├── sub-1217_ses-24_task-rest_bold.json
    └── sub-1217_ses-24_task-rest_bold.nii.gz -> ../../../.git/annex/objects/9K/6g/MD5E-s38453246--7cdc50cdbde74ca00ba4fa29fdf400a0.nii.gz/MD5E-s38453246--7cdc50cdbde74ca00ba4fa29fdf400a0.nii.gz

Relevant log outputs (up to 20 lines):

quatern_b       : -0.027641205
quatern_c       : -0.99353075
quatern_d       : -0.11014285
qoffset_x       : 107.21539
qoffset_y       : -90.46284
qoffset_z       : -62.684364
srow_x          : [-1.99693930e+00  1.10318854e-01 -7.94463884e-03  1.07215393e+02]
srow_y          : [  0.10938025   1.948418    -0.43783903 -90.46284   ]
srow_z          : [ 1.6411209e-02  4.3760344e-01  1.9514697e+00 -6.2684364e+01]
intent_name     : b''
magic           : b'n+1'

new_b0_path /work/qsiprep_1_0_wf/sub_1217_ses_23_24_wf/dwi_preproc_ses_24_run_01_wf/hmc_sdc_wf/gather_inputs/sub-1217_ses-24_run-01_dwi_b0-47.nii.gz
250807-10:44:01,120 nipype.workflow INFO:
         [Node] Finished "gather_inputs", elapsed time 1.659055s.
250807-10:44:01,120 nipype.workflow WARNING:
         Storing result file without outputs
250807-10:44:01,121 nipype.workflow WARNING:
         [Node] Error on "qsiprep_1_0_wf.sub_1217_ses_23_24_wf.dwi_preproc_ses_24_run_01_wf.hmc_sdc_wf.gather_inputs" (/work/qsiprep_1_0_wf/sub_1217_ses_23_24_wf/dwi_preproc_ses_24_run_01_wf/hmc_sdc_wf/gather_inputs)
250807-10:44:02,603 nipype.workflow ERROR:
         Node gather_inputs failed to run on host 2115fmn033.
250807-10:44:02,610 nipype.workflow ERROR:
         Saving crash info to /out/sub-1217/log/20250807-103730_0529d21f-6e47-4159-ba4d-e3dd82f78657/crash-20250807-104402-blsauser-gather_inputs-059f6884-6801-47d2-b6c8-81d63d4912b7.txt
Traceback (most recent call last):
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 66, in run_node
    result["result"] = node.run(updatehash=updatehash)
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 525, in run
    result = self._run_interface(execute=True)
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 643, in _run_interface
    return self._run_command(execute)
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 769, in _run_command
    raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node gather_inputs.

Screenshots / relevant information:


Hi @Dhivya,

Those look like datalad symlinks. Can you confirm they’ve been retrieved? Also looks like the error log was cut off at the end.

Best,
Steven

I think the image is retrieved. I can visualize the image from the bids location. Here is the full error:

        [Node] Error on "qsiprep_1_0_wf.sub_1217_ses_23_24_wf.dwi_preproc_ses_24_run_01_wf.hmc_sdc_wf.gather_inputs" (/work/qsiprep_1_0_wf/sub_1217_ses_23_24_wf/dwi_preproc_ses_24_run_01_wf/hmc_sdc_wf/gather_inputs)
250807-10:44:02,603 nipype.workflow ERROR:
         Node gather_inputs failed to run on host 2115fmn033.
250807-10:44:02,610 nipype.workflow ERROR:
         Saving crash info to /out/sub-1217/log/20250807-103730_0529d21f-6e47-4159-ba4d-e3dd82f78657/crash-20250807-104402-blsauser-gather_inputs-059f6884-6801-47d2-b6c8-81d63d4912b7.txt
Traceback (most recent call last):
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 66, in run_node
    result["result"] = node.run(updatehash=updatehash)
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 525, in run
    result = self._run_interface(execute=True)
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 643, in _run_interface
    return self._run_command(execute)
  File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 769, in _run_command
    raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node gather_inputs.

Traceback:
        Traceback (most recent call last):
          File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 401, in run
            runtime = self._run_interface(runtime)
          File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/qsiprep/interfaces/eddy.py", line 90, in _run_interface
            get_best_b0_topup_inputs_from(
          File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/qsiprep/interfaces/epi_fmap.py", line 242, in get_best_b0_topup_inputs_from
            spec_lookup[unique_bids_file] = spec_line % spec['TotalReadoutTime']
        TypeError: must be real number, not NoneType


Hi @Dhivya,

This means your images are missing TotalReadoutTime metadata.

Best,
Steven

@Steven, I can see the readout time:

cat Data/sub-1217/ses-24/dwi/sub-1217_ses-24_run-02_dwi.json | grep Total
 "EstimatedTotalReadoutTime": 0.0652623,

cat Data/sub-1217/ses-24/dwi/sub-1217_ses-24_run-01_dwi.json | grep Total
 "EstimatedTotalReadoutTime": 0.0652307,

That’s not the same metadata field, needs to be explicitly TotalReadoutTime.

Thanks Steven. I will update the json file to include TotalReadoutTime field.