Preprocessing introduces oscillation at 0.011 Hz – how to get rid of it?


I am currently further preprocessing (using a minimalistic AFNI proc script shown below) the so-called minimally preprocessed 7T HCP resting-state and movie task dataset/runs. I preprocess both runs with a resting-state script.

The problem is that preprocessing introduces a systematic power increase around 0.011 Hz for almost all out of 30 subjects in the primary visual cortex V1, and also slightly in other regions, such as in the primary auditory cortex (A1).

This bump is not prevalent when plotting the minimally preprocessed data without further processing it with AFNI proc. I attach many pictures of normal as well as log-log power spectra in this post that especially highlight this oscillation around 0.011 Hz. Furthermore but not shown here, I plotted the results of all preprocessing blocks (talking about the “pb xy …” results, such as tcat, blur, scaling) from AFNI proc to check at what preprocessing step the bump is introduced. It seems that the frequency bump is introduced only in the final .errts file.

Interestingly, this frequency bump also shows up in the fully preprocessed + denoised HCP data, and even more so there (picture attached below). Hence, their preprocessing pipeline somehow introduces this bump as well. The bump or oscillation is not related to the movies shown, since it also occurs in the resting-state, although not that heavily. The onset/offset of the single movie clips shown also falls way below 0.01 Hz, hence it couldn’t show up as a major oscillation around 0.011 Hz.

I wonder if you guys could provide ideas regarding the followig questions:

  1. Why does especially AFNI proc (and the fully preprocessed HCP pipeline) introduce such a systematic oscillation around 0.011 Hz?
  2. Is there a way to avoid introducing this oscillation in AFNI proc? Since the minimally preprocessed HCP dataset does not contain this bump, maybe there is a possibility to further preprocess their data without AFNI proc introducing this bump. Are there suggested AFNI proc settings that I should change or use?

See my AFNI proc script here (shown for rest, but its the same for task) \
-subj_id ${subject}_Rest \
-out_dir $dir/Results \
-dsets \
	$dir_ts/Cut_rfMRI_REST1_7T_PA.nii.gz \
-blocks despike tshift blur mask scale regress \
-copy_anat $dir_sswarper/anatSS.$subject.nii \
-anat_has_skull no \
-regress_anaticor_fast \
-regress_bandpass 0.01 0.2 \
-regress_polort 2 \
-blur_size 3.2 \
-html_review_style pythonic \

I also tried preprocessing without bandpassing and another time with polort = 0. However, these two preprocessing attempts also did not change a thing, the bump still shows up.

Every graph above shows one subject. As can be seen, the oscillation occurs for almost every subject.

Hi Philipp,

I am not a master of power spectrum analysis, but to some degree it is no surprise to see some bump near the threshold of frequencies that have been regressed out, and these have a high pass limit of 0.01. But that is just a thought.

Why do you say especially and full HPC here? Do you mean that you do not see this with other common processing? And I am excluding minimally processed HPC, as it probably does not include regression/bandpassing.

Have you tested this without the tshift block?

Have you tested this without bandpassing? Start by comparing all_runs to errts.

  • rick

Hi Rick,

here are some clarifications.

  • I have tried the analysis without bandpassing. The bump remains after further preprocessing the minimally preprocessed HCP with the AFNI script shown above (but excluding bandpassing). So that bump is not caused by bandpassing.

  • By “full HCP” I mean the following: I took the fully preprocessed HCP dataset and I did NOT further process or touch it with AFNI proc. I just extracted the V1 voxels with 3dmaskdump, took the mean across all voxels in that ROI per subject, and plotted the power spectra. Even here the bump is there, as you can see, but the bump is even bigger.

  • This 0.011 Hz frequency bump does NOT exist in the minimally preprocessed HCP version. Hence, if I extract the voxels from the minimally preprocessed HCP, and plot them as explained above, no bump occurs. I showed that in one of the screenshots for one subject (one graph), but the results are the same for other subjects.

That oscillation is introduced by preprocessing (fully preprocessed HCP dataset) as well as via my super minimalistic AFNI proc script. That oscillation is not caused by bandpassing, since it remains exactly the same even without bandpassing.

I will now try preprocessing the same subject again without tshift.

Thanks for the details. If you can, test it not on just the errts, but also on all_runs (i.e. no regression). It might be introduced in the regression, either by -polort or by bandpassing.


  • rick