Is it really an oscillation?
Test for a spectral peak before reporting band power, detect bursts, run cycle-by-cycle analysis, and recognize non-sinusoidal waveforms.
Prerequisites: L4.4 · Baseline normalization and ERD/ERS, L1.7 · Aperiodic and periodic components
1 claim on this page is unverified. TODO(confirm) marks a specific statement the author has not yet checked against a
primary source. Everything else on this page has been reviewed. Treat a marked claim as
provisional and go to the cited source rather than quoting the sentence.
Objectives
- Test for a spectral peak before reporting band power
- Detect bursts from an amplitude envelope
- Run cycle-by-cycle waveform analysis
- Recognize non-sinusoidal waveforms and their spectral signatures
- Define individualized bands
Why this matters
“Alpha power increased” sounds like a claim about a rhythm and is not one. Band power is the area under the spectrum in a frequency range, and the spectrum in that range is mostly the aperiodic background; a band-power change can happen with no peak in the band, no rhythm in the data, and nothing to desynchronize. Even where a peak exists, the rhythm behind it is usually not continuous: threshold its envelope and “sustained alpha” resolves into a handful of bursts — and the number of bursts you find moves by a factor of eleven on the threshold alone, with the signal untouched. This lesson is the set of checks that has to happen before a band-power number is reported as a rhythm.
Concepts
Band power is not a rhythm
L1.7 separated a spectrum into an aperiodic component — broadband, falling with frequency, parameterised by an offset and an exponent — and whatever periodic peaks sit on top of it. Band power integrates the whole thing. So three different events all read as “more beta”:
- a genuine increase in a beta rhythm sitting on an unchanged background;
- an unchanged rhythm on a background whose offset rose, which raises every band together;
- a background whose exponent changed, which raises power at one end of the spectrum and lowers it at the other, with a pivot somewhere in between.
Only the first is a statement about an oscillation, and band power cannot tell them apart. The diagnostic is pf-band-power-slope, and its figure makes the case on real data: in a band chosen by rule to have no fitted peak in either condition, band power still changes by a median factor of 1.19 between eyes open and eyes closed, and the aperiodic fit alone predicts a factor of 1.17 — 96 % of the change, in a band with no rhythm in it.
The check is cheap. Fit the spectrum, look for a peak in the band, and report the aperiodic parameters alongside any band-power claim. (Donoghue, 2022) sets out the argument and the failure modes; the practical rule is that a band-power result without a peak in the band is a result about the aperiodic component and should be reported as one. If a peak is present, report its centre frequency, power and bandwidth, and prefer the peak’s own parameters to band power wherever the question allows.
Individualized bands
Canonical band edges are conventions — and mismatched conventions, at that: one lab’s alpha is 8–12 Hz, another’s 8–13, another’s 7.5–12.5. When a peak exists, the individual’s own peak frequency is a better anchor than any of them, because an 8–12 Hz band measures a different part of the spectrum in a person whose peak is at 9 Hz than in one whose peak is at 11.5 Hz, and age, arousal and task all move it.
The usual construction is the fitted peak centre plus or minus a fixed width — the shipped asset’s own individual_alpha block records a peak at 10.272 Hz and a band of 8.27–12.27 Hz, which is the peak ± 2 Hz. Note what that is: the peak is a measurement and the ± 2 Hz is a convention, and the sidecar says so. A defensible alternative is to take the band edges from the fitted peak’s own bandwidth rather than from a fixed number. Either way, individualising the band means the band differs between subjects, which has to be stated — and a subject with no fitted peak has no band to individualise, which is the previous section’s problem arriving again.
Bursts
A spectral peak says there is a rhythm somewhere in the record. It does not say the rhythm was running continuously, and for most cortical rhythms it was not: (Jones, 2016) argues the case for transient events as the basic unit. The consequence for analysis is direct. If a rhythm is present 20 % of the time at high amplitude, then average band power confounds how often it occurred with how large it was, and two recordings with the same mean power can differ completely in both.
Detecting bursts from an amplitude envelope is simple to describe and full of free parameters:
- Band-pass to the band of interest, ideally the individual’s own.
- Envelope — the magnitude of the analytic signal (L4.3).
- Threshold — a percentile of the envelope, a multiple of its median, or an absolute value.
- Minimum duration — usually stated in cycles of the band centre, to reject single noise excursions.
- Statistics — count, rate, mean duration, duty cycle, mean amplitude.
Steps 3 and 4 are decisions with no agreed answer, and the results move a very long way across the range a reasonable person would accept. On the 60-second eyes-closed segment the widget serves, with the alpha band, a 3-cycle minimum and the filter’s contaminated edges excluded:
| Threshold | Bursts in 60 s | Duty cycle |
|---|---|---|
| 50th percentile of the envelope | 33 | 40.3 % |
| 75th percentile | 19 | 17.8 % |
| 95th percentile | 3 | 2.5 % |
The burst rate falls by a factor of eleven and the duty cycle by a factor of sixteen, on the threshold alone. Nothing about the recording changed between those rows. That is not an argument against burst analysis; it is the reason a burst result has to travel with its threshold rule, its minimum duration, its band, and a sensitivity analysis showing what happens across the range of each.
Two smaller decisions matter more than they look. The minimum duration rounding rule can move a count on its own: on this asset, requiring a run to cover three cycles of the 10.5 Hz band centre needs 72 samples at 250 Hz, where the data script’s stated 0.284 s minimum is 71 — and at the 75th-percentile threshold that single sample is the difference between 19 bursts and 20. And the edges: a zero-phase FIR of N taps contaminates (N−1)/2 samples at each end, 0.82 s here for the 413-tap alpha filter, so bursts inside that strip are artefacts of the filter and the statistics exclude them by default (pf-tf-edge-effects).
Cycle-by-cycle, and non-sinusoidal waveforms
The envelope approach still assumes the rhythm is a sine wave whose amplitude is modulated. Cycle-by-cycle analysis drops that assumption: identify individual cycles from the raw trace by their peaks and troughs, and measure each one — period, amplitude, rise-decay asymmetry (is the rising flank faster than the falling one?) and peak-trough asymmetry (is the peak sharper than the trough?) — then call a run of consecutive cycles a burst when the features are consistent enough. (Cole, 2017) and (Cole et al., 2019) develop the method and the argument behind it.
The argument is that waveform shape is signal, not nuisance, and that the spectrum disguises it. A perfectly periodic but non-sinusoidal rhythm — a sawtooth, an arch, anything with a sharp trough — must have energy at integer multiples of its fundamental, because that is what a Fourier series of a non-sinusoidal periodic function is. Three consequences follow, and all three appear elsewhere in this level:
- a fitted “beta peak” at exactly twice a subject’s alpha peak may be alpha’s harmonic rather than a beta rhythm;
- phase-amplitude coupling between a rhythm and its own harmonic is produced by the waveform alone, with no second oscillator (
pf-harmonics-as-pac, L4.5); - a change in waveform shape with no change in amplitude changes band power at the harmonic, which reads as a change in a different “rhythm”.
The check is to look at the waveform. A cycle-averaged trace, or simply a few seconds of the raw signal beside its band-passed version, settles most cases in a glance.
Two ways the filter answers the question for you
A narrow filter makes anything rhythmic. Band-pass white noise to 2 Hz and the output rises and falls smoothly at the band centre, because that is what the filter passes. pf-narrowband-filter-oscillation shows it on a real recording that has no spectral peak in the band tested: the filtered trace looks rhythmic, and a phase-randomised surrogate with the same power spectrum and no waveform structure looks exactly as rhythmic. A band-passed trace is evidence about the filter; the evidence for an oscillation is a peak above the aperiodic fit.
A hardware filter can remove the peak you are looking for. An amplifier with a notch at the mains frequency, or a low-pass roll-off at 40–50 Hz, leaves a hole or a slope in the spectrum that has nothing to do with the brain — and a second, software notch on top of the first widens it. That is pf-notch-hole-in-band, and it is a reason to read the recording’s own hardware settings before fitting anything: the fit will happily model an instrument’s response as an aperiodic component or as the absence of a peak.
The data behind this lesson
- The burst widget:
ds-lemon, sub-010002, channel O2, 60 s of eyes-closed rest starting at t = 378.03 s, resampled 2500 → 250 Hz with an anti-alias low-pass, DC offset removed, and otherwise unfiltered — the widget runs filter-Hilbert itself, so the band and the threshold are live. Online reference FCz; acquisition band 0.015–1000 Hz with the hardware notch off; 50 Hz mains. TODO(confirm): the licence is CC BY 4.0 per the data descriptor, but the exact dataset terms are unresolved (§13 item 5). - Two selections and one honest ugliness. The eyes-closed block was identified algorithmically from the recording’s own marker codes by which code carries more relative occipital alpha, and the channel was chosen as the occipital site with the largest 8–13 Hz share of 1–40 Hz power (O2, ahead of Oz and O1). Because the release has no online high-pass, the segment carries 97.2 µV of slow drift peak-to-peak on a 1-second moving mean against an alpha standard deviation of 6.5 µV; the widget draws the raw and band-passed traces on separate auto-scaled axes and prints both figures rather than filtering the drift away.
- There is a peak to burst. A specparam fit of this exact segment gives an aperiodic exponent of 1.114 with r² = 0.975 and peaks at 10.272 Hz (power 1.27, bandwidth 2.41 Hz), 18.9 Hz and 25.4 Hz, over a 1–40 Hz fit range with
max_n_peaks6,peak_width_limits[1, 8] andmin_peak_height0.1. That is the check this lesson demands, run on the data the lesson uses. - The spectrum widget serves per-subject spectra and precomputed specparam fits for 12
ds-eegbcisubjects at O1, eyes-open and eyes-closed, Welch with 2-s Hann segments, fitted over 1–40 Hz with the settings above. Itscomparemode puts two of them side by side with both parameter sets, which is what the exercises below use. All fits arelabel_source: algorithmic. - The notebook runs specparam and cycle-by-cycle analysis on
ds-lemoneyes-closed data and reports burst rates per subject, so the single-segment numbers above can be seen against a spread.
Explore
Start with the raw trace and the 8–13 Hz band-passed trace side by side: the band-passed trace looks like a continuous rhythm and the envelope above it plainly is not. Now move the threshold from the 50th to the 95th percentile and watch the count, the rate, the mean duration and the duty cycle change while the signal underneath does not — the two numbers the exercises ask for are the ends of that sweep. Set the minimum duration to zero and then to several cycles and watch short crossings appear and disappear. Switch to the 9.5–10.5 Hz narrow preset and see both the trace become more convincingly rhythmic and the filter length — and the contaminated edge — grow.
Put S006 eyes-open beside S006 eyes-closed and read the peak list for each: there is no fitted peak between 8 and 13 Hz in either condition, although the alpha-band power differs between them. Then put S001 eyes-open beside S001 eyes-closed for the contrast — a clear 10 Hz peak appearing as the eyes close. Finally look at S008 eyes-open and ask what its beta peak is worth.
Practice
Is it really an oscillation? A spectral peak, bursts whose count falls elevenfold on the threshold alone, and cycle-by-cycle waveform shape nb-4-6-bursts
Downloads from ds-lemon.
The notebook fits spectra with specparam and runs cycle-by-cycle analysis on ds-lemon eyes-closed recordings, reporting per-subject peak frequencies, burst rates and duty cycles with the detection rule and its parameters stated in one cell — including which subjects have no fitted alpha peak at all.
Exercises
For the first two, use the widget’s shipped 60-second segment with its defaults: band 8–13 Hz, minimum duration 3 cycles of the band centre, the filter’s contaminated edges excluded, and the threshold set as a percentile of the envelope.
Exercise ex-4-6-bursts-p50
NumericHow many alpha bursts does the detector find in the 60-second segment with the threshold at the 50th percentile of the envelope?
Exercise ex-4-6-bursts-p95
NumericSame segment, same band, same minimum duration: how many bursts with the threshold at the 95th percentile?
Exercise ex-4-6-no-peak
Multiple choiceIn the spectrum widget, subject S006 at O1 has a parameterized spectrum with no fitted peak anywhere between 8 and 13 Hz in either condition (its nearest peaks are at 6.7 Hz and 20.7 Hz), an aperiodic exponent of 1.18 eyes-open and 1.01 eyes-closed, and 8–13 Hz band power of 18.1 µV² eyes-open against 23.1 µV² eyes-closed. What may be reported?
Exercise ex-4-6-beta-peak
Free responseDoes subject S008 have a beta peak at O1 with the eyes open? Justify your answer from the parameterized spectrum, and say what you would report.
Pitfalls
Band power changes that are slope changes
- Symptom
- "More beta" with no beta peak; all bands shift together.
- Cause
Band power is the area under the power spectrum in a frequency range, and the spectrum is a sum of two things: an aperiodic component, broadband and falling with frequency, described by an offset and an exponent; and whatever periodic peaks sit on top of it (L1.7). Integrating over a band adds both together and reports one number, so three physically different events are indistinguishable in it:
- Detect
- Fit the spectrum, per subject and per condition, and look at the peak list. If no peak has a centre frequency inside the band, do not name the band-power result after a rhythm. Report the fit range, the settings (peakwidthlimits, maxnpeaks, minpeakheight, peakthreshold), the aperiodic mode and the fit quality alongside. - Check whether the “peak” is at the detection floor. A peak whose fitted p…
- Fix
- Parameterize the spectrum and report the parameters — aperiodic offset and exponent (and knee where used), and every peak’s centre frequency, power and bandwidth, with the settings and the fit quality. Prefer the peak’s own parameters to band power wherever the question allows: “the alpha peak fell by 0.6 µV² and moved 0.4 Hz lower” is a claim about a rhythm; “alpha power fell” is not. - If the…
Non-sinusoidal waveforms produce spurious coupling
- Symptom
- PAC between a rhythm and its harmonic.
- Cause
A periodic signal that is not a sine wave has energy at integer multiples of its fundamental. That is not a physiological claim; it is what a Fourier series of a non-sinusoidal periodic function is. Cortical rhythms are routinely non-sinusoidal — a sharper trough than peak, a faster rising flank than falling one, the arch shape the mu rhythm is named for — so a single oscillator generates a funda…
- Detect
- Check the arithmetic first. Is the amplitude band at, or close to, an integer multiple of the phase band? If so, treat harmonics as the leading explanation until it is ruled out. - Look at the waveform. Plot a few seconds of the raw trace, and a cycle-average of the slow rhythm. A visibly asymmetric waveform with a sharp trough settles the question faster than any statistic. - Parameterize the…
- Fix
- Report the waveform alongside any coupling result — a cycle-average of the phase band, and the cycle-by-cycle asymmetry measures. - Report whether the amplitude band is harmonically related to the phase band, and if it is, either do not make the cross-frequency claim or provide independent evidence of a second oscillator: its own spectral peak, its own time course, its own response to a manipul…
Narrowband filtering creates oscillations
- Symptom
- Any noise looks rhythmic after a 2 Hz-wide filter.
- Cause
A band-pass filter is an operator that passes a range of frequencies and suppresses the rest. Feed it anything at all — white noise, pink noise, a single step, an artefact — and what comes out is by construction confined to that range, so it oscillates at roughly the band centre. The rhythmicity of a narrowband-filtered trace is a property of the filter, not of the input. The narrower the band, t…
- Detect
- Fit the spectrum and look for a peak in the band. Separate the aperiodic component from the periodic peaks (L1.7, L4.6) and ask whether the model departs from its own aperiodic component inside the band. If it does not, there is no rhythm to report there — whatever the filtered trace looks like. - Filter a phase-randomised surrogate through the identical pipeline and put it beside the real trac…
- Fix
- Test for a spectral peak before reporting anything band-limited. Report the fitted peak’s centre frequency, power and bandwidth, the aperiodic parameters, the fit range, the settings and the fit quality — and if there is no peak, say so and report the band-power result as what it is, a statement about the aperiodic component (pf-band-power-slope). - Anchor the band on the subject’s own peak whe…
Hardware notch or band-limit inside the analysis band
- Symptom
- Spectral hole at 50/60 Hz or a roll-off at 40–50 Hz mistaken for a physiological dip; double-notching in software.
- Cause
Amplifiers and headsets can apply filters before the data are stored: a notch at the mains frequency, a low-pass well below the Nyquist frequency, a high-pass. These are recorded in the file header at best and in the device documentation at worst. Once applied they cannot be undone, and they shape every spectrum computed from the data. An analyst who does not read the hardware fingerprint interpr…
- Detect
- Read the header and the dataset descriptor for online filters before computing anything; record them in the first-look report (L0.6). - Compute a PSD on a long, quiet segment up to the Nyquist frequency and look for: a narrow hole at 50/60 Hz, a knee where the spectrum starts falling faster than the aperiodic trend, and a floor. - Check whether the hole or knee is identical across all channels…
- Fix
- Restrict the analysis band to the hardware passband: fit aperiodic models and report band power only below the low-pass knee and away from the notch. - Do not notch again in software; exclude the notch bins from fits and from any narrow-band measure. - State the hardware filters in the methods, alongside the software filters. - When comparing datasets or devices, compare only within the common…
In other tools
In other toolsEEGLAB · FieldTrip — names only
The equivalents of what this lesson does, for a reader who works in another toolbox. Function names only: their own documentation is the place to learn how to call them.
EEGLAB
pop_spectopoEEGLAB
FieldTrip
ft_freqanalysis(mtmfft)FieldTripft_preprocessing(hilbert)FieldTrip
Names checked 2026-09-18 against EEGLAB 2026.0.0 (plugins at the versions in EEGLAB’s own plugin list) and FieldTrip 20251218.
Reading
- Jones (2016). When brain rhythms aren't rhythmic. unverified
- Cole & Voytek (2017). Waveform shape. unverified
- Donoghue, Schaworonkow & Voytek (2022). Methodological considerations for oscillations. unverified
- Cole et al. (2019). bycycle. unverified