From 5bf257089ab197e8b986a209255fcff0c70a6369 Mon Sep 17 00:00:00 2001 From: Sophie Herbst Date: Wed, 14 Feb 2024 16:49:17 +0100 Subject: [PATCH 01/22] add image_kwargs to epochs-report --- mne/report/report.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index 534377d62e3..2a39f7d1a6f 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -1092,6 +1092,7 @@ def add_epochs( *, psd=True, projs=None, + image_kwargs=None, topomap_kwargs=None, drop_log_ignore=("IGNORED",), tags=("epochs",), @@ -1120,6 +1121,7 @@ def add_epochs( If ``True``, add PSD plots based on all ``epochs``. If ``False``, do not add PSD plots. %(projs_report)s + %(image_kwargs)s %(topomap_kwargs)s drop_log_ignore : array-like of str The drop reasons to ignore when creating the drop log bar plot. @@ -1138,6 +1140,7 @@ def add_epochs( epochs=epochs, psd=psd, add_projs=add_projs, + image_kwargs=image_kwargs, topomap_kwargs=topomap_kwargs, drop_log_ignore=drop_log_ignore, section=title, @@ -3900,6 +3903,7 @@ def _add_epochs( epochs, psd, add_projs, + image_kwargs, topomap_kwargs, drop_log_ignore, image_format, @@ -3936,7 +3940,7 @@ def _add_epochs( for ch_type in ch_types: with use_log_level(_verbose_safe_false(level="error")): - figs = epochs.copy().pick(ch_type, verbose=False).plot_image(show=False) + figs = epochs.copy().pick(ch_type, verbose=False).plot_image(show=False, **image_kwargs) assert len(figs) == 1 fig = figs[0] From 25be96fca7a0fe2a45ee52214bd68c0b6e24acb6 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 14 Feb 2024 15:55:35 +0000 Subject: [PATCH 02/22] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- mne/report/report.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index 2a39f7d1a6f..bfa975df3a0 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -3940,7 +3940,11 @@ def _add_epochs( for ch_type in ch_types: with use_log_level(_verbose_safe_false(level="error")): - figs = epochs.copy().pick(ch_type, verbose=False).plot_image(show=False, **image_kwargs) + figs = ( + epochs.copy() + .pick(ch_type, verbose=False) + .plot_image(show=False, **image_kwargs) + ) assert len(figs) == 1 fig = figs[0] From fd646a02abf750e1de37635b35148231feaf2ddd Mon Sep 17 00:00:00 2001 From: Sophie Herbst Date: Wed, 14 Feb 2024 16:57:37 +0100 Subject: [PATCH 03/22] add image_kwargs to epochs-report + correct line breaks --- mne/report/report.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index 2a39f7d1a6f..bfa975df3a0 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -3940,7 +3940,11 @@ def _add_epochs( for ch_type in ch_types: with use_log_level(_verbose_safe_false(level="error")): - figs = epochs.copy().pick(ch_type, verbose=False).plot_image(show=False, **image_kwargs) + figs = ( + epochs.copy() + .pick(ch_type, verbose=False) + .plot_image(show=False, **image_kwargs) + ) assert len(figs) == 1 fig = figs[0] From 9ba38405ff48fd719aa2f79889354cb0e0ee0bb6 Mon Sep 17 00:00:00 2001 From: Sophie Herbst Date: Wed, 14 Feb 2024 17:12:59 +0100 Subject: [PATCH 04/22] add changelog --- doc/changes/devel/12443.newfeature.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/changes/devel/12443.newfeature.rst diff --git a/doc/changes/devel/12443.newfeature.rst b/doc/changes/devel/12443.newfeature.rst new file mode 100644 index 00000000000..6b977b39ad6 --- /dev/null +++ b/doc/changes/devel/12443.newfeature.rst @@ -0,0 +1 @@ +Add option to pass image_kwargs to :class:`mne.Report.add_epochs` to allow adjusting vmin and vmax of the epochs image in the report. \ No newline at end of file From 0421fd4fdaf6030951a6e5a3f0e1554c13436742 Mon Sep 17 00:00:00 2001 From: Sophie Herbst Date: Wed, 14 Feb 2024 17:19:40 +0100 Subject: [PATCH 05/22] Update doc/changes/devel/12443.newfeature.rst MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Richard Höchenberger --- doc/changes/devel/12443.newfeature.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/changes/devel/12443.newfeature.rst b/doc/changes/devel/12443.newfeature.rst index 6b977b39ad6..837234d1f44 100644 --- a/doc/changes/devel/12443.newfeature.rst +++ b/doc/changes/devel/12443.newfeature.rst @@ -1 +1 @@ -Add option to pass image_kwargs to :class:`mne.Report.add_epochs` to allow adjusting vmin and vmax of the epochs image in the report. \ No newline at end of file +Add option to pass ``image_kwargs`` to :class:`mne.Report.add_epochs` to allow adjusting e.g. ``vmin`` and ``vmax`` of the epochs image in the report. \ No newline at end of file From 590f7915da5bfdb218d4cd212e8582a3223ffaed Mon Sep 17 00:00:00 2001 From: Sophie Herbst Date: Wed, 14 Feb 2024 17:21:28 +0100 Subject: [PATCH 06/22] document image_kwargs --- mne/report/report.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mne/report/report.py b/mne/report/report.py index bfa975df3a0..96b9d7938d8 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -1122,6 +1122,8 @@ def add_epochs( do not add PSD plots. %(projs_report)s %(image_kwargs)s + image_kwargs : dict | None + Keyword arguments to pass to the "epochs image"-generating function (:meth:`mne.Epochs.plot_image`). %(topomap_kwargs)s drop_log_ignore : array-like of str The drop reasons to ignore when creating the drop log bar plot. From 6e5f93bc9b6af300bb71e286d78832c03b3d7297 Mon Sep 17 00:00:00 2001 From: Sophie Herbst Date: Wed, 14 Feb 2024 17:36:12 +0100 Subject: [PATCH 07/22] add line break --- mne/report/report.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index 96b9d7938d8..3e241cb7938 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -1123,7 +1123,8 @@ def add_epochs( %(projs_report)s %(image_kwargs)s image_kwargs : dict | None - Keyword arguments to pass to the "epochs image"-generating function (:meth:`mne.Epochs.plot_image`). + Keyword arguments to pass to the "epochs image"-generating + function (:meth:`mne.Epochs.plot_image`). %(topomap_kwargs)s drop_log_ignore : array-like of str The drop reasons to ignore when creating the drop log bar plot. From 7eb1665b344b1892dc9b0486c687c31f08a45ade Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 14 Feb 2024 16:36:46 +0000 Subject: [PATCH 08/22] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- mne/report/report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index 3e241cb7938..2cbe9722dd1 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -1123,7 +1123,7 @@ def add_epochs( %(projs_report)s %(image_kwargs)s image_kwargs : dict | None - Keyword arguments to pass to the "epochs image"-generating + Keyword arguments to pass to the "epochs image"-generating function (:meth:`mne.Epochs.plot_image`). %(topomap_kwargs)s drop_log_ignore : array-like of str From 47be0ad2eeea4b2436eb5935044b4f52087d6f23 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20H=C3=B6chenberger?= Date: Thu, 15 Feb 2024 07:29:51 +0100 Subject: [PATCH 09/22] Update report.py --- mne/report/report.py | 1 - 1 file changed, 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index 2cbe9722dd1..ce8bb4422fc 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -1121,7 +1121,6 @@ def add_epochs( If ``True``, add PSD plots based on all ``epochs``. If ``False``, do not add PSD plots. %(projs_report)s - %(image_kwargs)s image_kwargs : dict | None Keyword arguments to pass to the "epochs image"-generating function (:meth:`mne.Epochs.plot_image`). From 00479b282fd09d548dd4cf94929dc2b13a3f5912 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Richard=20H=C3=B6chenberger?= Date: Thu, 15 Feb 2024 07:30:53 +0100 Subject: [PATCH 10/22] Update report.py --- mne/report/report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index ce8bb4422fc..6bdc2f396a8 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -1121,7 +1121,7 @@ def add_epochs( If ``True``, add PSD plots based on all ``epochs``. If ``False``, do not add PSD plots. %(projs_report)s - image_kwargs : dict | None + image_kwargs : dict | None Keyword arguments to pass to the "epochs image"-generating function (:meth:`mne.Epochs.plot_image`). %(topomap_kwargs)s From 0800c1d0d138c1b747a3589ff24958c5308e2ec5 Mon Sep 17 00:00:00 2001 From: Sophie Herbst Date: Thu, 15 Feb 2024 10:42:05 +0100 Subject: [PATCH 11/22] set image_kwargs to empty dict --- mne/report/report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index 6bdc2f396a8..64b1f8c4e77 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -3905,7 +3905,7 @@ def _add_epochs( epochs, psd, add_projs, - image_kwargs, + image_kwargs = dict(), topomap_kwargs, drop_log_ignore, image_format, From 1d42352df70db47531c14d9b47f76dbab39bfab8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 15 Feb 2024 09:42:46 +0000 Subject: [PATCH 12/22] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- mne/report/report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index 64b1f8c4e77..d59ab08e0ca 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -3905,7 +3905,7 @@ def _add_epochs( epochs, psd, add_projs, - image_kwargs = dict(), + image_kwargs=dict(), topomap_kwargs, drop_log_ignore, image_format, From 2864489cf1057261fdb1515f8c0be2863754c804 Mon Sep 17 00:00:00 2001 From: Sophie Herbst Date: Thu, 15 Feb 2024 10:48:38 +0100 Subject: [PATCH 13/22] set image_kwargs to empty dict - fix lint error --- mne/report/report.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index 64b1f8c4e77..65865e91c88 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -3905,7 +3905,7 @@ def _add_epochs( epochs, psd, add_projs, - image_kwargs = dict(), + image_kwargs = None, topomap_kwargs, drop_log_ignore, image_format, @@ -3940,6 +3940,9 @@ def _add_epochs( ch_types = _get_data_ch_types(epochs) epochs.load_data() + if image_kwargs is None: + image_kwargs = {} + for ch_type in ch_types: with use_log_level(_verbose_safe_false(level="error")): figs = ( From 33cbeca47a90e5c1b750fdcb9c771820a5264d85 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 15 Feb 2024 09:51:40 +0000 Subject: [PATCH 14/22] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- mne/report/report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index e1ab7302a93..6f557869722 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -3942,7 +3942,7 @@ def _add_epochs( if image_kwargs is None: image_kwargs = {} - + for ch_type in ch_types: with use_log_level(_verbose_safe_false(level="error")): figs = ( From 5fc6ead9755f5ea9c615aa983aa87ccf7228f453 Mon Sep 17 00:00:00 2001 From: Sophie Herbst Date: Thu, 15 Feb 2024 10:52:27 +0100 Subject: [PATCH 15/22] set image_kwargs to empty dict --- mne/report/report.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mne/report/report.py b/mne/report/report.py index e1ab7302a93..9a349777102 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -3905,7 +3905,7 @@ def _add_epochs( epochs, psd, add_projs, - image_kwargs=None, + image_kwargs, topomap_kwargs, drop_log_ignore, image_format, @@ -3941,7 +3941,7 @@ def _add_epochs( epochs.load_data() if image_kwargs is None: - image_kwargs = {} + image_kwargs = dict() for ch_type in ch_types: with use_log_level(_verbose_safe_false(level="error")): From 1a71386e1963d7db882b2fc1a55e9f29e5dddebd Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 15 Feb 2024 09:54:05 +0000 Subject: [PATCH 16/22] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- mne/report/report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mne/report/report.py b/mne/report/report.py index 9a349777102..e74deeae6a2 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -3942,7 +3942,7 @@ def _add_epochs( if image_kwargs is None: image_kwargs = dict() - + for ch_type in ch_types: with use_log_level(_verbose_safe_false(level="error")): figs = ( From a7facce422bec79d94b0c961dbf3934773a6433d Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Fri, 16 Feb 2024 09:42:10 -0500 Subject: [PATCH 17/22] MAINT: Test --- doc/changes/devel/12443.newfeature.rst | 2 +- mne/report/report.py | 4 +++- mne/report/tests/test_report.py | 16 ++++++++++++---- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/doc/changes/devel/12443.newfeature.rst b/doc/changes/devel/12443.newfeature.rst index 837234d1f44..f704e45b4a5 100644 --- a/doc/changes/devel/12443.newfeature.rst +++ b/doc/changes/devel/12443.newfeature.rst @@ -1 +1 @@ -Add option to pass ``image_kwargs`` to :class:`mne.Report.add_epochs` to allow adjusting e.g. ``vmin`` and ``vmax`` of the epochs image in the report. \ No newline at end of file +Add option to pass ``image_kwargs`` to :class:`mne.Report.add_epochs` to allow adjusting e.g. ``vmin`` and ``vmax`` of the epochs image in the report, by `Sophie Herbst`_. \ No newline at end of file diff --git a/mne/report/report.py b/mne/report/report.py index e74deeae6a2..4f7cbed04eb 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -1124,6 +1124,8 @@ def add_epochs( image_kwargs : dict | None Keyword arguments to pass to the "epochs image"-generating function (:meth:`mne.Epochs.plot_image`). + + .. versionadded:: 1.7 %(topomap_kwargs)s drop_log_ignore : array-like of str The drop reasons to ignore when creating the drop log bar plot. @@ -1134,7 +1136,7 @@ def add_epochs( Notes ----- - .. versionadded:: 0.24.0 + .. versionadded:: 0.24 """ tags = _check_tags(tags) add_projs = self.projs if projs is None else projs diff --git a/mne/report/tests/test_report.py b/mne/report/tests/test_report.py index 5f549093581..5a4f541c8a6 100644 --- a/mne/report/tests/test_report.py +++ b/mne/report/tests/test_report.py @@ -884,6 +884,8 @@ def test_manual_report_2d(tmp_path, invisible_fig): raw = read_raw_fif(raw_fname) raw.pick(raw.ch_names[:6]).crop(10, None) raw.info.normalize_proj() + raw_non_preloaded = raw.copy() + raw.load_data().filter(None, 10) cov = read_cov(cov_fname) cov = pick_channels_cov(cov, raw.ch_names) events = read_events(events_fname) @@ -899,7 +901,11 @@ def test_manual_report_2d(tmp_path, invisible_fig): events=events, event_id=event_id, tmin=-0.2, tmax=0.5, sfreq=raw.info["sfreq"] ) epochs_without_metadata = Epochs( - raw=raw, events=events, event_id=event_id, baseline=None + raw=raw, + events=events, + event_id=event_id, + baseline=None, + decim=10, ) epochs_with_metadata = Epochs( raw=raw, @@ -907,9 +913,10 @@ def test_manual_report_2d(tmp_path, invisible_fig): event_id=metadata_event_id, baseline=None, metadata=metadata, + decim=10, ) evokeds = read_evokeds(evoked_fname) - evoked = evokeds[0].pick("eeg") + evoked = evokeds[0].pick("eeg").decimate(10, verbose="error") with pytest.warns(ConvergenceWarning, match="did not converge"): ica = ICA(n_components=3, max_iter=1, random_state=42).fit( @@ -927,6 +934,7 @@ def test_manual_report_2d(tmp_path, invisible_fig): tags=("epochs",), psd=False, projs=False, + image_kwargs=dict(colorbar=False), ) r.add_epochs( epochs=epochs_without_metadata, title="my epochs 2", psd=1, projs=False @@ -963,11 +971,11 @@ def test_manual_report_2d(tmp_path, invisible_fig): ) r.add_ica(ica=ica, title="my ica", inst=None) with pytest.raises(RuntimeError, match="not preloaded"): - r.add_ica(ica=ica, title="ica", inst=raw) + r.add_ica(ica=ica, title="ica", inst=raw_non_preloaded) r.add_ica( ica=ica, title="my ica with raw inst", - inst=raw.copy().load_data(), + inst=raw, picks=[2], ecg_evoked=ica_ecg_evoked, eog_evoked=ica_eog_evoked, From 2ae7c69e3e1386b528d979405951b05fc818cad9 Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Fri, 16 Feb 2024 09:44:22 -0500 Subject: [PATCH 18/22] FIX: Better --- mne/report/tests/test_report.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mne/report/tests/test_report.py b/mne/report/tests/test_report.py index 5a4f541c8a6..65d3ceb697a 100644 --- a/mne/report/tests/test_report.py +++ b/mne/report/tests/test_report.py @@ -885,7 +885,7 @@ def test_manual_report_2d(tmp_path, invisible_fig): raw.pick(raw.ch_names[:6]).crop(10, None) raw.info.normalize_proj() raw_non_preloaded = raw.copy() - raw.load_data().filter(None, 10) + raw.load_data() cov = read_cov(cov_fname) cov = pick_channels_cov(cov, raw.ch_names) events = read_events(events_fname) @@ -906,6 +906,7 @@ def test_manual_report_2d(tmp_path, invisible_fig): event_id=event_id, baseline=None, decim=10, + verbose="error", ) epochs_with_metadata = Epochs( raw=raw, @@ -914,6 +915,7 @@ def test_manual_report_2d(tmp_path, invisible_fig): baseline=None, metadata=metadata, decim=10, + verbose="error", ) evokeds = read_evokeds(evoked_fname) evoked = evokeds[0].pick("eeg").decimate(10, verbose="error") From fcf7241a397f5d4277b88cc02c14b5c9f757f09c Mon Sep 17 00:00:00 2001 From: Sophie Herbst Date: Tue, 20 Feb 2024 11:41:33 +0100 Subject: [PATCH 19/22] report image_kwargs per channel type --- mne/report/report.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mne/report/report.py b/mne/report/report.py index 4f7cbed04eb..47caa8d5b9b 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -1124,6 +1124,10 @@ def add_epochs( image_kwargs : dict | None Keyword arguments to pass to the "epochs image"-generating function (:meth:`mne.Epochs.plot_image`). + Needs to be one dict per channel type, for example you could want to use the + rejection limits per channel type: + image_kwargs=dict(grad = dict(vmin=-reject['grad'], vmax=-reject['grad']), + mag = dict(vmin=reject['mag'], vmax=reject['mag']))) .. versionadded:: 1.7 %(topomap_kwargs)s @@ -3943,14 +3947,14 @@ def _add_epochs( epochs.load_data() if image_kwargs is None: - image_kwargs = dict() + image_kwargs = dict(zip(ch_types, [None]*len(ch_types))) for ch_type in ch_types: with use_log_level(_verbose_safe_false(level="error")): figs = ( epochs.copy() .pick(ch_type, verbose=False) - .plot_image(show=False, **image_kwargs) + .plot_image(show=False, **image_kwargs[ch_type]) # SH: not sure if this works ) assert len(figs) == 1 From ec4ab70e9cf25cda3de634cefaf6e0cfaf51baae Mon Sep 17 00:00:00 2001 From: Sophie Herbst Date: Tue, 20 Feb 2024 11:47:13 +0100 Subject: [PATCH 20/22] changelog --- doc/changes/devel/12454.newfeature.rst | 1 + 1 file changed, 1 insertion(+) create mode 100644 doc/changes/devel/12454.newfeature.rst diff --git a/doc/changes/devel/12454.newfeature.rst b/doc/changes/devel/12454.newfeature.rst new file mode 100644 index 00000000000..5a4a9cc9cdb --- /dev/null +++ b/doc/changes/devel/12454.newfeature.rst @@ -0,0 +1 @@ +Completing PR 12453. Add option to pass ``image_kwargs`` per channel type to :class:`mne.Report.add_epochs`. \ No newline at end of file From ca39f5dd45aeb529382ec2b15fe0222f704fcf56 Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Tue, 20 Feb 2024 15:46:52 -0500 Subject: [PATCH 21/22] Apply suggestions from code review --- mne/report/report.py | 15 ++++++++++----- mne/report/tests/test_report.py | 2 +- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/mne/report/report.py b/mne/report/report.py index 47caa8d5b9b..df21ec0c882 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -1125,9 +1125,12 @@ def add_epochs( Keyword arguments to pass to the "epochs image"-generating function (:meth:`mne.Epochs.plot_image`). Needs to be one dict per channel type, for example you could want to use the - rejection limits per channel type: - image_kwargs=dict(grad = dict(vmin=-reject['grad'], vmax=-reject['grad']), - mag = dict(vmin=reject['mag'], vmax=reject['mag']))) + rejection limits per channel type:: + + image_kwargs=dict( + grad=dict(vmin=-reject['grad'], vmax=-reject['grad']), + mag=dict(vmin=-reject['mag'], vmax=reject['mag']), + ) .. versionadded:: 1.7 %(topomap_kwargs)s @@ -3946,15 +3949,17 @@ def _add_epochs( ch_types = _get_data_ch_types(epochs) epochs.load_data() + _validate_type(image_kwargs, (dict, None), 'image_kwargs') if image_kwargs is None: - image_kwargs = dict(zip(ch_types, [None]*len(ch_types))) + image_kwargs = dict() + image_kwargs = image_kwargs.copy() for ch_type in ch_types: with use_log_level(_verbose_safe_false(level="error")): figs = ( epochs.copy() .pick(ch_type, verbose=False) - .plot_image(show=False, **image_kwargs[ch_type]) # SH: not sure if this works + .plot_image(show=False, **image_kwargs.pop(ch_type, dict())) ) assert len(figs) == 1 diff --git a/mne/report/tests/test_report.py b/mne/report/tests/test_report.py index 65d3ceb697a..030cf51ffbb 100644 --- a/mne/report/tests/test_report.py +++ b/mne/report/tests/test_report.py @@ -936,7 +936,7 @@ def test_manual_report_2d(tmp_path, invisible_fig): tags=("epochs",), psd=False, projs=False, - image_kwargs=dict(colorbar=False), + image_kwargs=dict(mag=dict(colorbar=False)), ) r.add_epochs( epochs=epochs_without_metadata, title="my epochs 2", psd=1, projs=False From 2ebe57a21783403b66d4ea984d9d7bd7bf482e51 Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Tue, 20 Feb 2024 15:55:06 -0500 Subject: [PATCH 22/22] FIX: Check --- mne/report/report.py | 15 ++++++++++----- mne/report/tests/test_report.py | 2 ++ 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/mne/report/report.py b/mne/report/report.py index 1cd5a959dc0..43c3d7c7ac4 100644 --- a/mne/report/report.py +++ b/mne/report/report.py @@ -1124,8 +1124,8 @@ def add_epochs( image_kwargs : dict | None Keyword arguments to pass to the "epochs image"-generating function (:meth:`mne.Epochs.plot_image`). - Needs to be one dict per channel type, for example you could want to use the - rejection limits per channel type:: + Keys are channel types, values are dicts containing kwargs to pass. + For example, to use the rejection limits per channel type you could pass:: image_kwargs=dict( grad=dict(vmin=-reject['grad'], vmax=-reject['grad']), @@ -3896,9 +3896,8 @@ def _add_epochs( epochs.load_data() _validate_type(image_kwargs, (dict, None), "image_kwargs") - if image_kwargs is None: - image_kwargs = dict() - image_kwargs = image_kwargs.copy() + # ensure dict with shallow copy because we will modify it + image_kwargs = dict() if image_kwargs is None else image_kwargs.copy() for ch_type in ch_types: with use_log_level(_verbose_safe_false(level="error")): @@ -3929,6 +3928,12 @@ def _add_epochs( replace=replace, own_figure=True, ) + if image_kwargs: + raise ValueError( + f"Ensure the keys in image_kwargs map onto channel types plotted in " + f"epochs.plot_image() of {ch_types}, could not use: " + f"{list(image_kwargs)}" + ) # Drop log if epochs._bad_dropped: diff --git a/mne/report/tests/test_report.py b/mne/report/tests/test_report.py index 030cf51ffbb..7374868c559 100644 --- a/mne/report/tests/test_report.py +++ b/mne/report/tests/test_report.py @@ -938,6 +938,8 @@ def test_manual_report_2d(tmp_path, invisible_fig): projs=False, image_kwargs=dict(mag=dict(colorbar=False)), ) + with pytest.raises(ValueError, match="map onto channel types"): + r.add_epochs(epochs=epochs_without_metadata, image_kwargs=dict(a=1), title="a") r.add_epochs( epochs=epochs_without_metadata, title="my epochs 2", psd=1, projs=False )