# 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