XCP-D boilerplate clarifications

I did not use the Software template because it didn’t seem well-suited to my question here.

A co-author, who does not use XCP-D, Nilearn, etc., has asked some questions about the XCP-D boilerplate that we’d like to clarify. I have done my best to answer questions by reading through the GitHub and Mehta et al.

  1. “Nuisance regressors were regressed from the BOLD data using a denoising method based on Nilearn’s approach.” - Which approach is this? What paper?

  2. “Outlier volumes at the beginning or end of the time series were replaced with the closest low-motion volume’s values, as cubic spline interpolation can produce extreme extrapolations.” - What software was used for this step?

  3. “The timeseries were band-pass filtered using a second-order Butterworth filter, in order to retain signals between 0.01-0.08 Hz.” - What software was used for this step?

  4. “The resulting time series were then denoised via linear regression, in which the low-motion volumes from the BOLD time series and confounds were used to calculate parameter estimates, and then the interpolated time series were denoised using the low-motion parameter estimates. The interpolated time series were then censored using the temporal mask.” - What software was used for this step?

  5. Confirming that filtering was done before nuisance regression, not after or simultaneously.

This is the approach documented in nilearn.signal.clean - Nilearn. XCP-D reimplements the same basic approach separately because we need access to the interpolated, denoised data, which Nilearn’s function does not return.

Just custom Python code. See xcp_d/xcp_d/utils/utils.py at cc431c48c141a82862b931d55c889c8a4108de0c · PennLINC/xcp_d · GitHub.

XCP-D uses Nilearn’s butterworth function. See https://github.com/PennLINC/xcp_d/blob/cc431c48c141a82862b931d55c889c8a4108de0c/xcp_d/utils/utils.py#L528-L546.

Numpy. See xcp_d/xcp_d/utils/utils.py at cc431c48c141a82862b931d55c889c8a4108de0c · PennLINC/xcp_d · GitHub for the denoising and https://github.com/PennLINC/xcp_d/blob/cc431c48c141a82862b931d55c889c8a4108de0c/xcp_d/workflows/bold/postprocessing.py#L714-L729 for the recensoring.

Filtering is done before nuisance regression, but is applied to both the fMRI data and the confounds, matching the HPMC with orthogonalization approach in Lindquist et al. (2019). See xcp_d/xcp_d/utils/utils.py at cc431c48c141a82862b931d55c889c8a4108de0c · PennLINC/xcp_d · GitHub.

1 Like