XCP-D white matter atlas for HCP dataset

In my test, pennlinc/xcp_d:0.7.0 works well for HCP data and generates bold timeseries for cortical/subcortical atlas (e.g., 4S atlas). Here is my command:

docker run --rm -it \
-v /data3/HCP/input:/fmriprep:ro  \
-v /data3/HCP/wkdir:/work:rw  \
-v /data3/HCP/xcp_d:/out:rw \
-v /data/freesurfer/:/fs_license \
pennlinc/xcp_d:0.7.0 \
/fmriprep /out participant \
--cifti --despike \
--head_radius auto \
-w /work \
--input-type hcp \
--nthreads 20 --mem_gb 10 \
--fd-thresh 0 \
--nuisance-regressors 36P \
--fs-license-file /fs_license/freesurfer_license.txt \
--min-coverage 0.2 \
--stop-on-first-crash \
--atlases 4S156Parcels 4S256Parcels 4S456Parcels HCP

What I want is obtaining bold timeseries for ROIs based on JHU DTI-based white-matter atlases. However, xcp_d only keeps cleaned BOLD images as cifti file (*_space-fsLR_den-91k_desc-denoisedSmoothed_bold.dtseries.nii), without nifti file.

How can I get nifti output for HCP dataset if I need voxel-based BOLD signals for white matter?
Thanks.

Chenfei

Hi @chenfei-ye and welcome to neurostars!

Run XCP_D without the --cifti flag.

Best,
Steven

Thank you for your reply.

  1. According to the docs, ‘–cifti’ flag is automatically enabled by default for the ‘hcp’ and ‘dcan’ input types.

  2. I just tried to run xcp_d without the ‘–cifti’ flag with version 0.7.1rc5, it failed with the following error:

240406-06:03:29,146 nipype.workflow ERROR:
         Node parcellate_data failed to run on host b39a4d511fa3.
240406-06:03:29,173 nipype.workflow ERROR:
         Saving crash info to /out/sub-899885/log/20240406-055908_a36007a2-95f4-4a43-92ad-c193fd2a1780/crash-20240406-060329-root-parcellate_data-3d0bc9cd-8492-400f-ae49-13f16c37231f.txt
