From 00700e17785970f4e10d1441364bb74bd97a367a Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Tue, 13 Apr 2021 13:51:26 +0200 Subject: [PATCH 01/10] Handle add_observer --- mne/viz/backends/_pyvista.py | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/mne/viz/backends/_pyvista.py b/mne/viz/backends/_pyvista.py index 8e7cfac9be2..938cc736e9b 100644 --- a/mne/viz/backends/_pyvista.py +++ b/mne/viz/backends/_pyvista.py @@ -668,18 +668,13 @@ def _update_picking_callback(self, on_button_press, on_button_release, on_pick): - self.plotter.iren.AddObserver( - vtk.vtkCommand.RenderEvent, - on_mouse_move - ) - self.plotter.iren.AddObserver( - vtk.vtkCommand.LeftButtonPressEvent, - on_button_press - ) - self.plotter.iren.AddObserver( - vtk.vtkCommand.EndInteractionEvent, - on_button_release - ) + try: + add_obs = self.plotter.iren.AddObserver + except AttributeError: + add_obs = self.plotter.iren.add_observer + add_obs(vtk.vtkCommand.RenderEvent, on_mouse_move) + add_obs(vtk.vtkCommand.LeftButtonPressEvent, on_button_press) + add_obs(vtk.vtkCommand.EndInteractionEvent, on_button_release) self.plotter.picker = vtk.vtkCellPicker() self.plotter.picker.AddObserver( vtk.vtkCommand.EndPickEvent, From 78269ec72f98dd03915cc712a2fe9ace2e6af2b5 Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Tue, 13 Apr 2021 14:39:07 +0200 Subject: [PATCH 02/10] Fix --- mne/viz/backends/_notebook.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mne/viz/backends/_notebook.py b/mne/viz/backends/_notebook.py index 08cc8ab2cb2..8bf9a5fbf23 100644 --- a/mne/viz/backends/_notebook.py +++ b/mne/viz/backends/_notebook.py @@ -346,7 +346,7 @@ def show(self): use_ipyvtk=True, return_viewer=True) except RuntimeError: viewer = self.plotter.show( - backend="ipyvtk_simple", return_viewer=True) + jupyter_backend="ipyvtk_simple", return_viewer=True) viewer.layout.width = None # unlock the fixed layout # main widget if self._dock is None: From 86cfa3a592ca64b9278fca4ef3c23e2a96fbd838 Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Tue, 13 Apr 2021 15:12:34 +0200 Subject: [PATCH 03/10] Fix --- mne/viz/tests/test_3d.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mne/viz/tests/test_3d.py b/mne/viz/tests/test_3d.py index aba0903a32c..83b973bf869 100644 --- a/mne/viz/tests/test_3d.py +++ b/mne/viz/tests/test_3d.py @@ -724,7 +724,10 @@ def test_plot_sensors_connectivity(renderer): fig = plot_sensors_connectivity(info=info, con=con, picks=picks) if renderer._get_3d_backend() == 'pyvista': - title = fig.plotter.scalar_bar.GetTitle() + try: + title = fig.plotter.scalar_bar.GetTitle() + except AttributeError: + title = list(fig.plotter.scalar_bars.values())[0].GetTitle() else: assert renderer._get_3d_backend() == 'mayavi' # the last thing we add is the Tube, so we need to go From 5ad66fb1665b203b2994df52294a285b011fd15f Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Fri, 16 Apr 2021 10:53:26 +0200 Subject: [PATCH 04/10] Add comment hints --- mne/viz/_brain/_brain.py | 2 ++ mne/viz/backends/_notebook.py | 2 ++ mne/viz/backends/_pyvista.py | 2 ++ 3 files changed, 6 insertions(+) diff --git a/mne/viz/_brain/_brain.py b/mne/viz/_brain/_brain.py index e1f86f9b390..4f2ea1fdb39 100644 --- a/mne/viz/_brain/_brain.py +++ b/mne/viz/_brain/_brain.py @@ -1692,8 +1692,10 @@ def _clear_callbacks(self): # Remove the default key binding if getattr(self, "iren", None) is not None: try: + # pyvista<=0.30.0 self.plotter._key_press_event_callbacks.clear() except AttributeError: + # pyvista>=0.30.0 self.plotter.iren.clear_key_event_callbacks() def _clear_widgets(self): diff --git a/mne/viz/backends/_notebook.py b/mne/viz/backends/_notebook.py index 8bf9a5fbf23..89f68148d43 100644 --- a/mne/viz/backends/_notebook.py +++ b/mne/viz/backends/_notebook.py @@ -342,9 +342,11 @@ def show(self): display(self._tool_bar) # viewer try: + # pyvista<=0.30.0 viewer = self.plotter.show( use_ipyvtk=True, return_viewer=True) except RuntimeError: + # pyvista>=0.30.0 viewer = self.plotter.show( jupyter_backend="ipyvtk_simple", return_viewer=True) viewer.layout.width = None # unlock the fixed layout diff --git a/mne/viz/backends/_pyvista.py b/mne/viz/backends/_pyvista.py index 938cc736e9b..5f6f6efc943 100644 --- a/mne/viz/backends/_pyvista.py +++ b/mne/viz/backends/_pyvista.py @@ -669,8 +669,10 @@ def _update_picking_callback(self, on_button_release, on_pick): try: + # pyvista<=0.30.0 add_obs = self.plotter.iren.AddObserver except AttributeError: + # pyvista>=0.30.0 add_obs = self.plotter.iren.add_observer add_obs(vtk.vtkCommand.RenderEvent, on_mouse_move) add_obs(vtk.vtkCommand.LeftButtonPressEvent, on_button_press) From 6f98ca81ce618495e6bf1a3673cf637f64d0d45b Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Fri, 16 Apr 2021 11:19:04 +0200 Subject: [PATCH 05/10] Fix comments --- mne/viz/_brain/_brain.py | 2 +- mne/viz/backends/_notebook.py | 2 +- mne/viz/backends/_pyvista.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/mne/viz/_brain/_brain.py b/mne/viz/_brain/_brain.py index 4f2ea1fdb39..93ffe16c515 100644 --- a/mne/viz/_brain/_brain.py +++ b/mne/viz/_brain/_brain.py @@ -1692,7 +1692,7 @@ def _clear_callbacks(self): # Remove the default key binding if getattr(self, "iren", None) is not None: try: - # pyvista<=0.30.0 + # pyvista<0.30.0 self.plotter._key_press_event_callbacks.clear() except AttributeError: # pyvista>=0.30.0 diff --git a/mne/viz/backends/_notebook.py b/mne/viz/backends/_notebook.py index 89f68148d43..af1aea447eb 100644 --- a/mne/viz/backends/_notebook.py +++ b/mne/viz/backends/_notebook.py @@ -342,7 +342,7 @@ def show(self): display(self._tool_bar) # viewer try: - # pyvista<=0.30.0 + # pyvista<0.30.0 viewer = self.plotter.show( use_ipyvtk=True, return_viewer=True) except RuntimeError: diff --git a/mne/viz/backends/_pyvista.py b/mne/viz/backends/_pyvista.py index 5f6f6efc943..a0016d7da4d 100644 --- a/mne/viz/backends/_pyvista.py +++ b/mne/viz/backends/_pyvista.py @@ -669,7 +669,7 @@ def _update_picking_callback(self, on_button_release, on_pick): try: - # pyvista<=0.30.0 + # pyvista<0.30.0 add_obs = self.plotter.iren.AddObserver except AttributeError: # pyvista>=0.30.0 From 5f0f9906b9b25606124a135cfd08aec3545b589b Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Fri, 16 Apr 2021 11:24:13 +0200 Subject: [PATCH 06/10] More --- mne/viz/tests/test_3d.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/mne/viz/tests/test_3d.py b/mne/viz/tests/test_3d.py index 83b973bf869..2d59f8e62b2 100644 --- a/mne/viz/tests/test_3d.py +++ b/mne/viz/tests/test_3d.py @@ -725,8 +725,10 @@ def test_plot_sensors_connectivity(renderer): fig = plot_sensors_connectivity(info=info, con=con, picks=picks) if renderer._get_3d_backend() == 'pyvista': try: + # pyvista<0.30.0 title = fig.plotter.scalar_bar.GetTitle() except AttributeError: + # pyvista>=0.30.0 title = list(fig.plotter.scalar_bars.values())[0].GetTitle() else: assert renderer._get_3d_backend() == 'mayavi' From c26c3787e97117eedf98e2cfb1668b3759b9d3e3 Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Fri, 16 Apr 2021 14:53:44 +0200 Subject: [PATCH 07/10] Revert --- environment.yml | 2 +- requirements.txt | 2 +- tools/azure_dependencies.sh | 2 +- tools/circleci_dependencies.sh | 3 ++- tools/github_actions_dependencies.sh | 2 +- 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/environment.yml b/environment.yml index f8d589f32a4..a5cbdea0ed2 100644 --- a/environment.yml +++ b/environment.yml @@ -23,7 +23,7 @@ dependencies: - spyder-kernels>=1.10.0 - imageio-ffmpeg>=0.4.1 - vtk>=9.0.1 -- pyvista>=0.24,<=0.29 +- pyvista>=0.24 - pyvistaqt>=0.2.0 - mayavi - PySurfer diff --git a/requirements.txt b/requirements.txt index d5bb3c1620e..577ab76a427 100644 --- a/requirements.txt +++ b/requirements.txt @@ -26,7 +26,7 @@ nilearn xlrd imageio>=2.6.1 imageio-ffmpeg>=0.4.1 -pyvista>=0.24,<=0.29 +pyvista>=0.24 pyvistaqt>=0.2.0 tqdm mffpy>=0.5.7 diff --git a/tools/azure_dependencies.sh b/tools/azure_dependencies.sh index f0a6d837269..1b7f2dcc3f4 100755 --- a/tools/azure_dependencies.sh +++ b/tools/azure_dependencies.sh @@ -10,7 +10,7 @@ elif [ "${TEST_MODE}" == "pip-pre" ]; then python -m pip install --progress-bar off --upgrade --pre --only-binary ":all:" -f "https://7933911d6844c6c53a7d-47bd50c35cd79bd838daf386af554a83.ssl.cf2.rackcdn.com" h5py Pillow python -m pip install --progress-bar off --upgrade --pre --only-binary ":all" vtk python -m pip install --progress-bar off --upgrade --only-binary ":all" matplotlib - python -m pip install --progress-bar off https://github.com/pyvista/pyvista/zipball/cb59a9ddfd97f5724f733bc226b41fb9ad4c9c5f + python -m pip install --progress-bar off https://github.com/pyvista/pyvista/zipball/master python -m pip install --progress-bar off https://github.com/pyvista/pyvistaqt/zipball/master python -m pip install --progress-bar off --upgrade --only-binary="numba,llvmlite" -r requirements.txt else diff --git a/tools/circleci_dependencies.sh b/tools/circleci_dependencies.sh index 7c61486bd0c..b671fc5d161 100755 --- a/tools/circleci_dependencies.sh +++ b/tools/circleci_dependencies.sh @@ -20,6 +20,7 @@ if [[ "$CIRCLE_JOB" == "interactive_test" ]]; then python -m pip install --progress-bar off --upgrade --pre --only-binary ":all:" numba llvmlite wget -q https://osf.io/kej3v/download -O vtk-9.0.20201117-cp39-cp39-linux_x86_64.whl python -m pip install --progress-bar off vtk-9.0.20201117-cp39-cp39-linux_x86_64.whl + python -m pip install --progress-bar off https://github.com/pyvista/pyvista/zipball/master python -m pip install --progress-bar off https://github.com/pyvista/pyvistaqt/zipball/master python -m pip install --progress-bar off --upgrade -r requirements_testing.txt python -m pip install nitime @@ -33,7 +34,7 @@ else # standard doc build echo "Installing doc build dependencies" python -m pip uninstall -y pydata-sphinx-theme python -m pip install --upgrade --progress-bar off -r requirements.txt -r requirements_testing.txt -r requirements_doc.txt - python -m pip install --progress-bar off https://github.com/pyvista/pyvista/zipball/cb59a9ddfd97f5724f733bc226b41fb9ad4c9c5f + python -m pip install --progress-bar off https://github.com/pyvista/pyvista/zipball/master python -m pip install --progress-bar off https://github.com/pyvista/pyvistaqt/zipball/master python -m pip uninstall -yq pysurfer mayavi python -m pip install -e . diff --git a/tools/github_actions_dependencies.sh b/tools/github_actions_dependencies.sh index 5d1a492c506..455a7b70c90 100755 --- a/tools/github_actions_dependencies.sh +++ b/tools/github_actions_dependencies.sh @@ -15,7 +15,7 @@ else # pip --pre 3.9 (missing dipy in pre) # built using vtk master branch on an Ubuntu 18.04.5 VM and uploaded to OSF: wget -q https://osf.io/kej3v/download -O vtk-9.0.20201117-cp39-cp39-linux_x86_64.whl pip install --progress-bar off vtk-9.0.20201117-cp39-cp39-linux_x86_64.whl - pip install --progress-bar off https://github.com/pyvista/pyvista/zipball/cb59a9ddfd97f5724f733bc226b41fb9ad4c9c5f + pip install --progress-bar off https://github.com/pyvista/pyvista/zipball/master pip install --progress-bar off https://github.com/pyvista/pyvistaqt/zipball/master fi pip install --progress-bar off --upgrade -r requirements_testing.txt From c4eafabc9a118745a11a904ef8bc81336b4b3b92 Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Fri, 16 Apr 2021 15:28:20 +0200 Subject: [PATCH 08/10] Again From 8cc7ee3e029c77cca96bdfa60a12da15acd3e3ad Mon Sep 17 00:00:00 2001 From: Guillaume Favelier Date: Fri, 16 Apr 2021 16:37:04 +0200 Subject: [PATCH 09/10] Again From ec508552cc7bc02e03d8ef2a1950be9524e84a03 Mon Sep 17 00:00:00 2001 From: Eric Larson Date: Mon, 19 Apr 2021 08:35:08 -0400 Subject: [PATCH 10/10] FIX: Number [ci skip] --- mne/viz/_brain/_brain.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mne/viz/_brain/_brain.py b/mne/viz/_brain/_brain.py index 93ffe16c515..7fe5291c33b 100644 --- a/mne/viz/_brain/_brain.py +++ b/mne/viz/_brain/_brain.py @@ -1692,10 +1692,10 @@ def _clear_callbacks(self): # Remove the default key binding if getattr(self, "iren", None) is not None: try: - # pyvista<0.30.0 + # pyvista<0.3.0 self.plotter._key_press_event_callbacks.clear() except AttributeError: - # pyvista>=0.30.0 + # pyvista>=0.3.0 self.plotter.iren.clear_key_event_callbacks() def _clear_widgets(self):