I have been running xcp_d on a computing cluster without any problems. However, I wanted to change my pipeline to incorporate filtering of motion regressors to account for respiratory artifact. I ran this in the version that I was using (0.0.8), and it generated errors. I thought I would rerun in the latest version (1.1.3), to see if this would fix the errors. With the new version, I am getting an error very early on about the h5 file (“list index out of range”). Could this be related to compatibility with the fmriprep version? I am using a relatively up-to-date fmriprep (1.2.14). (EDITED to correct: fmriprep version 20.2.6). Thanks in advance for your help!
Matplotlib created a temporary config/cache directory at /scratch/slurm-6949518/matplotlib-wo8bz5nf because the default path (/home/xcp_d/.config/matplotlib) is not a writable directory; it is highly recommended to set the MPLCONFIGDIR environment variable to a writable directory, in particular to speed up the import of Matplotlib and to better support multiprocessing.
220929-11:50:00,755 nipype.workflow IMPORTANT:
Running xcp_d version 0.1.3+0.g9fec4d8.dirty:
* fMRI directory path: /ix/dhafeman/BDLONG/Preproc/fmriprep.
* Participant list: ['400'].
* Run identifier: 20220929-114757_bb881ab7-7621-4de3-8977-bb519b7db393.
220929-11:51:51,557 nipype.utils WARNING:
A newer version (1.8.4) of nipy/nipype is available. You are using 1.8.3
Traceback (most recent call last):
File “/usr/local/miniconda/lib/python3.8/multiprocessing/process.py”, line 315, in _bootstrap
File “/usr/local/miniconda/lib/python3.8/multiprocessing/process.py”, line 108, in run
File “/usr/local/miniconda/lib/python3.8/site-packages/xcp_d/cli/run.py”, line 617, in build_workflow
retval[‘workflow’] = init_xcpd_wf(
File “/usr/local/miniconda/lib/python3.8/site-packages/xcp_d/workflow/base.py”, line 148, in init_xcpd_wf
single_subj_wf = init_subject_wf(
File “/usr/local/miniconda/lib/python3.8/site-packages/xcp_d/workflow/base.py”, line 329, in init_subject_wf
anatomical_wf = init_anatomical_wf(
File “/usr/local/miniconda/lib/python3.8/site-packages/xcp_d/workflow/anatomical.py”, line 364, in init_anatomical_wf
h5_file = fnmatch.filter(
IndexError: list index out of range
I don’t see fMRIPrep 1.2.14 in the list of versions in the changelog, but fmriprep 1.2.X is ~3 years old, and recent versions of fMRIPrep has gone through many changes, including in output file formatting. This could include anatomical transformations stored as .h5 files that XCP seems to be expecting based on the error. I would suggest running a subject in the latest fmriprep release and testing xcp_d on that subject.
It would help to know what your fMRIPrep command was to get an expectation of what XCP_D should be doing. The code you referenced, from this function, seems to be part of a CIFTI-based workflow. Did you create CIFTIs in your fmriprep command (which includes having MNI152NLin6Asym as an output space)?
The analysis was run in flywheel. I rechecked the configuration, and output-spaces are both MNI152NLin2009cAsym and T1w. I did not run the cifti option. Is it possible that the error is related to T1w space? I will run another subject that I did not analyze in T1w space, and see if that solves the issue. It sounds like this also might be something that I should ask the flywheel support about.
Thanks for looking into this, and this seemed very likely. However, I have rerun fmriprep on flywheel without specifying the T1w space. In this case, the space is:
output_spaces = “MNI152NLin2009cAsym:res-native”
I checked that there are no other spaces (i.e. T1w) in the preprocessed directory. Do you have any additional ideas? I am not sure if it would be better to specify the resolution, instead of leave it in native space - could that be causing the problem? I can also ask the flywheel help desk if they have any ideas.