Skip to content

ENH: Add initial BCI2000 .dat reader (preload-only) - #13699

Merged
larsoner merged 31 commits into
mne-tools:mainfrom
HansujaB:add-bci2000-reader
Apr 3, 2026
Merged

larsoner merged 31 commits into
mne-tools:mainfrom
HansujaB:add-bci2000-reader

Conversation

@HansujaB

Copy link
Copy Markdown
Contributor

Reference issue (if any)

Fixes #13151

What does this implement/fix?

This PR adds basic support for reading BCI2000 .dat files via:

mne.io.read_raw_bci2k()

The implementation:

  • Parses minimal required header fields
  • Decodes signal and state vector
  • Maps StimulusCode to STI 014 stim channel
  • Returns a Raw object using RawArray
  • Includes deterministic unit tests with a synthetic demo file

Tests

  • Synthetic .dat generator included in tests

  • Verifies:

    • sampling rate
    • number of samples
    • stim channel creation
    • correct StimulusCode decoding
    • preload=False raises

Scope (Intentional Limitations)

  • preload=False is not supported (raises NotImplementedError)
  • Minimal header parsing (SamplingRate + State Vector Definition only)
  • Generic channel names (EEG1, EEG2, …)
  • No gain/scaling applied
  • Not added to _get_supported() (since .dat is already mapped to Curry)

The goal is to provide a correct, minimal reader that can be safely extended in follow-up PRs.

@HansujaB
HansujaB requested a review from larsoner as a code owner February 27, 2026 16:36

@larsoner larsoner left a comment

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.

I didn't look too deeply at the code, but looks like a reasonable start! With something like this we'd want to see it used somewhere, too -- is there a good file we could download using pooch in an example and use in an examples/io/something.py or similar? We could do something like what's done here

https://github.com/mne-tools/mne-bids/blob/15ee0e48179181c66705931683e16272dfd97a9a/examples/convert_fieldtrip_emg.py#L61

Also did you use AI tools in developing this code? If so please disclose the nature of AI tool usage

Comment thread mne/io/bci2k/tests/test_bci2k.py Outdated
from mne.io.bci2k import RawBCI2k, read_raw_bci2k


