Error in xcp_d: error in load_atlases_wf_copy_atlas

Summary of what happened:

Hello,

I am running an xcp_d post-processing pipeline using resting state scans that were preprocessed through fmriprep, by another colleague last year.

About half of the participants are running with no errors popping up - but half keep getting the same error codes - see below

Perhaps this is a left over error from the fmriprep preprocessing, but then surely that would impact all participants ?

Any support would be really helpful :slight_smile:

Command used (and if a helper script was used, a link to the helper script or the command generated):

docker run --rm -it \
-v /mnt/mpathymri/NAC_RS/fmriprep/prep_derivatives/fmriprep:/fmriprep:ro \
-v /mnt/mpathymri/mpathy_mri_docker/xcptmp/nac_neuro:/work:rw \
-v /mnt/mpathymri/mpathy_mri_docker/xcp_d/derivatives:/out:rw \
-v /mnt/mpathymri/mpathy_mri_docker/xcp_d/prep_derivates/freesurfer:/freesurfer:ro \
-v /mnt/mpathymri/mpathy_mri_docker/ref_files/freesurfer.txt:/license.txt:ro \
pennlinc/xcp_d:latest /fmriprep /out participant -«
-mode none \
--task-id restingstate \
--participant_label 027 \
--despike \
--head_radius 50 \
-w /work \
--smoothing 6 \
-f 0.5 \
--fs-license-file /license.txt \
--abcc-qc n \
--combine-runs n \
--input-type fmriprep \
--file-format nifti \
--linc-qc n \
--motion-filter-type none \
--output-type censored \
--nuisance-regressors 36P \
--warp-surfaces-native2std n \
--min-coverage 0.5 \
--create-matrices all

Version:

0.10.6

Environment (Docker, Singularity / Apptainer, custom installation):

Docker

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):

250305-02:39:01,4 nipype.workflow ERROR:
         Node _copy_atlas13 failed to run on host e2c638333ee6.
250305-02:39:01,15 nipype.workflow ERROR:
         Saving crash info to /out/sub-026/log/20250305-023034_61711f6d-7917-4fac-8d90-725d85fd867c/crash-20250305-023901-root-_copy_atlas13-67a34162-2c6d-4921-8cf3-d92abd9bad25.txt
Traceback (most recent call last):
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/plugins/multiproc.py", line 66, in run_node
    result["result"] = node.run(updatehash=updatehash)
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 525, in run
    result = self._run_interface(execute=True)
  File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/pipeline/engine/nodes.py", line 643, in _run_interface
    return self._run_command(execute)
  File "/usr/local/miniconda/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 _copy_atlas13.

Traceback:
        Traceback (most recent call last):
          File "/usr/local/miniconda/lib/python3.10/site-packages/nipype/interfaces/base/core.py", line 401, in run
            runtime = self._run_interface(runtime)
          File "/usr/local/miniconda/lib/python3.10/site-packages/xcp_d/interfaces/bids.py", line 285, in _run_interface
            raise ValueError(
        ValueError: Existing '4S956Parcels' atlas affine (/out/atlases/atlas-4S956Parcels/atlas-4S956Parcels_space-MNI152NLin2009cAsym_dseg.nii.gz) is different from the input file affine (/work/xcp_d_0_10_wf/sub_026_wf/load_atlases_wf/warp_atlases_to_bold_space/mapflow/_warp_atlases_to_bold_space13/atlas-4S956Parcels_space-MNI152NLin6Asym_res-01_dseg_trans.nii.gz).


250305-02:39:02,938 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,947 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,952 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,956 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,960 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,964 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,968 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,970 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,973 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,976 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,980 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,983 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,986 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:02,989 nipype.workflow ERROR:
         could not run node: xcp_d_0_10_wf.sub_026_wf.load_atlases_wf.copy_atlas
250305-02:39:03,303 nipype.workflow CRITICAL:
         XCP-D failed: 14 raised. Re-raising first.

Screenshots / relevant information:


Hi @etow6030 and welcome to neurostars!

In the future please do not delete the software support post category template. You can see I edited it back into your post this time.

Additional information that would help us debug would be:

  1. Your fmriprep invocation details (version, command, whether all subjects were successful)
  2. Ensure fmriprep command was same between failing subjects and passing subjects
  3. Provide tree outputs showing fmriprep outputs for a failing and passing subject
  4. Does the error persist when using a fresh working directory?

Best,
Steven

This error typically comes up when people run XCP-D on native-resolution volumetric BOLD data. Basically, XCP-D tries to warp the atlases to the same space and resolution as the BOLD data, but if the BOLD scans have different resolutions (typically because there are small variations in the acquisition parameters across the dataset and the user ran fMRIPrep without specifying a resolution in their output spaces), then XCP-D will raise an error. You can see a bit of a summary of why XCP-D raises an error instead of doing something more elegant in Processing native-resolution runs with different voxel sizes will fail · Issue #1069 · PennLINC/xcp_d · GitHub.