Skip to content

Speed up CSD and PSD computations - #14355

Merged
drammock merged 2 commits into
mne-tools:mainfrom
larsoner:speedup-spectral
Sep 29, 2026
Merged

drammock merged 2 commits into
mne-tools:mainfrom
larsoner:speedup-spectral

Conversation

@larsoner

Copy link
Copy Markdown
Member

Speed up spectral estimation (should help with mne-tools/mne-connectivity#486). Gives a ~4x speedup in csd_array_multitaper and ~1.2-2x in psd_array_multitaper. Managed to DRY the code a little bit at the same time, and peak memory usage went down a bit 🚀. Investigated and implemented with Claude Opus 5.5 and reviewed and iterated on by me. (I think it's probably not worth a changelog entry.) Pushing with circle full to make sure nothing breaks here but I think we can really trust our unit tests on this one.

@drammock

Copy link
Copy Markdown
Member

are there particular tutorials you want to inspect before merging @larsoner?

@larsoner

Copy link
Copy Markdown
Member Author

Mostly wanted to check that at least some examples got a little faster and they did (modestly faster on left / PR compared to right / main):

Screenshot 2026-09-29 at 14 12 27

@drammock
drammock merged commit 3102f04 into mne-tools:main Sep 29, 2026
25 checks passed
@drammock
drammock deleted the speedup-spectral branch September 29, 2026 18:27
larsoner added a commit to larsoner/mne-python that referenced this pull request Oct 1, 2026
* upstream/main: (26 commits)
  Splitting _brain.py into multiple modules (phase 1) (mne-tools#14359)
  Fix small corner-case bug with moments (mne-tools#14364)
  Coregistration GUI modernisation (phase 5) (mne-tools#14353)
  FIX: Prevent memory leak in RawArray by removing data from _init_kwargs (mne-tools#14360)
  MAINT: Update code credit (mne-tools#14365)
  type-hint the rest of mne/_fiff (mne-tools#14352)
  MAINT: Update dependency specifiers (mne-tools#14362)
  MAINT: Update dependency specifiers (mne-tools#14357)
  Switch to mne-tools SPEC-0 action (mne-tools#14356)
  MAINT: Move Pixi file updates to autofix workflow (mne-tools#14345)
  BUG: Fix SNIRF landmark length unit scaling (mne-tools#14354)
  DRY dipole code and comment on implementation (mne-tools#14350)
  Speed up CSD and PSD computations (mne-tools#14355)
  [dependabot]: Bump the actions group with 4 updates (mne-tools#14349)
  MAINT: Update pre-commit hook versions (mne-tools#14347)
  Switch to `mne-tools/rename-towncrier` action (mne-tools#14344)
  Fix for latest pyvista-js (mne-tools#14343)
  Avoid copies and support larger files in EEGLAB export (mne-tools#14338)
  Remove line breaks in sponsors check issue text (mne-tools#14337)
  Fix EEGLAB events after dropped epochs (mne-tools#14067)
  ...

# Conflicts:
#	mne/viz/_brain/_brain.py
#	mne/viz/backends/tests/test_renderer.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants