I have a question regarding the input process for xcpd from fmriprep. I’m curious why xcpd recalculates certain parameters that fmriprep already computes itself, such as motion parameters. Additionally, when I compare the motion parameters generated by both fmriprep and xcpd, I notice they’re in the same range but differ somewhat.
I’ve noticed the option to utilize custom confounds. Would using the
XCP-D allows users to filter their motion parameters to remove respiratory effects. It’s just easier to recalculate the Volterra expansion within XCP-D based on the motion parameters.
XCP-D recalculates framewise displacement because it matters more in XCP-D than in fMRIPrep (since we optionally use it to censor high-motion volumes), so we give a bit more control (e.g., by calculating FD based on the filtered motion parameters, or using a different head radius than fMRIPrep might use).
What settings did you use, and which regressors differed? If you didn’t use a motion filter, the base parameters (6 translation and rotation parameters) shouldn’t differ at all, and the squared and derivative parameters should the same as well even if XCP-D recalculates them, given the simplicity of the operation.
Thanks for your fast reply !
I was indeed considering the framewise displacement differences for the motion parameters and this is the one that differs a bit. The others (rot_x, rot_y, rot_z) are rounded up differences.
Thanks for your explanation that explain why we are doing “the same” 2 times.
For the settings I used the same line as in your paper ( 10.1101/2023.11.20.567926 ) for the PNC cohort. I am actually on a project using the PNC data. The only change I did is that I am using docker instead of singularity, and that I implemented another atlas in the toolbox.