Skip to content

Commit e4cb5ab

Browse files
authored
FIX: Make set_eeg_reference working with a string for a channel name (#13917)
1 parent 741dafa commit e4cb5ab

5 files changed

Lines changed: 15 additions & 6 deletions

File tree

doc/changes/dev/13917.bugfix.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fix bug with :func:`mne.set_eeg_reference` not working when passing a single channel name as string, by `Michael Straube`_.

mne/_fiff/reference.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -416,6 +416,10 @@ def set_eeg_reference(
416416
logger.info("Applying a custom dict-based reference.")
417417
return _apply_dict_reference(inst, ref_channels)
418418

419+
# We need 'ref_channels' to be a list, even for a single channel name.
420+
if isinstance(ref_channels, str) and ref_channels not in ("average", "REST"):
421+
ref_channels = [ref_channels]
422+
419423
ch_type = _get_ch_type(inst, ch_type)
420424

421425
if projection: # average reference projector

mne/_fiff/tests/test_reference.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,10 @@ def test_set_eeg_reference():
257257
with pytest.raises(ValueError, match='supported for ref_channels="averag'):
258258
set_eeg_reference(raw, ["EEG 001"], True, True)
259259

260+
# Test passing a single channel name as string
261+
reref, ref_data = set_eeg_reference(raw, "EEG 001", copy=True)
262+
_test_reference(raw, reref, ref_data, ["EEG 001"])
263+
260264

261265
@pytest.mark.parametrize(
262266
"ch_type, msg",

tutorials/intro/15_inplace.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@
8383
# we specified ``copy=True``:
8484

8585
# sphinx_gallery_thumbnail_number=2
86-
rereferenced_raw, ref_data = mne.set_eeg_reference(original_raw, ["EEG 003"], copy=True)
86+
rereferenced_raw, ref_data = mne.set_eeg_reference(original_raw, "EEG 003", copy=True)
8787
fig_orig = original_raw.plot()
8888
fig_reref = rereferenced_raw.plot()
8989

tutorials/preprocessing/55_setting_eeg_reference.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,13 +79,13 @@
7979
# earlobe or mastoid channels, so this is just for demonstration purposes:
8080

8181
# use a single channel reference (left earlobe)
82-
# raw.set_eeg_reference(ref_channels=['A1'])
82+
# raw.set_eeg_reference(ref_channels='A1')
8383

8484
# use average of mastoid channels as reference
8585
# raw.set_eeg_reference(ref_channels=['M1', 'M2'])
8686

8787
# use a bipolar reference (contralateral)
88-
# raw.set_bipolar_reference(anode='[F3'], cathode=['F4'])
88+
# raw.set_bipolar_reference(anode='F3', cathode='F4')
8989

9090
# %%
9191
# If a scalp electrode was used as reference but was not saved alongside the
@@ -109,14 +109,14 @@
109109
# ``copy=False``.
110110

111111
# add new reference channel (all zero)
112-
raw_new_ref = mne.add_reference_channels(raw, ref_channels=["EEG 999"])
112+
raw_new_ref = mne.add_reference_channels(raw, ref_channels="EEG 999")
113113
raw_new_ref.plot()
114114

115115
# %%
116116
# .. KEEP THESE BLOCKS SEPARATE SO FIGURES ARE BIG ENOUGH TO READ
117117

118118
# set reference to `EEG 050`
119-
raw_new_ref.set_eeg_reference(ref_channels=["EEG 050"])
119+
raw_new_ref.set_eeg_reference(ref_channels="EEG 050")
120120
raw_new_ref.plot()
121121

122122
# %%
@@ -218,7 +218,7 @@
218218
# :footcite:`YaoEtAl2019` which creates a new virtual channel
219219
# named ``EEG 054-EEG 055``.
220220

221-
raw_bip_ref = mne.set_bipolar_reference(raw, anode=["EEG 054"], cathode=["EEG 055"])
221+
raw_bip_ref = mne.set_bipolar_reference(raw, anode="EEG 054", cathode="EEG 055")
222222
raw_bip_ref.plot()
223223

224224
# %%

0 commit comments

Comments
 (0)