Open Bramdiamond opened 1 year ago
We discussed this in a recent meeting and agreed that it's a good idea. I like --dvars-thresh
. Would you be willing to open a PR? If not, it might be a little bit before I'm able to implement this.
I've never submitted a PR, but I can take a look!
We'll want to avoid extreme flexibility, so it would be great to limit this option to specific, established strategies. @Bramdiamond are you familiar with any citable approaches?
I'm thinking of something like this:
--fd-thresh <FLOAT> [<FLOAT>]
--dvars-thresh <FLOAT> [<FLOAT>]
--censor-config [before=<INT>] [after=<INT>] [contiguous=<INT>]
I don't love how complicated it ends up being, but here's my thinking.
--fd-thresh
and the new --dvars-thresh
would support this behavior.
before
and after
.contiguous
. In this case, any runs of contiguous low-motion volumes shorter than the value would be censored.One thing I'm not sure about is where the censoring should be done. On the one hand, we want to ensure that the nuisance regression is not adversely impacted by noisy volumes, which is what --fd-thresh
is meant to address. On the other hand, interpolation + bandpass filtering + censoring with the original threshold will result in interpolated signal spread to neighboring volumes, so we need to apply some additional censoring unrelated to the nuisance regression.
Hi Taylor,
Thanks for returning to this!
I'm not familiar with a standard approach or recent research on the topic. I think the flags you've included above make the most sense. As for default values, I think that it worth a discussion.
Regarding when the censoring should be done, your guess is as good as mine. I think that Lindquist et al., 2018 was the first to propose filtering before nuisance regression.
Additionally, it would be helpful if frames censored for DVARS were identified on a time series plot just as frames censored for FD are on the summery PDF.
Summary
Target volumes that exceed FD or DVARS thresholds. It would be nice to have the option to customize this boolean logic.
Next steps
For modified_data.py, add compute_dvars() and generate_mask() to include dvars. xcp_d options might include --dvars-thresh, --despike-logic <and, or>.
Additionally, xcp_p should be able to read FD/DVARS from fMRIPrep output.