def _write_demo_bci2k(

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.

A more modern way to do this would be to

Suggested change
def _write_demo_bci2k(
@pytest.fixture
def bci2k_path(tmp_path):
fname = tmp_path / "something"
...
return fname

and then you use this inside your test

@HansujaB HansujaB Mar 2, 2026 •

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@larsoner Thanks a lot for your review!
I searched for an example file but couldn't really find one, although I came across PhysioNet bigP3BCI dataset. The problem is , they converted .dat files to EDF + file header, so we can't use it !

What we can do is (use the same approach to generate a small example file) :
We can generate a small BCI2000 .dat file using a short P3Speller session with minimal channels and then host a trimmed version (a few seconds only) .
If this approach is acceptable I can work on it , Let me know!

Regarding AI usage , I looked upon the major stuff and algorithm development myself but for debugging and redundancy reduction, I took the help of AI tools to increase my efficiency!

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.

We can generate a small BCI2000 .dat file using a short P3Speller session with minimal channels and then host a trimmed version (a few seconds only) .

This would be great, then we could add it to mne-testing-data and use it here

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@larsoner Great! Should I open a separate PR to add the sample file to mne-testing-data, or can I include it in this PR?

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.

@HansujaB you can make a PR to https://github.com/mne-tools/mne-testing-data

Please make sure the new testing file is super small! Like < 1mb if possible. You can crop the data in the file to be only 1-second long if needed.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

@scott-huberty Thanks! I’ll generate a small trimmed .dat file and open a PR to mne-testing-data. It might take me a little while since I have exams this week, but I’ll try to get it up as soon as possible.

@HansujaB
HansujaB requested a review from larsoner March 2, 2026 22:58
@HansujaB

Copy link
Copy Markdown
Contributor Author

@larsoner @scott-huberty I have opened a PR for test file in mne-testing-data as discussed. While testing the dataset locally with the BCI2000 reader, I noticed a small parsing issue and have pushed a fix for that as well. Apologies for the delay!

@HansujaB

Copy link
Copy Markdown
Contributor Author

@larsoner Since the mne-testing-data PR has been merged, I have updated the test to use the dataset from there. Please let me know if anything else needs to be changed.

@larsoner

Copy link
Copy Markdown
Member

Looks like the style CI is unhappy, can you look? Once that's passing I can approve the other workflows

@larsoner

Copy link
Copy Markdown
Member

Also looks like the main comment from #13699 (review) hasn't been addressed

@larsoner

Copy link
Copy Markdown
Member

Could you confirm if there's anything else from that thread that still needs addressing?

Yeah, the comment I linked to had this:

I didn't look too deeply at the code, but looks like a reasonable start! With something like this we'd want to see it used somewhere, too -- is there a good file we could download using pooch in an example and use in an examples/io/something.py or similar? We could do something like what's done here

https://github.com/mne-tools/mne-bids/blob/15ee0e48179181c66705931683e16272dfd97a9a/examples/convert_fieldtrip_emg.py#L61

I don't see any examples/io/* file modified usidng pooch or similar (or discussion about it above) ... ?

@HansujaB

Copy link
Copy Markdown
Contributor Author

@larsoner I have added the example file!

@HansujaB

Copy link
Copy Markdown
Contributor Author

@larsoner Right now , we are failing 2 tests

  1. I checked , still version 0.172 of mne-testing-data is used so we are getting File not found error for test test_read_raw_bci2k
  2. read_raw_bci2k is added to doc/api/reading_raw_data.rst but purposefully not added to _get_supported() so we are facing the following error
    `FAILED mne/io/tests/test_read_raw.py::test_all_reader_documented - AssertionError: Functions missing from documentation:

Functions missing from read_raw:
read_raw_bci2k`

Should I remove it from doc/api/reading_raw_data.rst ?

@larsoner

Copy link
Copy Markdown
Member

These errors are likely because it needs to be added to the API reference like other reading functions:

$ git grep "read_raw_edf" doc/api/
doc/api/reading_raw_data.rst:   read_raw_edf

@HansujaB

Copy link
Copy Markdown
Contributor Author

@larsoner Actually it is added to the API reference as well !

Comment thread examples/io/read_bci2k.py

fname = pooch.retrieve(
url="https://raw.githubusercontent.com/mne-tools/mne-testing-data/master/BCI2k/bci2k_test.dat",
known_hash="sha256:8efc7b5f700660a044086cb1449806ca408c2e6d32d9338c32e1bf31ce3ca9cb",

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.

We should save to whatever this path is, plus maybe a new folder (if needed) bci_data or similar?

https://mne.tools/stable/generated/mne.datasets.default_path.html#mne.datasets.default_path

So something like

data_dir = mne.datasets.default_path() / "bci2k_data"
data_dir.mkdir(exist_ok=True)
...

Comment thread mne/io/bci2k/bci2k.py Outdated
params = {}
state_defs = {}

def _parse_sampling_rate(val):

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.

Can you move this outside the function? Nesting like this makes it hard to know which vars are from this function's scope and which are from the parent's

@HansujaB

Copy link
Copy Markdown
Contributor Author

@larsoner I have pushed the changes , let me know if something needs to be modified. Thanks!

@HansujaB

HansujaB commented Mar 24, 2026 •

Copy link
Copy Markdown
Contributor Author

@larsoner Right now , we are failing 2 tests

  1. I checked , still version 0.172 of mne-testing-data is used so we are getting File not found error for test test_read_raw_bci2k
  2. read_raw_bci2k is added to doc/api/reading_raw_data.rst but purposefully not added to _get_supported() so we are facing the following error
    `FAILED mne/io/tests/test_read_raw.py::test_all_reader_documented - AssertionError: Functions missing from documentation:

Functions missing from read_raw: read_raw_bci2k`

Should I remove it from doc/api/reading_raw_data.rst ?

@larsoner We are still facing these 2 issues :(
I can't really understand how to fix them can you help me out?

@larsoner

larsoner commented Apr 3, 2026

Copy link
Copy Markdown
Member

I'll push a commit to fix the doc linking error and finish the steps from https://github.com/mne-tools/mne-testing-data?tab=readme-ov-file#add-or-change-files-in-the-repo-for-use-with-mne to update the version

@larsoner
larsoner enabled auto-merge (squash) April 3, 2026 21:21
@larsoner larsoner added this to the 1.12 milestone Apr 3, 2026
@HansujaB

HansujaB commented Apr 3, 2026

Copy link
Copy Markdown
Contributor Author

@larsoner Thanks a lot for the finishing touches!
Really sorry I missed the last step to change version here my bad.

@larsoner
larsoner merged commit 9b14298 into mne-tools:main Apr 3, 2026
32 checks passed
@larsoner

larsoner commented Apr 4, 2026

Copy link
Copy Markdown
Member

Thanks @HansujaB !

larsoner added a commit to teonbrooks/mne-python that referenced this pull request Apr 7, 2026
* upstream/main: (83 commits)
  [pre-commit.ci] pre-commit autoupdate (mne-tools#13818)
  MAINT: Update dependency specifiers (mne-tools#13814)
  FIX: correct sensor name ordering in plot_topomap when using Info object (mne-tools#13686)
  ENH: Add support for plotting ICA source timecourses in Report.add_ica (mne-tools#13697)
  fixed some info fields in MEG interpolation across sensor types using… (mne-tools#13759)
  [dependabot]: Bump the actions group with 2 updates (mne-tools#13817)
  DOC: Fix type annotation for order parameter in Epochs.plot() (mne-tools#13639)
  Add pybispectra as related software (mne-tools#13812)
  ENH: Add initial BCI2000 .dat reader (preload-only) (mne-tools#13699)
  BUG: Fix bug with fwd.info["dev_head_t"] setting (mne-tools#13619)
  MAINT: Remove tomli, tomlsort, and ruff from `test` group (mne-tools#13809)
  MAINT: Make sys_info more robust (mne-tools#13810)
  ENH: Replace custom _whosmat_hdf5 with pymatreader.whosmat (mne-tools#13753)
  MAINT: Install SciPy pre (mne-tools#13807)
  ENH: add cmap parameter to Evoked.animate_topomap (mne-tools#13756)
  ENH: expose font_file in Brain.add_text (mne-tools#13778)
  Replacing abstractclassmethod with abstractmethod (mne-tools#13806)
  FIX: short-circuit n_jobs=None to n_jobs=1 without Parallel setup (mne-tools#13777)
  MAINT: Update code credit (mne-tools#13805)
  Fix top and bottom clipping in raw.plot() (mne-tools#13787)
  ...
@HansujaB
HansujaB deleted the add-bci2000-reader branch May 3, 2026 15:40
harrisonritz added a commit to harrisonritz/mne-python that referenced this pull request May 27, 2026
* [pre-commit.ci] pre-commit autoupdate (mne-tools#13646)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* Fix and extend anonymize_info (mne-tools#13647)

* Fix epochs.plot() scrollbar issue (mne-tools#13654)

* ENH: Add optional channel name overlay to plot_alignment (mne-tools#13570)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Daniel McCloy <[email protected]>

* Fix docstrings for get_data() (mne-tools#13652)

* DOC: Add detail to make_watershed_bem volume parameter (mne-tools#13658)

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13663)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* update maintainers lists (mne-tools#13631)

* Fixes make_scalp_surfaces (mne-tools#13024)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Marijn van Vliet <[email protected]>
Co-authored-by: Eric Larson <[email protected]>

* DOC: Add pybvrf [skip azp] [skip actions] (mne-tools#13665)

* Expose bem submodule (mne-tools#13669)

* Rename `Epochs.reset_drop_log_selection()` to `Epochs.reset_index()` (mne-tools#13675)

* MAINT: Work around NumPy deprecation (mne-tools#13677)

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13678)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* Allow reading alternative nasion label (Nz) from snirf file (mne-tools#13672)

Co-authored-by: Daniel McCloy <[email protected]>

* use a lockfile for "old" CI job (mne-tools#13490)

Co-authored-by: Carina Forster <[email protected]>
Co-authored-by: Thomas S. Binns <[email protected]>
Co-authored-by: Scott Huberty <[email protected]>
Co-authored-by: Erica Peterson <[email protected]>
Co-authored-by: Eric Larson <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Fix bad cross-ref syntax (mne-tools#13690)

* Doc- clarify return types as instance of original type (mne-tools#13674)

Co-authored-by: Marijn van Vliet <[email protected]>

* update partner institution list (mne-tools#13668)

* MAINT: Update code credit (mne-tools#13709)

Co-authored-by: Eric Larson <[email protected]>

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13716)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* DOC: clarify index mismatch in Epochs.drop when epochs are auto-dropped (mne-tools#13688)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Thomas S. Binns <[email protected]>
Co-authored-by: Daniel McCloy <[email protected]>

* ENH: support per-vertex opacity in 3D overlays (mne-tools#13706)

Co-authored-by: Eric Larson <[email protected]>

* FIX: Spelling [ci skip]

* Fix generation of lockfile for old job (mne-tools#13724)

* eyetrack should not count as picks=data (mne-tools#13723)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Scott Huberty <[email protected]>

* BUG: prevent NaNs in layered overlay compositing when resulting alpha is zero (mne-tools#13714)

Co-authored-by: Marijn van Vliet <[email protected]>

* Added HEDAnnotations (mne-tools#13059)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Daniel McCloy <[email protected]>
Co-authored-by: Bru <[email protected]>
Co-authored-by: Stefan Appelhoff <[email protected]>

* [dependabot]: Bump the actions group with 2 updates (mne-tools#13728)

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>
Co-authored-by: Eric Larson <[email protected]>

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13734)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>
Co-authored-by: Eric Larson <[email protected]>

* Raising meaningful warnings/errors for interpolate_bads, when supplie… (mne-tools#13518)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* BUG: Fix bug with default (mne-tools#13744)

* DOC: document first_samp behavior after crop and RawArray workaround (mne-tools#13685)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* FIX: do not print dev_head_t if not available (mne-tools#13741)

Co-authored-by: Eric Larson <[email protected]>

* FIX: Link [ci skip]

* Update name [ci skip]

* MAINT: cleanup Python 3.9 compat from __future__ import annotations (mne-tools#13749)

Co-authored-by: Marijn van Vliet <[email protected]>

* FIX: Handle hidden annotations during deletion in mpl plot (mne-tools#13703)

* ENH: Log scaling better (mne-tools#13758)

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13762)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>
Co-authored-by: Eric Larson <[email protected]>

* FORWARD: assert invariant for unreachable rref branch in _lead_dots (mne-tools#13764)

* Improve handling of dropped epochs in ica.plot_properties (mne-tools#13746)

* Support mixed hed annotations, concat and solve version registration (mne-tools#13736)

* ENH: compute CSD directly for upper-triangle channel pairs in Fourier/multitaper (mne-tools#13719)

* Extend plot_csd support to SEEG, ECoG, and DBS channel types (mne-tools#13713)

Co-authored-by: Thomas S. Binns <[email protected]>
Co-authored-by: Marijn van Vliet <[email protected]>

* Add example for Python/R interoperability using mass univariate t-test (mne-tools#13729)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Eric Larson <[email protected]>
Co-authored-by: Daniel McCloy <[email protected]>

* [BUG] `IndexError` in `set_montage()` for MEG+EEG recordings when digitization is skipped (mne-tools#13700)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* FIX: remap lowpass <= 0 to Nyquist in GDF/EDF reader (mne-tools#13769)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* FIX: correct spacing attribute in SourceMorph when src_to is provided (mne-tools#13687)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13779)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>
Co-authored-by: Eric Larson <[email protected]>

* fix bad xrefs in changelog (mne-tools#13783)

* DOC: fix invalid cross-reference in 13700 changelog entry (mne-tools#13785)

* FIX: raise clear ValueError when no ECG events found in create_ecg_ep… (mne-tools#13771)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Daniel McCloy <[email protected]>

* ENH: Add native save and read support for SSD (mne-tools#13718)

Co-authored-by: Thomas S. Binns <[email protected]>

* ENH: Add variance regularization to F-statistic in f_oneway (mne-tools#13698)

Co-authored-by: Daniel McCloy <[email protected]>

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13802)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* ENH: allow per-channel colors in raw.plot via channel name dict keys (mne-tools#13765)

* Fix top and bottom clipping in raw.plot() (mne-tools#13787)

* MAINT: Update code credit (mne-tools#13805)

* FIX: short-circuit n_jobs=None to n_jobs=1 without Parallel setup (mne-tools#13777)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Daniel McCloy <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>

* Replacing abstractclassmethod with abstractmethod (mne-tools#13806)

* ENH: expose font_file in Brain.add_text (mne-tools#13778)

Co-authored-by: Daniel McCloy <[email protected]>
Co-authored-by: Marijn van Vliet <[email protected]>

* ENH: add cmap parameter to Evoked.animate_topomap (mne-tools#13756)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* MAINT: Install SciPy pre (mne-tools#13807)

* ENH: Replace custom _whosmat_hdf5 with pymatreader.whosmat (mne-tools#13753)

* MAINT: Make sys_info more robust (mne-tools#13810)

* MAINT: Remove tomli, tomlsort, and ruff from `test` group (mne-tools#13809)

* BUG: Fix bug with fwd.info["dev_head_t"] setting (mne-tools#13619)

* ENH: Add initial BCI2000 .dat reader (preload-only) (mne-tools#13699)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Eric Larson <[email protected]>

* Add pybispectra as related software (mne-tools#13812)

* DOC: Fix type annotation for order parameter in Epochs.plot() (mne-tools#13639)

Co-authored-by: Daniel McCloy <[email protected]>
Co-authored-by: Scott Huberty <[email protected]>

* [dependabot]: Bump the actions group with 2 updates (mne-tools#13817)

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* fixed some info fields in MEG interpolation across sensor types using… (mne-tools#13759)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* ENH: Add support for plotting ICA source timecourses in Report.add_ica (mne-tools#13697)

* FIX: correct sensor name ordering in plot_topomap when using Info object (mne-tools#13686)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* MAINT: Update dependency specifiers (mne-tools#13814)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Thomas S. Binns <[email protected]>

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13818)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* MAINT: Update code credit [ci skip] (mne-tools#13823)

Co-authored-by: Eric Larson <[email protected]>

* Update values to int64 (mne-tools#13548)

Co-authored-by: Eric Larson <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Daniel McCloy <[email protected]>

* FIX: Installer links etc [ci skip]

* TST: Doc

* FIX: correct mode parameter in get_point_spread and get_cross_talk (mne-tools#13754)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* DOC: Add epoch quality example (mne-tools#13710)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Thomas S. Binns <[email protected]>

* Change syncing of dependencies with `README` (mne-tools#13832)

* DOC: Fix changelog [circle deploy] (mne-tools#13833)

Co-authored-by: Thomas S. Binns <[email protected]>

* Exclude private submodules (e.g., _edf) from Credits page (mne-tools#13673)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* BUG: Fix bug with backward compat [circle deploy] (mne-tools#13835)

* Fix bug with credit [circle deploy] (mne-tools#13841)

* ENH: broaden OPM coil handling for colocated topomaps (mne-tools#13825)

* DOC: Add artifact-cleaning note to epoch quality example. (mne-tools#13827)

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13839)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>
Co-authored-by: Eric Larson <[email protected]>

* FIX: Ref [skip azp] [skip actions]

* BUG: Fix bug with logging level (mne-tools#13843)

* fix env var in actions (mne-tools#13844)

Co-authored-by: Scott Huberty <[email protected]>

* TST: Add regression coverage for OPM topomap grouping via `plot_joint()` and `ICA` (mne-tools#13842)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* Customize annotation colors (mne-tools#13838)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* DOC: Remove invalid ndarray option from colormap docstrings (mne-tools#13797)

* Fix versionadded for annotation_colors (mne-tools#13853)

* [dependabot]: Bump the actions group with 2 updates (mne-tools#13852)

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13854)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* MAINT: Links [circle deploy] [skip azp] [skip actions]

* MAINT: add OPM overlap grouping helper (mne-tools#13847)

* FIX: Correct fNIRS interpolation with reordered picks (mne-tools#13856)

* MAINT: Modernize numpydoc checks (mne-tools#13865)

* Allow concatenating `BaseRaw` objects (mne-tools#13263)

Co-authored-by: Copilot <[email protected]>
Co-authored-by: Eric Larson <[email protected]>

* Add dark theme to Matplotlib-based raw.plot (mne-tools#13861)

Co-authored-by: Copilot <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* FIX: Check [ci skip]

* FIX: Sets [ci skip]

* Update towncrier change type descriptions (mne-tools#13829)

* fix numpydoc (missed YD01 ignore) (mne-tools#13868)

* FIX: correct label orientation for 0-90 deg nodes in plot_connectivity_circle (mne-tools#13855)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Daniel McCloy <[email protected]>

* [dependabot]: Bump the actions group with 3 updates (mne-tools#13871)

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13873)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* Add preload keyward argument to Inst.load_data() method call (mne-tools#13858)

* MAINT: Make test dir read-only (mne-tools#13872)

* BUG: improve FreeSurfer error message when executable not found (mne-tools#13874)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Eric Larson <[email protected]>

* add CI description to contributing guide (mne-tools#13837)

Co-authored-by: Daniel McCloy <[email protected]>

* Fix grammar [ci skip] (mne-tools#13881)

* FIX: handle missing __version__ in check_version (mne-tools#13870)

Co-authored-by: Claude Sonnet 4.6 <[email protected]>

* apply diataxis to tutorials/inverse/80_brainstorm_phantom_elekta.py (mne-tools#13584)

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* add AI policy (mne-tools#13883)

* MAINT: Switch to pip for macOS and minimal jobs (mne-tools#13882)

* MAINT: Update code credit (mne-tools#13878)

* ENH:  Allow passing source detector distances to beer lambert law (mne-tools#13875)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>

* MAINT: Update for vtk deprecation (mne-tools#13886)

* ENH: Add overrides= parameter to read_raw_brainvision for BIDS header repair (mne-tools#13884)

* Fix bug with ica.plot_properties (mne-tools#13885)

* Fix `picks` being ignored in `Epochs.apply_function()` (mne-tools#13894)

* Update describing changes in contributing guide (mne-tools#13895)

* Add Zuna to related software list (mne-tools#13849)

Co-authored-by: Daniel McCloy <[email protected]>

* [dependabot]: Bump github/codeql-action from 4.35.2 to 4.35.3 in the actions group (mne-tools#13897)

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>
Co-authored-by: Eric Larson <[email protected]>

* DOC: Fix apply_function shape description for Epochs (mne-tools#13891)

Co-authored-by: Eric Larson <[email protected]>

* Raise warning and errors when np.nan provided to mne.stats.permutation_t_test(). (mne-tools#13813)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Erica R Peterson <[email protected]>

* MAINT: Update dependency specifiers (mne-tools#13899)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Eric Larson <[email protected]>

* [dependabot]: Bump github/codeql-action from 4.35.3 to 4.35.4 in the actions group (mne-tools#13901)

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13902)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* MAINT: Remove workaround for old PySide6 (mne-tools#13900)

* Add spherical montages (mne-tools#13903)

* [dependabot]: Bump the actions group with 2 updates (mne-tools#13918)

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* [pre-commit.ci] pre-commit autoupdate (mne-tools#13919)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>

* MAINT: Update dependency specifiers (mne-tools#13916)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Eric Larson <[email protected]>

* BUG: set_eeg_reference list ch_type now applies per-type CAR by default (mne-tools#13920)

* FIX: Avoid iteration errors caused by None when reading Nihon Kohden .LOG files (mne-tools#13915)

* Fix drop_log dtype (mne-tools#13923)

* Doc: add guidance on taking over a stale pull request (mne-tools#13877)

Co-authored-by: Thomas S. Binns <[email protected]>
Co-authored-by: Daniel McCloy <[email protected]>

* FIX: Make set_eeg_reference working with a string for a channel name (mne-tools#13917)

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: mne[bot] <[email protected]>
Co-authored-by: Clemens Brunner <[email protected]>
Co-authored-by: Aman Srivastava <[email protected]>
Co-authored-by: Daniel McCloy <[email protected]>
Co-authored-by: Himanshu Mahor <[email protected]>
Co-authored-by: Scott Huberty <[email protected]>
Co-authored-by: Victor Férat <[email protected]>
Co-authored-by: Marijn van Vliet <[email protected]>
Co-authored-by: Eric Larson <[email protected]>
Co-authored-by: Aniket <[email protected]>
Co-authored-by: Carina Forster <[email protected]>
Co-authored-by: Thomas S. Binns <[email protected]>
Co-authored-by: Erica Peterson <[email protected]>
Co-authored-by: Horizon_Architect_07 <[email protected]>
Co-authored-by: Pragnya <[email protected]>
Co-authored-by: Benedikt Ehinger <[email protected]>
Co-authored-by: Kay Robbins <[email protected]>
Co-authored-by: Bru <[email protected]>
Co-authored-by: Stefan Appelhoff <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Johannes Herforth <[email protected]>
Co-authored-by: Hansuja <[email protected]>
Co-authored-by: Simon Kern <[email protected]>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Akhilesh <[email protected]>
Co-authored-by: CHH <[email protected]>
Co-authored-by: Teon L Brooks <[email protected]>
Co-authored-by: Lifeng <[email protected]>
Co-authored-by: Kalle Mäkelä <[email protected]>
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Pavel Popov <[email protected]>
Co-authored-by: Ayushi Satodiya <[email protected]>
Co-authored-by: Seth Bashford <[email protected]>
Co-authored-by: Baris <[email protected]>
Co-authored-by: Claude Sonnet 4.6 <[email protected]>
Co-authored-by: Jonas Mago <[email protected]>
Co-authored-by: Bhargav Kowshik <[email protected]>
Co-authored-by: Erica R Peterson <[email protected]>
Co-authored-by: Ben Tang <[email protected]>
Co-authored-by: myd7349 <[email protected]>
Co-authored-by: Michael Straube <[email protected]>
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.

BCI2000 .dat file reader

3 participants