From 6c49abbbd35c6885be36d311b8a9a7a150c2ec3b Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Mon, 16 Mar 2020 17:29:59 +0100 Subject: [PATCH 1/5] Prepare for next version of pyvista --- mne/viz/_brain/_timeviewer.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mne/viz/_brain/_timeviewer.py b/mne/viz/_brain/_timeviewer.py index 4bbf0702d05..8b42212bac6 100644 --- a/mne/viz/_brain/_timeviewer.py +++ b/mne/viz/_brain/_timeviewer.py @@ -20,10 +20,14 @@ class MplCanvas(object): """Ultimately, this is a QWidget (as well as a FigureCanvasAgg, etc.).""" - def __init__(self, timeviewer, parent, width, height, dpi): + def __init__(self, timeviewer, width, height, dpi): from PyQt5 import QtWidgets from matplotlib.figure import Figure from matplotlib.backends.backend_qt5agg import FigureCanvasQTAgg + if timeviewer.separate_canvas: + parent = None + else: + parent = timeviewer.window self.fig = Figure(figsize=(width, height), dpi=dpi) self.canvas = FigureCanvasQTAgg(self.fig) self.axes = self.fig.add_subplot(111) @@ -326,7 +330,7 @@ def __init__(self, brain, show_traces=False): self.main_menu = self.plotter.main_menu self.window = self.plotter.app_window self.status_bar = self.window.statusBar() - self.interactor = self.plotter + self.interactor = self.plotter.interactor self.interactor.keyPressEvent = self.keyPressEvent # Derived parameters: @@ -415,7 +419,7 @@ def play(self): self.time_call(idx, update_widget=True) if time_point == max_time: self.playback = False - self.plotter.update() # critical for smooth animation + self.plotter.update() # critical for smooth animation def _save_movie(self, filename, **kwargs): from PyQt5.QtCore import Qt @@ -704,11 +708,7 @@ def configure_point_picking(self): dpi = win.windowHandle().screen().logicalDotsPerInch() w, h = win.geometry().width() / dpi, win.geometry().height() / dpi h /= 3 # one third of the window - if self.separate_canvas: - parent = None - else: - parent = win - self.mpl_canvas = MplCanvas(self, parent, w, h, dpi) + self.mpl_canvas = MplCanvas(self, w, h, dpi) xlim = [np.min(self.brain._data['time']), np.max(self.brain._data['time'])] self.mpl_canvas.axes.set(xlim=xlim) From 9cc93af0bf2f480e57d8bd234c0d62ee4cb2cd5a Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Mon, 16 Mar 2020 22:44:08 +0100 Subject: [PATCH 2/5] Use latest version 0.24 of pyvista --- README.rst | 2 +- environment.yml | 2 +- requirements.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.rst b/README.rst index c9b15bd4187..6959b24527e 100644 --- a/README.rst +++ b/README.rst @@ -97,7 +97,7 @@ For full functionality, some functions require: - CuPy >= 4.0 (for NVIDIA CUDA acceleration) - DIPY >= 0.10.1 - Imageio >= 2.6.1 -- PyVista >= 0.23.1 +- PyVista >= 0.24 Contributing to MNE-Python ^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/environment.yml b/environment.yml index ba3530056a8..ff0a01fe91a 100644 --- a/environment.yml +++ b/environment.yml @@ -34,7 +34,7 @@ dependencies: - pip: - mne - https://api.github.com/repos/numpy/numpydoc/zipball/master - - pyvista>=0.23.1 + - pyvista>=0.24 - mayavi - PySurfer[save_movie] - dipy --only-binary dipy diff --git a/requirements.txt b/requirements.txt index 8b5a63d264f..67fff939183 100644 --- a/requirements.txt +++ b/requirements.txt @@ -31,4 +31,4 @@ pydocstyle flake8 https://api.github.com/repos/mcmtroffaes/sphinxcontrib-bibtex/zipball/29694f215b39d64a31b845aafd9ff2ae9329494f imageio>=2.6.1 -pyvista>=0.23.1 +pyvista>=0.24 From 504f1dea85939f8e87ad3a7ad4fe9eeb4ad9b83d Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Tue, 17 Mar 2020 09:30:10 +0100 Subject: [PATCH 3/5] Revert #7416 --- doc/conf.py | 34 ++-------------------------------- 1 file changed, 2 insertions(+), 32 deletions(-) diff --git a/doc/conf.py b/doc/conf.py index f93d836fc9b..797f1d74fc9 100644 --- a/doc/conf.py +++ b/doc/conf.py @@ -369,38 +369,8 @@ except Exception: pass else: - # XXX hack, adapted from PyVista to work around - # https://github.com/mne-tools/mne-python/issues/7228 - # https://github.com/pyvista/pyvista/pull/548 - import shutil - - class Scraper(object): # noqa:D101 - - def __repr__(self): # noqa:D101 - return 'PyVista Scraper' - - def __call__(self, block, block_vars, gallery_conf): # noqa:D101 - from sphinx_gallery.scrapers import figure_rst - image_names = list() - image_path_iterator = block_vars["image_path_iterator"] - figures = pyvista.plotting._ALL_PLOTTERS - seen_plotters = list() - for address, plotter in figures.items(): - if plotter in seen_plotters: - continue - seen_plotters += [plotter] - fname = next(image_path_iterator) - if hasattr(plotter, '_gif_filename'): - # move gif to fname - shutil.move(plotter._gif_filename, fname) - else: - plotter.screenshot(fname) - image_names.append(fname) - pyvista.close_all() # close and clear all plotters - return figure_rst(image_names, gallery_conf["src_dir"]) - scrapers += (Scraper(),) # eventually just ('pyvista',) -if any(x in scrapers for x in ('pyvista', 'mayavi')) or \ - any('PyVista' in repr(s) for s in scrapers): # just for our hack + scrapers += ('pyvista',) +if any(x in scrapers for x in ('pyvista', 'mayavi')): from traits.api import push_exception_handler push_exception_handler(reraise_exceptions=True) report_scraper = mne.report._ReportScraper() From facd33f38dcb3ee06d1f808665c87b38218e9e86 Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Tue, 17 Mar 2020 11:22:49 +0100 Subject: [PATCH 4/5] TST: Trigger CIs [circle full] From 22aac1b72fa129119ac28766666caa74a10449b1 Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Thu, 19 Mar 2020 11:01:41 -0400 Subject: [PATCH 5/5] TST: Circle [circle front] [skip travis]