Avoid copying all epochs data in GetEpochsMixin._getitem - #14262
Merged
Conversation
larsoner
requested review from
agramfort,
drammock and
mscheltienne
as code owners
September 1, 2026 16:28
Member
Author
|
Tacked on a fix for module-level test timings that has been broken since using |
drammock
approved these changes
Sep 1, 2026
drammock
enabled auto-merge (squash)
September 1, 2026 17:15
larsoner
disabled auto-merge
September 1, 2026 18:05
Member
Author
|
scientific-python-nightly-wheels repo is having a bad day, merging manually |
larsoner
added a commit
to larsoner/mne-python
that referenced
this pull request
Sep 2, 2026
* upstream/main: (22 commits) Avoid copying all epochs data in GetEpochsMixin._getitem (mne-tools#14262) Add Report.save(only_if_changed=True) (mne-tools#14261) Add jamica to related software [ci skip] (mne-tools#14260) Remove debugging cruft (mne-tools#14259) ENH: add Raw annotation span conversion (mne-tools#14240) Interactive dipole fitting: add STC mesh controls (mne-tools#14256) Document code principles in AGENTS.md (mne-tools#14239) MAINT: Update dependency specifiers (mne-tools#14257) [dependabot]: Bump the actions group with 2 updates (mne-tools#14258) ENH: Add JAMICA as an ICA method (mne-tools#14247) Reuse the MEF session across reads (mne-tools#14254) Read KIT data in cache-sized blocks (mne-tools#14255) Read EGI simple-binary event channels in blocks (mne-tools#14250) Decode Persyst and Nihon Kohden data in cache-sized blocks (mne-tools#14251) Normalize byte order before calibrating strided integer buffers (mne-tools#14252) Speed up EDF and BDF reading (mne-tools#14237) ENH: Add Forward-based projection reconstruction (mne-tools#14235) Read Artemis123, Curry, EEGLAB, Eximia, FIL and NSx in cache-sized blocks (mne-tools#14246) Remove rotating dipoles capability from interactive dipole fitting GUI (mne-tools#14243) Read BrainVision data in cache-sized blocks [ci skip] (mne-tools#14241) ...
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes a slowdown introduced in #11282 where
epochs[...]required a deepcopy of the entire._dataobject (it got rid of aself._data = Nonetrick to make checker happy) -- fix it a different way that still satisfies the checks and doesn't end up requiring a copy of the data. Onmain,[epochs[ii] for ii in len(epochs]copies the entire data arraylen(epochs)times. On this PR, it only copies what is actually taken/used. It makes the checks happy by settingself._data = data[:0]which copies instantly and makes the checks happy, replaces it onselfin afinally, and then replaces it oninstlater before returninginst.Also tacks on a tiny fix with deepcopy where we didn't add
selfto thememodictso infinite recursion was possible in some corner cases (e.g., viainfo["temp"] = info). Probably not likely people will actually hit this, but settingmemodictproperly is best practice so might as well.Changes investigated and drafted by Claude Fable 5 and reviewed / iterated by me (while looking at MNE-BIDS-Pipeline bottlenecks).