Xcp-d error: something not right with the censoring

Summary of what happened:

The censoring results indicated that not enough volumes survived. However, upon examining the TSV file, I found there were enough volumes according to the criteria I set. I uploaded the fd from the tsv file.
confounds: …func/sub-LM035_ses-T1_task-prototype_run-01_desc-confounds_timeseries.tsv
confounds_json: …/func/sub-LM035_ses-T1_task-prototype_run-01_desc-confounds_timeseries.json
fd.txt (1.7 KB)

Command used

export SINGULARITY_BIND=$outpath
singularity run --cleanenv /home/yc1236/code/myResearchCode/xcpd/xcp_d-0.7.5.simg  \
$fpppath $outpath \
participant --participant_label ${subID[$SLURM_ARRAY_TASK_ID]} \
-w $outpath/working \
--fs-license-file  /home/yc1236/toolbox/freesurfer_license/license.txt \
--input-type fmriprep \
--random-seed 0 \
--min_coverage 0.5 \
--skip-dcan-qc \
--combineruns \
--dummy-scans auto \
--despike \
--motion-filter-type notch --band-stop-min 12 --band-stop-max 20 --motion-filter-order 4 \
--head-radius auto -f 0.5 --min-time 250 \
--nuisance-regressors 36P \
--bpf-order 2 --lower-bpf 0.01 --upper-bpf 0.1 \
--smoothing $smoothing_value

Version:

0.7.5

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

Singularity on GCP

Data formatted according to a validatable standard? Please provide the output of the validator:

using a fmriprep output

Relevant log outputs (up to 20 lines):

240728-22:09:37,257 nipype.utils WARNING:
	 No non-steady-state outliers found in ....../func/sub-LM035_ses-T1_task-prototype_run-01_desc-confounds_timeseries.tsv
240728-22:09:37,273 nipype.workflow WARNING:
	 Less than 250.0 seconds in sub-LM035_ses-T1_task-prototype_run-01_space-MNI152NLin2009cAsym_desc-preproc_bold.nii.gz survive high-motion outlier scrubbing (248). This run will not be processed.

Hi @yijun,

Keep in mind the message in XCP is about time (in seconds), not volumes. You would need to multiply the number of surviving volumes by the TR to get the remaining time.

Best,
Steven

1 Like

Hi @Steven

Thanks for your quick reply.
Yes, I did that calculation.
There are 157 volumes in total, TR=2s.
80% * 157*2=251s. So I set the --min-time 250.
80% * 157 = 31 volume
The censoring results indicated that not enough volumes survived dispite that I found only 19 volumes with FD > 0.5 in the TSV file.

Can you try rerunning with a much more liberal --min-time and then share the resulting motion.tsv and design.tsv files produced by XCP-D?

Hi @tsalo

I uploaded the tsv file from fmriprep and those from xcp-d. Please see below. It seems that xcp-d re-calculted the FD, as the FD were a lot different between fmriprep and xcp-d.

from fmriprep

https://www.dropbox.com/scl/fi/6eckcqrs8ctmswal8l9ko/fromfmriprep-sub-LM035_ses-T1_task-prototype_run-01_desc-confounds_timeseries.tsv?rlkey=u09xqoyz0c7qzhh5dat9fi69q&st=lrxbxma6&dl=0

from xcp-d

https://www.dropbox.com/scl/fi/nbw51qod3fom1oik2e6gm/sub-LM035_ses-T1_task-prototype_run-01_desc-preproc_design.tsv?rlkey=0sz2ftyiizkd6vcbmpwtf2vqc&st=omjidj3n&dl=0

https://www.dropbox.com/scl/fi/9kgyvm06idsveuyy3h720/fromxcpd-sub-LM035_ses-T1_task-prototype_run-01_desc-filtered_motion.tsv?rlkey=ivijbeky7auh4etir3mrgnnnk&st=ta2gxrou&dl=0

https://www.dropbox.com/scl/fi/rzp8tddxul8i9i50p1a30/fromxcpd-sub-LM035_ses-T1_task-prototype_run-01_outliers.tsv?rlkey=z9jjl3ofrt5kogmkf30kylwiy&st=mbnklvyr&dl=0

Yes, the XCP-D FD values won’t match fMRIPrep, as your XCP-D settings include (1) automatic head-radius detection, which will affect the raw FD calculation and (2) motion parameter filtering, which will change the motion parameters and thus change the FD time series.

The XCP-D FD time series contains 33 volumes with FD > 0.5, and the outliers match that, so it doesn’t look like there’s a problem on XCP-D’s side. If you want to ensure that the XCP-D FD values are as similar as possible to the fMRIPrep ones, I recommend setting --head-radius 50 and --motion-filter-type none.

@tsalo Thank you so much!

1 Like