Hi everyone,
While I understand that QSIPrep is optimized for brain DTI imaging, I’m wondering if it’s possible to adapt the workflow for non-brain imaging — specifically, for peripheral nerves.
For my research question, I’ve attempted to bypass SynthStrip
, but without success, and I keep running into errors. Has anyone here tried something similar or managed to get QSIPrep running on non-brain datasets?
Any advice or shared experience would be greatly appreciated!
Best,
jennyy
Command used (and if a helper script was used, a link to the helper script or the command generated):
docker run \
--rm \
-v /d/ab/bids_dataset:/data:ro \
-v /d/ab/qsiprep_output:/out \
-v /d/ab/qsiprep_work:/work \
-w /work \
myqsiprep:latest \
/data /out participant \
--participant-label 22 \
--dwi-only \
--output-resolution 1.5 \
--denoise-method dwidenoise \
--unringing-method mrdegibbs \
--pepolar-method TOPUP \
Version:
QSIPrep version 1.0.2.dev0+gfc89945.d20250405
Environment (Docker, Singularity / Apptainer, custom installation):
Docker
Relevant log outputs (up to 20 lines):
250714-11:19:51,30 nipype.workflow IMPORTANT:
QSIPrep started!
250714-11:21:23,307 nipype.workflow INFO:
[Node] Setting-up "qsiprep_1_0_wf.sub_22_wf.dwi_preproc_wf.hmc_sdc_wf.pre_eddy_b0_ref_wf.synthstrip_wf.mocksynthstrip" in "/work/qsiprep_1_0_wf/sub_22_wf/dwi_preproc_wf/hmc_sdc_wf/pre_eddy_b0_ref_wf/synthstrip_wf/mocksynthstrip".
250714-11:21:23,887 nipype.workflow INFO:
[Node] Executing "mocksynthstrip" <qsiprep.interfaces.freesurfer.MockSynthStrip>
250714-11:21:24,345 nipype.workflow INFO:
[Node] Finished "mocksynthstrip", elapsed time 0.416717s.
250714-11:21:24,346 nipype.workflow WARNING:
Storing result file without outputs
250714-11:21:24,414 nipype.workflow WARNING:
[Node] Error on "qsiprep_1_0_wf.sub_22_wf.dwi_preproc_wf.hmc_sdc_wf.pre_eddy_b0_ref_wf.synthstrip_wf.mocksynthstrip" (/work/qsiprep_1_0_wf/sub_22_wf/dwi_preproc_wf/hmc_sdc_wf/pre_eddy_b0_ref_wf/synthstrip_wf/mocksynthstrip)
250714-11:21:24,762 nipype.workflow ERROR:
Node mocksynthstrip failed to run on host 9cd5450a5eed.
250714-11:21:24,814 nipype.workflow ERROR:
Saving crash info to /out/sub-22/log/20250714-111837_30bdb724-9823-4861-9b3a-0236f7efb5f3/crash-20250714-112124-root-mocksynthstrip-eccf1fdc-f2bc-4255-957b-6dc4dd431f07.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 mocksynthstrip.
Traceback:
Traceback (most recent call last):
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 457, in aggregate_outputs
setattr(outputs, key, val)
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/traits_extension.py", line 325, in validate
value = super().validate(objekt, name, value, return_pathlike=True)
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/traits_extension.py", line 135, in validate
self.error(objekt, name, str(value))
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/traits/base_trait_handler.py", line 74, in error
raise TraitError(
traits.trait_errors.TraitError: The 'out_brain_mask' trait of a _SynthStripOutputSpec instance must be a pathlike object or string representing an existing file, but a value of '/work/qsiprep_1_0_wf/sub_22_wf/dwi_preproc_wf/hmc_sdc_wf/pre_eddy_b0_ref_wf/synthstrip_wf/mocksynthstrip/topup_imain_corrected_avg_trans_brain_mask.nii.gz' <class 'str'> was specified.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 404, in run
outputs = self.aggregate_outputs(runtime)
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 464, in aggregate_outputs
raise FileNotFoundError(msg)
FileNotFoundError: No such file or directory '/work/qsiprep_1_0_wf/sub_22_wf/dwi_preproc_wf/hmc_sdc_wf/pre_eddy_b0_ref_wf/synthstrip_wf/mocksynthstrip/topup_imain_corrected_avg_trans_brain_mask.nii.gz' for output 'out_brain_mask' of a MockSynthStrip interface
250714-11:21:26,655 nipype.workflow ERROR:
could not run node: qsiprep_1_0_wf.sub_22_wf.dwi_preproc_wf.hmc_sdc_wf.pre_eddy_b0_ref_wf.synthstrip_wf.mocksynthstrip
250714-11:21:26,830 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 mocksynthstrip.
Traceback:
Traceback (most recent call last):
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 457, in aggregate_outputs
setattr(outputs, key, val)
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/traits_extension.py", line 325, in validate
value = super().validate(objekt, name, value, return_pathlike=True)
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/traits_extension.py", line 135, in validate
self.error(objekt, name, str(value))
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/traits/base_trait_handler.py", line 74, in error
raise TraitError(
traits.trait_errors.TraitError: The 'out_brain_mask' trait of a _SynthStripOutputSpec instance must be a pathlike object or string representing an existing file, but a value of '/work/qsiprep_1_0_wf/sub_22_wf/dwi_preproc_wf/hmc_sdc_wf/pre_eddy_b0_ref_wf/synthstrip_wf/mocksynthstrip/topup_imain_corrected_avg_trans_brain_mask.nii.gz' <class 'str'> was specified.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 404, in run
outputs = self.aggregate_outputs(runtime)
File "/opt/conda/envs/qsiprep/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 464, in aggregate_outputs
raise FileNotFoundError(msg)
FileNotFoundError: No such file or directory '/work/qsiprep_1_0_wf/sub_22_wf/dwi_preproc_wf/hmc_sdc_wf/pre_eddy_b0_ref_wf/synthstrip_wf/mocksynthstrip/topup_imain_corrected_avg_trans_brain_mask.nii.gz' for output 'out_brain_mask' of a MockSynthStrip interface