Processing of non-brain imaging data (SynthStrip error)

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