Qsiprep processing of HCP S1200 subject

Dear fellow researchers:

I’m trying to run qsiprep on a HCP S1200 subject and is running into errors with the eddy processing step. I am running the processing on the raw data after converting it to BIDS format. (I could start from the minimum preprocessed version if there is now a suggested way with qsiprep.) This post maybe similar to some earlier posts, but I did not find a solution.

The command that I ran is:
singularity run --cleanenv /home/simg/qsiprep-v0.15.3.simg /home/hcp_unprocessed/bids_files_test /home/hcp_1sbj_dwi/qsiprep_runEddy participant --participant-label sub-100307 -vv --omp-nthreads 4 --mem_mb 63000 --n_cpus 4 -w /scratch/hcp_1sbj_dwi/tmp_work_runEddy --output-resolution 1.25 --distortion-group-merge average --fs-license-file /home/licenses/freesurfer.txt

The crash report I got is:
Node: qsiprep_wf.single_subject_100307_wf.dwi_preproc_wf.hmc_sdc_wf.eddy
Working directory: /home/hcp_1sbj_dwi/tmp_work_runEddy/qsiprep_wf/single_subject_100307_wf/dwi_preproc_wf/hmc_sdc_wf/eddy

Node inputs:

args =
cnr_maps = True
dont_peas = False
dont_sep_offs_move = False
estimate_move_by_susceptibility =
fep = False
field =
field_mat =
flm = linear
fudge_factor = 10.0
fwhm =
in_acqp =
in_bval =
in_bvec =
in_file =
in_index =
in_mask =
in_topup_fieldcoef =
in_topup_movpar =
initrand =
interp = spline
is_shelled = True
json =
mbs_ksp =
mbs_lambda =
mbs_niter =
method = jac
mporder =
multiband_factor =
multiband_offset =
niter = 5
num_threads = 4
nvoxhp = 1000
out_base = eddy_corrected
outlier_nstd =
outlier_nvox =
outlier_pos =
outlier_sqr =
outlier_type =
output_type = NIFTI_GZ
repol = True
residuals = False
session =
slice2vol_interp =
slice2vol_lambda =
slice2vol_niter =
slice_order =
slm = linear
use_cuda = False

Traceback (most recent call last):
File “/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/plugins/multiproc.py”, line 67, in run_node
result[“result”] = node.run(updatehash=updatehash)
File “/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py”, line 521, in run
result = self._run_interface(execute=True)
File “/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py”, line 639, in _run_interface
return self._run_command(execute)
File “/usr/local/miniconda/lib/python3.8/site-packages/nipype/pipeline/engine/nodes.py”, line 750, in _run_command
raise NodeExecutionError(
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node eddy.

Traceback (most recent call last):
File “/usr/local/miniconda/lib/python3.8/site-packages/nipype/interfaces/base/core.py”, line 454, in aggregate_outputs
setattr(outputs, key, val)
File “/usr/local/miniconda/lib/python3.8/site-packages/nipype/interfaces/base/traits_extension.py”, line 330, in validate
value = super(File, self).validate(objekt, name, value, return_pathlike=True)
File “/usr/local/miniconda/lib/python3.8/site-packages/nipype/interfaces/base/traits_extension.py”, line 135, in validate
self.error(objekt, name, str(value))
File “/usr/local/miniconda/lib/python3.8/site-packages/traits/base_trait_handler.py”, line 74, in error
raise TraitError(
traits.trait_errors.TraitError: The ‘out_corrected’ trait of an ExtendedEddyOutputSpec instance must be a pathlike object or string representing an existing file, but a value of ‘/home/hcp_1sbj_dwi/tmp_work_runEddy/qsiprep_wf/single_subject_100307_wf/dwi_preproc_wf/hmc_sdc_wf/eddy/eddy_corrected.nii.gz’ <class ‘str’> was specified.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File “/usr/local/miniconda/lib/python3.8/site-packages/nipype/interfaces/base/core.py”, line 401, in run
outputs = self.aggregate_outputs(runtime)
File “/usr/local/miniconda/lib/python3.8/site-packages/nipype/interfaces/base/core.py”, line 461, in aggregate_outputs
raise FileNotFoundError(msg)
FileNotFoundError: No such file or directory ‘/home/hcp_1sbj_dwi/tmp_work_runEddy/qsiprep_wf/single_subject_100307_wf/dwi_preproc_wf/hmc_sdc_wf/eddy/eddy_corrected.nii.gz’ for output ‘out_corrected’ of a ExtendedEddy interface


It looks like you don’t have your scratch drive mounted to QSIPrep. /home should be mounted by default. Can you make your code begin singularity run -B /scratch --cleanenv ....... and try again?


I’m not sure if it’s due to the issue you mentioned since the processing was able to proceed much further with the --hmc_model 3dSHORE option and generate some figures, although there was another unrelated error. I had set the cluster path to /home/ in the posting.

The problem seems to be solved by using an earlier version of QSIPrep (tested with v0.10.0 on Singularity and v0.12.2 on Dockers).

After changing the version, another error was found with the BIDS conversion, which may be particular to the dataset, and was addressed by manually changing the “TotalReadoutTime” in the JSON files based on this earlier post: Stuck when run QSIprep on HCP data. This modification did not work with the latest version of QSIPrep.