Summary of what happened:
QSIPrep fails after the node “extract_b0_series” or “split_eddy_lps”. I’m running it with HARDI images acquired in AP/PA:
├── anat
│ ├── sub-testDTI_ses-multiHARDI_T1w.json
│ └── sub-testDTI_ses-multiHARDI_T1w.nii
└── dwi
├── sub-testDTI_ses-multiHARDI_dir-AP_dwi.bval
├── sub-testDTI_ses-multiHARDI_dir-AP_dwi.bvec
├── sub-testDTI_ses-multiHARDI_dir-AP_dwi.json
├── sub-testDTI_ses-multiHARDI_dir-AP_dwi.nii.gz
├── sub-testDTI_ses-multiHARDI_dir-PA_dwi.bval
├── sub-testDTI_ses-multiHARDI_dir-PA_dwi.bvec
├── sub-testDTI_ses-multiHARDI_dir-PA_dwi.json
└── sub-testDTI_ses-multiHARDI_dir-PA_dwi.nii.gz
With eddy_params.json:
{
"flm": "quadratic",
"slm": "none",
"fep": false,
"interp": "spline",
"nvoxhp": 1000,
"fudge_factor": 10,
"dont_sep_offs_move": false,
"dont_peas": false,
"niter": 5,
"method": "lsr",
"repol": true,
"num_threads": 1,
"is_shelled": true,
"use_cuda": true,
"cnr_maps": true,
"residuals": false,
"output_type": "NIFTI_GZ",
"args": "--fwhm=10,0,0,0,0 "
}
Command used (and if a helper script was used, a link to the helper script or the command generated):
apptainer run --cleanenv --containall --writable-tmpfs --nv \
--env CUDA_VISIBLE_DEVICES=$CUDA_VISIBLE_DEVICES \
-B ${DERIVATIVES_DIR_TMP}:/derivatives:ro,${DERIVATIVES_DIR_TMP}:/out,${WORK_DIR}:${WORK_DIR},${FS_LICENSE}:/opt/freesurfer/license.txt \
-B $EDDY_CONFIG:$EDDY_CONFIG \
/software/qsiprep_${VERSION}.sif \
/derivatives/nii /out/qsiprep participant \
--fs-license-file /opt/freesurfer/license.txt \
--output-resolution $OUTPUT_RES \
--work-dir ${WORK_DIR} \
--participant-label ${subjectID} \
--session-id ${sessionID} \
--subject-anatomical-reference sessionwise \
--skip-anat-based-spatial-normalization \
--denoise-method none \
--eddy-config $EDDY_CONFIG \
--nthreads ${ncpus} \
--omp-nthreads $((ncpus - 2)) \
--stop-on-first-crash \
-v -v
Version:
1.0.0rc2.dev0+g789be41.d20241119
Environment (Docker, Singularity / Apptainer, custom installation):
Singularity
Relevant log outputs (up to 20 lines):
250220-11:50:35,425 nipype.workflow INFO:
[Node] Finished "extract_b0_series", elapsed time 2.386315s.
250220-11:50:35,425 nipype.workflow WARNING:
Storing result file without outputs
250220-11:50:35,426 nipype.workflow WARNING:
[Node] Error on "qsiprep_1_0_wf.sub_testDTI_ses_multiHARDI_wf.dwi_preproc_ses_multiHARDI_wf.hmc_sdc_wf.extract_b0_series" (/scratch/pnedelec/qsiprep_sub-testDTI_ses-multiHARDI/qsiprep_1_0_wf/sub_testDTI_ses_multiHARDI_wf/dwi_preproc_ses_multiHARDI_wf/hmc_sdc_wf/extract_b0_series)
250220-11:50:36,832 nipype.workflow ERROR:
Node extract_b0_series failed to run on host pgpudev1.wynton.ucsf.edu.
250220-11:50:36,841 nipype.workflow ERROR:
Saving crash info to /out/qsiprep/sub-testDTI/log/20250220-111113_f562afb5-b446-483d-9d97-d47f9c4dd194/crash-20250220-115036-pnedelec-extract_b0_series-5a9b73e5-08e7-4c30-9b13-d9f119cd2e8f.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 extract_b0_series.
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/gradients.py", line 327, in _run_interface
new_data = nim.index_img(self.inputs.dwi_series, indices)
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nilearn/image/image.py", line 669, in index_img
return _index_img(imgs, index)
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nilearn/_utils/niimg_conversions.py", line 77, in _index_img
img, _get_data(img)[:, :, :, index], img.affine, copy_header=True
IndexError: index 65 is out of bounds for axis 3 with size 65
250220-11:50:36,869 nipype.workflow CRITICAL:
QSIPrep failed: 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 extract_b0_series.
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/gradients.py", line 327, in _run_interface
new_data = nim.index_img(self.inputs.dwi_series, indices)
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nilearn/image/image.py", line 669, in index_img
return _index_img(imgs, index)
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nilearn/_utils/niimg_conversions.py", line 77, in _index_img
img, _get_data(img)[:, :, :, index], img.affine, copy_header=True
IndexError: index 65 is out of bounds for axis 3 with size 65
250220-11:50:58,14 nipype.interface INFO:
Converting oblique-image bvecs to world coordinate reference frame
250220-11:50:58,35 nipype.interface INFO:
mrinfo -dwgrad -fslgrad /scratch/pnedelec/qsiprep_sub-testDTI_ses-multiHARDI/qsiprep_1_0_wf/sub_testDTI_ses_multiHARDI_wf/dwi_preproc_ses_multiHARDI_wf/hmc_sdc_wf/split_eddy_lps/_0000eddy_corrected_LPS_fix.eddy_rotated_bvecs /scratch/pnedelec/qsiprep_sub-testDTI_ses-multiHARDI/qsiprep_1_0_wf/sub_testDTI_ses_multiHARDI_wf/dwi_preproc_ses_multiHARDI_wf/hmc_sdc_wf/split_eddy_lps/sub-testDTI_ses-multiHARDI_merged_0000.bval /scratch/pnedelec/qsiprep_sub-testDTI_ses-multiHARDI/qsiprep_1_0_wf/sub_testDTI_ses_multiHARDI_wf/dwi_preproc_ses_multiHARDI_wf/hmc_sdc_wf/split_eddy_lps/vol0000.nii.gz
250220-11:50:58,102 nipype.interface INFO:
.... more mrinfo log ....
250220-11:51:02,671 nipype.interface INFO:
mrinfo -dwgrad -fslgrad /scratch/pnedelec/qsiprep_sub-testDTI_ses-multiHARDI/qsiprep_1_0_wf/sub_testDTI_ses_multiHARDI_wf/dwi_preproc_ses_multiHARDI_wf/hmc_sdc_wf/split_eddy_lps/_0064eddy_corrected_LPS_fix.eddy_rotated_bvecs /scratch/pnedelec/qsiprep_sub-testDTI_ses-multiHARDI/qsiprep_1_0_wf/sub_testDTI_ses_multiHARDI_wf/dwi_preproc_ses_multiHARDI_wf/hmc_sdc_wf/split_eddy_lps/sub-testDTI_ses-multiHARDI_merged_0064.bval /scratch/pnedelec/qsiprep_sub-testDTI_ses-multiHARDI/qsiprep_1_0_wf/sub_testDTI_ses_multiHARDI_wf/dwi_preproc_ses_multiHARDI_wf/hmc_sdc_wf/split_eddy_lps/vol0064.nii.gz
250220-11:51:02,725 nipype.workflow INFO:
[Node] Finished "split_eddy_lps", elapsed time 29.704356s.
250220-11:51:02,725 nipype.workflow WARNING:
Storing result file without outputs
250220-11:51:02,725 nipype.workflow WARNING:
[Node] Error on "qsiprep_1_0_wf.sub_testDTI_ses_multiHARDI_wf.dwi_preproc_ses_multiHARDI_wf.hmc_sdc_wf.split_eddy_lps" (/scratch/pnedelec/qsiprep_sub-testDTI_ses-multiHARDI/qsiprep_1_0_wf/sub_testDTI_ses_multiHARDI_wf/dwi_preproc_ses_multiHARDI_wf/hmc_sdc_wf/split_eddy_lps)
Seems like extract_b0_series
has an index error…
Both dwis have 1 b0 and 64 b2000. AP has json: "PhaseEncodingDirection": "j-"
, PA “j”.
Not sure how to go about solving this… Thanks!