Traceback (most recent call last):
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 292, in _send_procs_to_workers
    num_subnodes = self.procs[jobid].num_subnodes()
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1308, in num_subnodes
    self._get_inputs()
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1322, in _get_inputs
    super(MapNode, self)._get_inputs()
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 619, in _get_inputs
    self.set_input(key, deepcopy(output_value))
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1157, in set_input
    self._set_mapnode_input(parameter, deepcopy(val))
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1164, in _set_mapnode_input
    setattr(self._inputs, name, newvalue)
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/traits_extension.py", line 424, in validate
    value = super(MultiObject, self).validate(objekt, name, newvalue)
  File "/usr/local/miniconda/lib/python3.10/site-packages/traits/trait_types.py", line 2699, in validate
    return TraitListObject(self, object, name, value)
  File "/usr/local/miniconda/lib/python3.10/site-packages/traits/trait_list_object.py", line 582, in __init__
    super().__init__(
  File "/usr/local/miniconda/lib/python3.10/site-packages/traits/trait_list_object.py", line 213, in __init__
    super().__init__(self.item_validator(item) for item in iterable)
  File "/usr/local/miniconda/lib/python3.10/site-packages/traits/trait_list_object.py", line 213, in <genexpr>
    super().__init__(self.item_validator(item) for item in iterable)
  File "/usr/local/miniconda/lib/python3.10/site-packages/traits/trait_list_object.py", line 865, in _item_validator
    return trait_validator(object, self.name, value)
File "/usr/local/miniconda/lib/python3.10/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.10/site-packages/nipype/interfaces/base/traits_extension.py", line 135, in validate
    self.error(objekt, name, str(value))
  File "/usr/local/miniconda/lib/python3.10/site-packages/traits/base_trait_handler.py", line 74, in error
    raise TraitError(
traits.trait_errors.TraitError: Each element of the 'atlas' trait of a DynamicTraitedSpec instance must be a pathlike object or string representing an existing file, but a value of '/out/atlases/atlas-4S156Parcels/atlas-4S156Parcels_space-fsLR_den-91k_dseg.dlabel.nii' <class 'str'> was specified.

Error setting node input:
Node: parcellate_data
input: atlas
results_file: /work/xcp_d_0_7_wf/sub_899885_wf/load_atlases_wf/ds_atlas/result_ds_atlas.pklz
value: ['/out/atlases/atlas-4S156Parcels/atlas-4S156Parcels_space-fsLR_den-91k_dseg.dlabel.nii', '/out/atlases/atlas-4S256Parcels/atlas-4S256Parcels_space-fsLR_den-91k_dseg.dlabel.nii', '/out/atlases/atlas-4S456Parcels/atlas-4S456Parcels_space-fsLR_den-91k_dseg.dlabel.nii', '/$ut/atlases/atlas-HCP/atlas-HCP_space-fsLR_den-91k_dseg.dlabel.nii']

240406-06:03:29,221 nipype.workflow CRITICAL:
         XCP-D failed: Traceback (most recent call last):
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 292, in _send_procs_to_workers
    num_subnodes = self.procs[jobid].num_subnodes()
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1308, in num_subnodes
    self._get_inputs()
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1322, in _get_inputs
    super(MapNode, self)._get_inputs()
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 619, in _get_inputs
    self.set_input(key, deepcopy(output_value))
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1157, in set_input
    self._set_mapnode_input(parameter, deepcopy(val))
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 1164, in _set_mapnode_input
    setattr(self._inputs, name, newvalue)
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/traits_extension.py", line 424, in validate
    value = super(MultiObject, self).validate(objekt, name, newvalue)
  File "/usr/local/miniconda/lib/python3.10/site-packages/traits/trait_types.py", line 2699, in validate
    return TraitListObject(self, object, name, value)
File "/usr/local/miniconda/lib/python3.10/site-packages/traits/trait_list_object.py", line 582, in __init__
    super().__init__(
  File "/usr/local/miniconda/lib/python3.10/site-packages/traits/trait_list_object.py", line 213, in __init__
    super().__init__(self.item_validator(item) for item in iterable)
  File "/usr/local/miniconda/lib/python3.10/site-packages/traits/trait_list_object.py", line 213, in <genexpr>
    super().__init__(self.item_validator(item) for item in iterable)
  File "/usr/local/miniconda/lib/python3.10/site-packages/traits/trait_list_object.py", line 865, in _item_validator
    return trait_validator(object, self.name, value)
  File "/usr/local/miniconda/lib/python3.10/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.10/site-packages/nipype/interfaces/base/traits_extension.py", line 135, in validate
    self.error(objekt, name, str(value))
  File "/usr/local/miniconda/lib/python3.10/site-packages/traits/base_trait_handler.py", line 74, in error
    raise TraitError(
traits.trait_errors.TraitError: Each element of the 'atlas' trait of a DynamicTraitedSpec instance must be a pathlike object or string representing an existing file, but a value of '/out/atlases/atlas-4S156Parcels/atlas-4S156Parcels_space-fsLR_den-91k_dseg.dlabel.nii' <class 'str'> was specified.

Error setting node input:
Node: parcellate_data
input: atlas
results_file: /work/xcp_d_0_7_wf/sub_899885_wf/load_atlases_wf/ds_atlas/result_ds_atlas.pklz
value: ['/out/atlases/atlas-4S156Parcels/atlas-4S156Parcels_space-fsLR_den-91k_dseg.dlabel.nii', '/out/atlases/atlas-4S256Parcels/atlas-4S256Parcels_space-fsLR_den-91k_dseg.dlabel.nii', '/out/atlases/atlas-4S456Parcels/atlas-4S456Parcels_space-fsLR_den-91k_dseg.dlabel.nii', '/out/atlases/atlas-HCP/atlas-HCP_space-fsLR_den-91k_dseg.dlabel.nii']

240406-06:03:29,988 cli ERROR:
         Processing did not finish successfully. Errors occurred while processing data from participants: 899885 (1). Check the HTML reports for details.
Sentry is attempting to send 7 pending events
Waiting up to 2 seconds
Press Ctrl-C to quit

Could you please check it out?
Thank you for you help @Steven @tsalo