Summary of what happened:
Hi all (attn: @tsalo),
I am trying to run the XCP-D pipeline on fmriprep-preprocessed data with nifti as file format. However, I’m running into an error saying that no cifti extension found in file /usr/local/miniconda/lib/python3.10/site-packages/xcp-d/data/atlases/atlas-Glasser_space-MNI152NLin6Asym_res-01_desg.nii.gz
when executing the wb_command (see log below). To my understanding, this error is a consequence of the resample_atlas_to_cortical_thickness0
command just before that fails to produce the <label>_space-fsLR_den-91k_thickness.dscalar.nii.gz
Am I missing something during the configuration? I am writing below the singularity command (generated with BABS) and part of the log file reporting the error. The pipeline was run on an internetless HPC. Thanks!
Command used (and if a helper script was used, a link to the helper script or the command generated):
stripped_id=${subid#sub-}
sesid="$2"
FMRIPREP_ZIP="$3"
wd=${PWD}
cd inputs/data/fmriprep
7z x `basename ${FMRIPREP_ZIP}`
cd $wd
mkdir -p ${PWD}/.git/tmp/wkdir
singularity run --cleanenv \
-B ${PWD} \
-B /home/gabridele/backup/templateflow:/SGLR/TEMPLATEFLOW_HOME \
-B /home/gabridele/license.txt:/SGLR/FREESURFER_HOME/license.txt \
--env TEMPLATEFLOW_HOME=/SGLR/TEMPLATEFLOW_HOME \
containers/.datalad/environments/xcp-d-0-10-1/image \
inputs/data/fmriprep/fmriprep \
outputs/xcp_d \
participant \
-w ${PWD}/.git/tmp/wkdir \
--mode nichart \
--nthreads 48 \
--omp-nthreads 8 \
--motion-filter-type none \
--nuisance-regressors 36P \
--abcc-qc y \
--output-type interpolated \
--lower-bpf 0.01 \
--upper-bpf 0.08 \
--combine-runs n \
--stop-on-first-crash \
--fs-license-file /SGLR/FREESURFER_HOME/license.txt \
-vvv \
--notrack \
--participant-label "${stripped_id}"
Version:
XCP-D version: 0.10.1 (as of logs), same issue encountered with version 0.10.5
fMRI-prep version: 24.1.1
BABS version: 0.0.8
Environment (Docker, Singularity / Apptainer, custom installation):
Singularity
Data formatted according to a validatable standard? Please provide the output of the validator:
PASTE VALIDATOR OUTPUT HERE
Relevant log outputs (up to 20 lines):
2025-02-06 16:22:25,936 [ INFO] [Job 21] Completed (xcp_d_0_10_wf.sub_01_wf.postprocess_0_wf.execsummary_functional_plots_wf.plot_boldref).
2025-02-06 16:22:25,937 [ DEBUG] Clearing 135 from queue
2025-02-06 16:22:25,937 [ DEBUG] Loading pkl: /local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/.git/tmp/wkdir/xcp_d_0_10_wf/sub_01_wf/parcellate_surfaces_wf/resample_atlas_to_cortical_thickness/mapflow/_resample_atlas_to_cortical_thickness0/result__resample_atlas_to_cortical_thickness0.pklz
2025-02-06 16:22:25,937 [ ERROR] Node _resample_atlas_to_cortical_thickness0 failed to run on host sn26.
2025-02-06 16:22:25,938 [ ERROR] Saving crash info to /local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/outputs/xcp_d/sub-01/log/20250206-162140_ef7be74c-9287-4e92-b8d4-ce50aa909816/crash-20250206-162225-gabridele-_resample_atlas_to_cortical_thickness0-7cc047da-7bff-4187-8153-ec8bac7c6b2e.txt
Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 67, in run_node
result["result"] = node.run(updatehash=updatehash)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
result = self._run_interface(execute=True)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
return self._run_command(execute)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 771, in _run_command
raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node _resample_atlas_to_cortical_thickness0.
Cmdline:
wb_command -cifti-create-dense-from-template /local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/inputs/data/fmriprep/fmriprep/sub-01/ses-1/anat/sub-01_ses-1_space-fsLR_den-91k_thickness.dscalar.nii resampled_atlas.dlabel.nii -cifti /usr/local/miniconda/lib/python3.10/site-packages/xcp_d/data/atlases/atlas-Glasser/atlas-Glasser_space-MNI152NLin6Asym_res-01_dseg.nii.gz
Stdout:
Stderr:
While running:
wb_command -cifti-create-dense-from-template /local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/inputs/data/fmriprep/fmriprep/sub-01/ses-1/anat/sub-01_ses-1_space-fsLR_den-91k_thickness.dscalar.nii resampled_atlas.dlabel.nii -cifti /usr/local/miniconda/lib/python3.10/site-packages/xcp_d/data/atlases/atlas-Glasser/atlas-Glasser_space-MNI152NLin6Asym_res-01_dseg.nii.gz
ERROR: no cifti extension found in file '/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/data/atlases/atlas-Glasser/atlas-Glasser_space-MNI152NLin6Asym_res-01_dseg.nii.gz'
Traceback:
Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 453, in aggregate_outputs
setattr(outputs, key, val)
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: The 'out_file' trait of a _CiftiCreateDenseFromTemplateOutputSpec instance must be a pathlike object or string representing an existing file, but a value of '/local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/.git/tmp/wkdir/xcp_d_0_10_wf/sub_01_wf/parcellate_surfaces_wf/resample_atlas_to_cortical_thickness/mapflow/_resample_atlas_to_cortical_thickness0/resampled_atlas.dlabel.nii' <class 'str'> was specified.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 400, in run
outputs = self.aggregate_outputs(runtime)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 460, in aggregate_outputs
raise FileNotFoundError(msg)
FileNotFoundError: No such file or directory '/local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/.git/tmp/wkdir/xcp_d_0_10_wf/sub_01_wf/parcellate_surfaces_wf/resample_atlas_to_cortical_thickness/mapflow/_resample_atlas_to_cortical_thickness0/resampled_atlas.dlabel.nii' for output 'out_file' of a CiftiCreateDenseFromTemplate interface
2025-02-06 16:22:25,938 [CRITICAL] XCP-D failed: Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 67, in run_node
result["result"] = node.run(updatehash=updatehash)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
result = self._run_interface(execute=True)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
return self._run_command(execute)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 771, in _run_command
raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node _resample_atlas_to_cortical_thickness0.
Cmdline:
wb_command -cifti-create-dense-from-template /local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/inputs/data/fmriprep/fmriprep/sub-01/ses-1/anat/sub-01_ses-1_space-fsLR_den-91k_thickness.dscalar.nii resampled_atlas.dlabel.nii -cifti /usr/local/miniconda/lib/python3.10/site-packages/xcp_d/data/atlases/atlas-Glasser/atlas-Glasser_space-MNI152NLin6Asym_res-01_dseg.nii.gz
Stdout:
Stderr:
While running:
wb_command -cifti-create-dense-from-template /local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/inputs/data/fmriprep/fmriprep/sub-01/ses-1/anat/sub-01_ses-1_space-fsLR_den-91k_thickness.dscalar.nii resampled_atlas.dlabel.nii -cifti /usr/local/miniconda/lib/python3.10/site-packages/xcp_d/data/atlases/atlas-Glasser/atlas-Glasser_space-MNI152NLin6Asym_res-01_dseg.nii.gz
ERROR: no cifti extension found in file '/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/data/atlases/atlas-Glasser/atlas-Glasser_space-MNI152NLin6Asym_res-01_dseg.nii.gz'
Traceback:
Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 453, in aggregate_outputs
setattr(outputs, key, val)
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: The 'out_file' trait of a _CiftiCreateDenseFromTemplateOutputSpec instance must be a pathlike object or string representing an existing file, but a value of '/local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/.git/tmp/wkdir/xcp_d_0_10_wf/sub_01_wf/parcellate_surfaces_wf/resample_atlas_to_cortical_thickness/mapflow/_resample_atlas_to_cortical_thickness0/resampled_atlas.dlabel.nii' <class 'str'> was specified.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 400, in run
outputs = self.aggregate_outputs(runtime)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 460, in aggregate_outputs
raise FileNotFoundError(msg)
FileNotFoundError: No such file or directory '/local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/.git/tmp/wkdir/xcp_d_0_10_wf/sub_01_wf/parcellate_surfaces_wf/resample_atlas_to_cortical_thickness/mapflow/_resample_atlas_to_cortical_thickness0/resampled_atlas.dlabel.nii' for output 'out_file' of a CiftiCreateDenseFromTemplate interface
2025-02-06 16:22:26,137 [ DEBUG] open file: /local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/outputs/xcp_d/dataset_description.json
2025-02-06 16:22:26,358 [ INFO] Generating executive summary.
2025-02-06 16:22:26,385 [ DEBUG] open file: /local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/outputs/xcp_d/dataset_description.json
2025-02-06 16:22:26,387 [ INFO] [Node] Setting-up "xcp_d_0_10_wf.sub_01_wf.postprocess_0_wf.prepare_confounds_wf.censor_report" in "/local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/.git/tmp/wkdir/xcp_d_0_10_wf/sub_01_wf/postprocess_0_wf/prepare_confounds_wf/censor_report".
2025-02-06 16:22:26,390 [ INFO] [Node] Executing "censor_report" <xcp_d.interfaces.plotting.CensoringPlot>
2025-02-06 16:22:26,403 [ INFO] [Node] Executing "plot_design_matrix" <nipype.interfaces.utility.wrappers.Function>
2025-02-06 16:22:26,447 [ DEBUG] open file: /local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/outputs/xcp_d/sub-01/ses-1/func/sub-01_ses-1_task-rest_motion.json
2025-02-06 16:22:26,489 [ INFO] [Node] Finished "censor_report", elapsed time 0.096543s.
Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/cli/run.py", line 113, in main
xcpd_wf.run(**config.nipype.get_plugin())
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/workflows.py", line 638, in run
runner.run(execgraph, updatehash=updatehash, config=self.config)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/plugins/base.py", line 178, in run
self._clean_queue(jobid, graph, result=result)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/plugins/base.py", line 256, in _clean_queue
raise RuntimeError("".join(result["traceback"]))
RuntimeError: Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 67, in run_node
result["result"] = node.run(updatehash=updatehash)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 527, in run
result = self._run_interface(execute=True)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 645, in _run_interface
return self._run_command(execute)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 771, in _run_command
raise NodeExecutionError(msg)
nipype.pipeline.engine.nodes.NodeExecutionError: Exception raised while executing Node _resample_atlas_to_cortical_thickness0.
Cmdline:
wb_command -cifti-create-dense-from-template /local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/inputs/data/fmriprep/fmriprep/sub-01/ses-1/anat/sub-01_ses-1_space-fsLR_den-91k_thickness.dscalar.nii resampled_atlas.dlabel.nii -cifti /usr/local/miniconda/lib/python3.10/site-packages/xcp_d/data/atlases/atlas-Glasser/atlas-Glasser_space-MNI152NLin6Asym_res-01_dseg.nii.gz
Stdout:
Stderr:
While running:
wb_command -cifti-create-dense-from-template /local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/inputs/data/fmriprep/fmriprep/sub-01/ses-1/anat/sub-01_ses-1_space-fsLR_den-91k_thickness.dscalar.nii resampled_atlas.dlabel.nii -cifti /usr/local/miniconda/lib/python3.10/site-packages/xcp_d/data/atlases/atlas-Glasser/atlas-Glasser_space-MNI152NLin6Asym_res-01_dseg.nii.gz
ERROR: no cifti extension found in file '/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/data/atlases/atlas-Glasser/atlas-Glasser_space-MNI152NLin6Asym_res-01_dseg.nii.gz'
Traceback:
Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 453, in aggregate_outputs
setattr(outputs, key, val)
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: The 'out_file' trait of a _CiftiCreateDenseFromTemplateOutputSpec instance must be a pathlike object or string representing an existing file, but a value of '/local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/.git/tmp/wkdir/xcp_d_0_10_wf/sub_01_wf/parcellate_surfaces_wf/resample_atlas_to_cortical_thickness/mapflow/_resample_atlas_to_cortical_thickness0/resampled_atlas.dlabel.nii' <class 'str'> was specified.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 400, in run
outputs = self.aggregate_outputs(runtime)
File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 460, in aggregate_outputs
raise FileNotFoundError(msg)
FileNotFoundError: No such file or directory '/local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/.git/tmp/wkdir/xcp_d_0_10_wf/sub_01_wf/parcellate_surfaces_wf/resample_atlas_to_cortical_thickness/mapflow/_resample_atlas_to_cortical_thickness0/resampled_atlas.dlabel.nii' for output 'out_file' of a CiftiCreateDenseFromTemplate interface
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/miniconda/bin/xcp_d", line 8, in <module>
sys.exit(main())
File "/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/cli/run.py", line 177, in main
failed_reports = generate_reports(
File "/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/reports/core.py", line 164, in generate_reports
exsumm.collect_inputs()
File "/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/interfaces/execsummary.py", line 210, in collect_inputs
mask_not_nan = (task_entity_sets['task'] == 'rest') & task_entity_sets[
File "/usr/local/miniconda/lib/python3.10/site-packages/pandas/core/frame.py", line 4102, in __getitem__
indexer = self.columns.get_loc(key)
File "/usr/local/miniconda/lib/python3.10/site-packages/pandas/core/indexes/range.py", line 417, in get_loc
raise KeyError(key)
KeyError: 'task'
2025-02-06 16:22:26,771 [ INFO] [Node] Finished "plot_design_matrix", elapsed time 0.364152s.
2025-02-06 16:22:26,797 [ INFO] [Node] Setting-up "xcp_d_0_10_wf.sub_01_wf.postprocess_0_wf.qc_report_wf.make_abcc_qc" in "/local/slurmtmp.168095/job-168095-sub-01-ses-1/ds/.git/tmp/wkdir/xcp_d_0_10_wf/sub_01_wf/postprocess_0_wf/qc_report_wf/make_abcc_qc".
2025-02-06 16:22:26,799 [ INFO] [Node] Executing "make_abcc_qc" <xcp_d.interfaces.utils.ABCCQC>
2025-02-06 16:22:26,916 [ INFO] [Node] Finished "make_abcc_qc", elapsed time 0.116304s.
2025-02-06 16:22:28,407 [ INFO] [Node] Finished "grab_first_volume", elapsed time 5.325977s.
2025-02-06 16:22:30,544 [ INFO] [Node] Finished "warp_t1w_to_template", elapsed time 7.609694s.
2025-02-06 16:22:34,730 [ INFO] [Node] Finished "calculate_mean_bold", elapsed time 11.588698s.
2025-02-06 16:23:31,535 [ INFO] [Node] Finished "despike3d", elapsed time 66.067952s.
[INFO] == Command exit (modification check follows) =====