Notch filter on FD timeseries

I am dealing with some multiband data (TR=1.25s) which shows highly exaggerated FD values, so I am hesitating to use these FD values to define censoring of timepoints. I came across this ABCD paper titled “Correction of respiratory artifacts in MRI head motion estimates”, which talks about respiration-induced motion which might not be real motion. One approach used in the paper is to conduct notch filter on the motion estimates (bandwidth: 0.31Hz and 0.43Hz). The paper itself is difficult to follow, so I am wondering if anyone has experience doing such a filter on the motion estimates. In addition, it doesn’t seem that this notch filter is being done on the BOLD timeseries itself. Would it be useful to report mean FD, max FD, etc. based on notch filtered FD values? In addition, can censoring of timepoints be now defined on the notch filtered FD values?

just wanted to bump this thread to see if anyone has any advise, thank you

From a very quick skim of the methods section, it appears that the notch filter was applied to the motion estimates only. You can build a notch filter in scipy using the dedicated iirnotch function. You’ll need 3 parameters: w0, Q, and fs. We can determine appropriate values for those parameters from the manuscript:

  • w0 is the frequency to remove; from my reading, I believe that the authors report a median value of 0.31 Hz.
  • Q is a “quality factor”, defined as Q = w0/bw. The authors report a bandwidth of 0.43 Hz, so Q can be estimated as 0.31/0.43.
  • fs is the sampling frequency, which is the reciprocal of the data’s TR.
  • Note that the authors remark “…as different populations and age groups
    have different respiratory rates (Wallis et al., 2005), the FF filter should be tailored to the
    population being studied.” Thus, it would be better to estimate w0 and Q for the specific population that you’re studying. You’d need some respiratory measure from the sample in order to do this: the authors use the median respiration rate as cutoff frequency w0 and the combined width of quartiles 2 and 3 as bandwidth bw.
  • To apply the filter both forward and backward as the authors recommend (prevents phase delay but doubles the filter order), you’d use filtfilt instead of filter.
  • If you have respiratory belt data, you can perform subject-specific estimates of w0 and Q, but the authors suggest that the subject-specific approach might not be reliable.
  • You can sanity check your results by computing the power spectra before and after filtering and noting whether peaks in the respiratory band are appropriately attenuated.

Note that I’ve only cursorily skimmed the methods, so input from somebody with a more informed perspective would be welcome. I’ll try and look into the paper in more detail to report on how this approach impacts motion reporting and censoring.

2 Likes