From d7c3f62926b87bbcabeb741d211fd9edbf8b993f Mon Sep 17 00:00:00 2001 From: Michael Straube Date: Mon, 25 May 2026 11:56:54 +0200 Subject: [PATCH 1/6] Make set_eeg_reference working with a string for a channel name --- mne/_fiff/reference.py | 4 ++++ mne/_fiff/tests/test_reference.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/mne/_fiff/reference.py b/mne/_fiff/reference.py index 3b654ee7784..1ed7135fa71 100644 --- a/mne/_fiff/reference.py +++ b/mne/_fiff/reference.py @@ -414,6 +414,10 @@ def set_eeg_reference( logger.info("Applying a custom dict-based reference.") return _apply_dict_reference(inst, ref_channels) + # We need 'ref_channels' to be a list, even for a single channel name. + if isinstance(ref_channels, str) and ref_channels not in ("average", "REST"): + ref_channels = [ref_channels] + ch_type = _get_ch_type(inst, ch_type) if projection: # average reference projector diff --git a/mne/_fiff/tests/test_reference.py b/mne/_fiff/tests/test_reference.py index 085f34e1bcb..3ce7d98d492 100644 --- a/mne/_fiff/tests/test_reference.py +++ b/mne/_fiff/tests/test_reference.py @@ -257,6 +257,10 @@ def test_set_eeg_reference(): with pytest.raises(ValueError, match='supported for ref_channels="averag'): set_eeg_reference(raw, ["EEG 001"], True, True) + # Test passing a single channel name as string + reref, ref_data = set_eeg_reference(raw, "EEG 001", copy=True) + _test_reference(raw, reref, ref_data, ["EEG 001"]) + @pytest.mark.parametrize( "ch_type, msg", From a37688499dffcf2380724bc515d340390c609a24 Mon Sep 17 00:00:00 2001 From: Michael Straube Date: Mon, 25 May 2026 12:07:27 +0200 Subject: [PATCH 2/6] Add changes --- doc/changes/dev/13917.bugfix.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/changes/dev/13917.bugfix.rst diff --git a/doc/changes/dev/13917.bugfix.rst b/doc/changes/dev/13917.bugfix.rst new file mode 100644 index 00000000000..4b975cd0038 --- /dev/null +++ b/doc/changes/dev/13917.bugfix.rst @@ -0,0 +1 @@ +Fix bug with :func:`mne.set_eeg_reference` not working when passing a single channel name as string, by `Michael Straube`_. From eb5751425c3fdbaed91528c8035bad3c170f5ad8 Mon Sep 17 00:00:00 2001 From: Michael Straube Date: Mon, 25 May 2026 15:08:39 +0200 Subject: [PATCH 3/6] trigger circle ci From e134bc0b29a96058bc10aacaa0d8814111294813 Mon Sep 17 00:00:00 2001 From: Michael Straube Date: Wed, 27 May 2026 16:55:36 +0200 Subject: [PATCH 4/6] Update tutorials --- tutorials/intro/15_inplace.py | 2 +- tutorials/preprocessing/55_setting_eeg_reference.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tutorials/intro/15_inplace.py b/tutorials/intro/15_inplace.py index e9cbd4769f1..49cdd033b38 100644 --- a/tutorials/intro/15_inplace.py +++ b/tutorials/intro/15_inplace.py @@ -83,7 +83,7 @@ # we specified ``copy=True``: # sphinx_gallery_thumbnail_number=2 -rereferenced_raw, ref_data = mne.set_eeg_reference(original_raw, ["EEG 003"], copy=True) +rereferenced_raw, ref_data = mne.set_eeg_reference(original_raw, "EEG 003", copy=True) fig_orig = original_raw.plot() fig_reref = rereferenced_raw.plot() diff --git a/tutorials/preprocessing/55_setting_eeg_reference.py b/tutorials/preprocessing/55_setting_eeg_reference.py index 770af624de7..f94848527b1 100644 --- a/tutorials/preprocessing/55_setting_eeg_reference.py +++ b/tutorials/preprocessing/55_setting_eeg_reference.py @@ -79,7 +79,7 @@ # earlobe or mastoid channels, so this is just for demonstration purposes: # use a single channel reference (left earlobe) -# raw.set_eeg_reference(ref_channels=['A1']) +# raw.set_eeg_reference(ref_channels='A1') # use average of mastoid channels as reference # raw.set_eeg_reference(ref_channels=['M1', 'M2']) @@ -116,7 +116,7 @@ # .. KEEP THESE BLOCKS SEPARATE SO FIGURES ARE BIG ENOUGH TO READ # set reference to `EEG 050` -raw_new_ref.set_eeg_reference(ref_channels=["EEG 050"]) +raw_new_ref.set_eeg_reference(ref_channels="EEG 050") raw_new_ref.plot() # %% From d4a71bf984eabb20034785fff5cb4e8da811c882 Mon Sep 17 00:00:00 2001 From: Michael Straube Date: Wed, 27 May 2026 16:57:19 +0200 Subject: [PATCH 5/6] Fix typo --- tutorials/preprocessing/55_setting_eeg_reference.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/preprocessing/55_setting_eeg_reference.py b/tutorials/preprocessing/55_setting_eeg_reference.py index f94848527b1..d64fa536f4c 100644 --- a/tutorials/preprocessing/55_setting_eeg_reference.py +++ b/tutorials/preprocessing/55_setting_eeg_reference.py @@ -85,7 +85,7 @@ # raw.set_eeg_reference(ref_channels=['M1', 'M2']) # use a bipolar reference (contralateral) -# raw.set_bipolar_reference(anode='[F3'], cathode=['F4']) +# raw.set_bipolar_reference(anode=['F3'], cathode=['F4']) # %% # If a scalp electrode was used as reference but was not saved alongside the From eeb7af603cbd48541bb82448d04808c2ec7abe85 Mon Sep 17 00:00:00 2001 From: Michael Straube Date: Wed, 27 May 2026 18:17:42 +0200 Subject: [PATCH 6/6] Update 55_setting_eeg_reference.py --- tutorials/preprocessing/55_setting_eeg_reference.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tutorials/preprocessing/55_setting_eeg_reference.py b/tutorials/preprocessing/55_setting_eeg_reference.py index d64fa536f4c..d5ca2718815 100644 --- a/tutorials/preprocessing/55_setting_eeg_reference.py +++ b/tutorials/preprocessing/55_setting_eeg_reference.py @@ -85,7 +85,7 @@ # raw.set_eeg_reference(ref_channels=['M1', 'M2']) # use a bipolar reference (contralateral) -# raw.set_bipolar_reference(anode=['F3'], cathode=['F4']) +# raw.set_bipolar_reference(anode='F3', cathode='F4') # %% # If a scalp electrode was used as reference but was not saved alongside the @@ -109,7 +109,7 @@ # ``copy=False``. # add new reference channel (all zero) -raw_new_ref = mne.add_reference_channels(raw, ref_channels=["EEG 999"]) +raw_new_ref = mne.add_reference_channels(raw, ref_channels="EEG 999") raw_new_ref.plot() # %% @@ -218,7 +218,7 @@ # :footcite:`YaoEtAl2019` which creates a new virtual channel # named ``EEG 054-EEG 055``. -raw_bip_ref = mne.set_bipolar_reference(raw, anode=["EEG 054"], cathode=["EEG 055"]) +raw_bip_ref = mne.set_bipolar_reference(raw, anode="EEG 054", cathode="EEG 055") raw_bip_ref.plot() # %%