General questions regarding AFNI proc's bandpass option

Dear all,

I have general questions regarding bandpassing via “-regress_bandpass x y” in AFNI proc. I know that AFNI recommends to avoid bandpassing, but isn’t it required in some cases (see below)?

  1. Does the polort option “-regress_polort x” automatically take care of noise sources like slow scanner drift/noise etc.? Does this option function a bit like a high-pass filter, so that noise below ~0.007 Hz or below ~0.01 Hz is removed? Or: does another option take care of that, if so, which option would it be?

  2. I am currently computing the temporal autocorrelation of the time-series. For example, I am determining at which sampling point (TR) the autocorrelation of the signal drops to or below 0. My TR is 2.16s and hence the Nyquist frequency is 0.23 Hz. Applying “-regress_bandpass 0.01 0.23” results in much shorter autocorrelation results compared to results where AFNI proc ran without bandpassing. What would be the more appropriate option here, bandpassing in AFNI proc or no bandpassing?

Hi, Philipp-

This is the section of the AP help on bandpassing, for reference:

We should clarify terminology to start:
In resting state FMRI, when people talk about “bandpassing during processing”, they are pretty much always referring to low-frequency fluctuation (LFF) bandpassing, to keep only frequencies in a range of approx. 0.01-0.1 Hz. This goes back to early studies and ideas about noise affecting higher frequencies relatively more, as well as possible aliasing of breathing/cardiac effects.
Generally, “bandpassing” means not including either the minimal nor maximal (=Nyquist) frequency in the band range; that is what the LFF range above does. Keeping frequencies 0.0-0.01 Hz would be called “low pass filtering” and keeping 0.01-Nyquist would be “high pass filtering.”

There are two main ways to address modeling low frequency drift:
A) exclude the lowest frequencies up to some point—so, a “high pass filter”, which in FMRI might be often be frequencies >0.001 Hz or >0.01 Hz.
B) include low-order polynomials in the model—the polort regression you note above, for which the default order chosen by AP depends on the length of the time series, as noted here:

-regress_polort DEGREE  : specify the polynomial degree of baseline

        e.g. -regress_polort 2
        default: 1 + floor(run_length / 150.0)

When time series are very, very long, then the high pass filter might make particular sense, rather than having a very high order polynomial. The AP help notes that quadratic drift is not modeled well by sinusoids, so then the polynomial term would have benefits. In many intermediate cases of not-too-extreme length or drift, the two approaches would likely going to be quite similar.

Note that for every regressor added to your model, you lose a degree of freedom in your output result. For bandpassing, you use 2 regressors per frequency—in standard LFF bandpassing with a TR=2s, this incurs a 60% loss in degrees of freedom immediately—censoring and the inclusion of motion and other regressors increases the loss.

The LFF bandpass does two things: exclude some scanner drift, and try to exclude some higher frequencies. In the link at the top, we suggest that the latter part might not always be a good idea—there is a huge statistical cost in terms of degrees of freedom lost, as well as the fact that there is often still much useful information up there.


Hi Paul,

the thing is that I get much shorter autocorrelation values when running “-regress_bandpass 0.01 0.23” (0.23 Hz is the Nyquist frequency in my case) compared to the automatically computed “-regress_polort” option by AFNI. The latter option is automatically computed because I did not include this option with a specific value, such as “-regress_polort 2” in my former AFNI proc script. The run only has 144 TRs with a TR of 2.16s.

So I was wondering if the automatic polort option “fails” in my case. What do I mean by failing? A colleague of mine had the idea that potentially slow frequencies drive or impact the higher autocorrelation across the subjects (in the absence of running bandpassing), whereas the autocorrelation massively drops when running bandpassing in AFNI proc (due to exluding everything below 0.01 Hz).

I am not sure where exactly impacts from the scanner cause pseudocorrelation that are not really related to the brain. I know that the lower cut-off is often 0.007 - 0.01 Hz. So when exluding everything below 0.01 Hz with bandpassing, I am not sure if I basically exclude real autocorrelation that comes from the brain, or if I correctly remove scanner noise etc.

As I understand it now, the general approach is as follows:
-regress_polort DEGREE: generally the better approach to better preserve DOF. It also takes care of slow scanner drift impacts etc.
-regress_bandpass x y: might be required in certain cases, like in my case when computing the autocorrelation.

Would you agree with the above?

Refering to this question again:

[quote=“As I understand it now, the general approach is as follows:
-regress_polort DEGREE: generally the better approach to better preserve DOF. It also takes care of slow scanner drift impacts etc.
-regress_bandpass x y: might be required in certain cases, like in my case when computing the autocorrelation.”]

I am still interested in your opinion, especially if -regress_polort takes care of scanner noise etc. in frequencies below 0.01 Hz, so that -regress_bandpass is normally not required to exclude the former.