Skip to content

Fix transition bandwidth reported in 'filter too short' error (#11406) - #14005

Merged
larsoner merged 5 commits into
mne-tools:mainfrom
CedricConday:fix/notch-filter-error-message
Jul 8, 2026
Merged

Fix transition bandwidth reported in 'filter too short' error (#11406)#14005
larsoner merged 5 commits into
mne-tools:mainfrom
CedricConday:fix/notch-filter-error-message

Conversation

@CedricConday

@CedricConday CedricConday commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

Fixes #11406

What was wrong

When a requested FIR filter_length is too short, the raised error reports the transition bandwidth as transition * sfreq / 2.0. But transition is computed as (prev_freq - this_freq) / 2.0 where the frequencies are already normalized to the Nyquist rate, so it is already half the Nyquist-normalized width. Multiplying by sfreq / 2.0 therefore displays half the real transition band — e.g. a requested l_trans_bandwidth=1.0 Hz is reported as 0.50 Hz.

this_N (the required length) is computed correctly; only the message is wrong.

Fix

Report transition * sfreq, which is the true transition bandwidth.

Test

Adds test_filter_too_short_error_reports_correct_transition: a too-short filter with l_trans_bandwidth=1.0 now reports 1.00 Hz transition band. Verified it reports 0.50 Hz on main and 1.00 Hz with this change.


AI-assisted, human-reviewed — I'm an AI engineer; I find, fix, and test with AI (Claude Code), then review and verify before opening.

Comment thread mne/tests/test_filter.py Outdated
Comment on lines +1141 to +1142
import mne

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need to nest this

CedricConday and others added 4 commits July 3, 2026 10:44
…-tools#11406)

The error reported transition * sfreq / 2.0, but transition is already half
the Nyquist-normalized width, so it displayed half the actual transition
band (e.g. 0.50 Hz for a requested 1.0 Hz). Report transition * sfreq. Adds
a regression test.
@CedricConday
CedricConday force-pushed the fix/notch-filter-error-message branch from eb8dfb2 to f156838 Compare July 3, 2026 11:43

@nordme nordme left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @CedricConday , thanks for the PR!

Generally looks good to me except I suggest passing a raw fixture into the test function.

Comment thread mne/tests/test_filter.py Outdated
def test_filter_too_short_error_reports_correct_transition():
"""The 'too short' filter error must report the true transition band (gh-11406)."""
sfreq = 1000.0
raw = mne.io.RawArray(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've got a raw fixture in conftest.py so you don't have to do any array creation!

@CedricConday

Copy link
Copy Markdown
Contributor Author

Good call — switched to the raw fixture from conftest and dropped the now-unneeded import mne. Thanks @nordme and @larsoner!

@larsoner
larsoner merged commit 9268e85 into mne-tools:main Jul 8, 2026
32 checks passed
@larsoner

larsoner commented Jul 8, 2026

Copy link
Copy Markdown
Member

Thanks @CedricConday !

larsoner added a commit to larsoner/mne-python that referenced this pull request Jul 8, 2026
* upstream/main:
  Fix transition bandwidth reported in 'filter too short' error (mne-tools#11406) (mne-tools#14005)
larsoner added a commit to sharifhsn/mne-python that referenced this pull request Jul 14, 2026
* upstream/main: (206 commits)
  Improve type checks (mne-tools#14036)
  Make scrollbar handlers draggable (mne-tools#14040)
  [pre-commit.ci] pre-commit autoupdate (mne-tools#14052)
  Warn when Epochs events fall outside the raw data range (mne-tools#12989) (mne-tools#14004)
  Ensure epochs being concatenated have compatible event ids (mne-tools#14051)
  Widen main content area (mne-tools#14015)
  MAINT: remove dead gain/bits/value_range fields from _read_header in … (mne-tools#14047)
  ENH: replace `_get_blocks` binary reader with mffpy Reader API (mne-tools#14043)
  MAINT: Update dependency specifiers (mne-tools#14048)
  [dependabot]: Bump the actions group with 2 updates (mne-tools#14049)
  Simplify doc building with more refleak (mne-tools#14045)
  ENH: add overlay Brain GUI (mne-tools#14031)
  ENH: support multiple simultaneous overlays in Brain.add_data (mne-tools#13995)
  Add option to show a zero line in browser (mne-tools#14018)
  FIX: pass cmap name string not tuple to interactive topomap slider kwargs (mne-tools#14039)
  Doc/add ai policy pointer (mne-tools#14037)
  Allow subclasses of FigureClass to be passed to plot_raw/plot_epochs (mne-tools#13979)
  MAINT: Replace manual PNS binary block reader in `_read_segment_file` with `mffpy` (mne-tools#14030)
  Fix transition bandwidth reported in 'filter too short' error (mne-tools#11406) (mne-tools#14005)
  ENH: Show the current time as a vertical line in plot_evoked_topo (mne-tools#14032)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

incorrect error message in raw.notch_filter

3 participants