Open
Description
Summary
Originally reported by a fella co-developer against heudiconv that it crashed when path contained a space in it.
In heudiconv we depend on nipype to just run dcm2niix
interface: https://github.com/nipy/heudiconv/blob/master/heudiconv/convert.py#L803
Actual behavior
*(Pdb) p convertnode.inputs
anon_bids = <undefined>
args = <undefined>
bids_format = True
comment = <undefined>
compress = y
compression = <undefined>
crop = False
environ = {}
has_private = False
ignore_deriv = <undefined>
merge_imgs = False
out_filename = sub-b0dwiForFmap_acq-b0dwi_epi_heudiconv133
output_dir = /tmp/tr icky/pytest-of-yoh/pytest-1/test_b0dwi_for_fmap0/sub-b0dwiForFmap/fmap
philips_float = <undefined>
series_numbers = <undefined>
single_file = False
source_dir = <undefined>
source_names = ['/home/yoh/proj/heudiconv/heudiconv-master/heudiconv/tests/data/b0dwiForFmap/b0dwi_for_fmap+00001.dcm', '/home/yoh/proj/heudiconv/heudiconv-master/heudiconv/tests/data/b0dwiForFmap/b0dwi_for_fmap+00002.dcm', '/home/yoh/proj/heudiconv/heudiconv-master/heudiconv/tests/data/b0dwiForFmap/b0dwi_for_fmap+00003.dcm']
to_nrrd = <undefined>
verbose = False
observe that output_dir
has space in /tmp/tr icky
and then running that node kabooms:
(Pdb) convertnode.run()
230915-17:50:37,584 nipype.workflow INFO:
[Node] Setting-up "convert" in "/tmp/tr icky/dcm2niixiftfysju/convert".
230915-17:50:37,588 nipype.workflow INFO:
[Node] Executing "convert" <nipype.interfaces.dcm2nii.Dcm2niix>
230915-17:50:37,633 nipype.interface INFO:
stdout 2023-09-15T17:50:37.633592:Chris Rorden's dcm2niiX version v1.0.20220720 (JP2:OpenJPEG) GCC13.2.0 x86-64 (64-bit Linux)
230915-17:50:37,633 nipype.interface INFO:
stdout 2023-09-15T17:50:37.633592:Warning: only processing last of 2 input files (recompile with 'myEnableMultipleInputs' to recursively process multiple files)
230915-17:50:37,633 nipype.interface INFO:
stderr 2023-09-15T17:50:37.633709:Error: Input folder invalid: icky/dcm2niixiftfysju/convert
230915-17:50:37,645 nipype.workflow INFO:
[Node] Finished "convert", elapsed time 0.020344s.
230915-17:50:37,646 nipype.workflow WARNING:
[Node] Error on "convert" (/tmp/tr icky/dcm2niixiftfysju/convert)
*** nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node convert.
Cmdline:
dcm2niix -b y -z y -x n -t n -m n -f sub-b0dwiForFmap_acq-b0dwi_epi_heudiconv133 -o /tmp/tr icky/pytest-of-yoh/pytest-1/test_b0dwi_for_fmap0/sub-b0dwiForFmap/fmap -s n -v n /tmp/tr icky/dcm2niixiftfysju/convert
Stdout:
Chris Rorden's dcm2niiX version v1.0.20220720 (JP2:OpenJPEG) GCC13.2.0 x86-64 (64-bit Linux)
Warning: only processing last of 2 input files (recompile with 'myEnableMultipleInputs' to recursively process multiple files)
Stderr:
Error: Input folder invalid: icky/dcm2niixiftfysju/convert
Traceback:
RuntimeError: subprocess exited with code 5.
(Pdb) import nipype
(Pdb) nipype.__version__
'1.8.6'
Expected behavior
to not crash
How to replicate the behavior
get heudiconv env, run tests with TMPDIR pointing to a folder with a space in the filename
mkdir /tmp/tr\ icky
TMPDIR=/tmp/tr\ icky python -m pytest -s -v heudiconv/tests/test_convert.py
https://docs.python.org/3/library/shlex.html#shlex.quote might be of help to quote individual args for POSIX shells if cannot be just passed as a list and shell invocation need to be composed (didn't look what is happening here)
Metadata
Metadata
Assignees
Labels
No labels