itkwidgets error in Jupyter Notebook
- Dominant language
- Python
- Stars
- 1.4k
- Forks
- 316
- Avg merge
- 7h 44m
- Merged PRs (30d)
- 5
Description
I'm trying to set up Jupyter Lab (4.0.11) environment for mayavi 4.8.1 on a remote server.
First of all, I note that
```python
%env QT_QPA_PLATFORM=offscreen
```
should be set before importing `mlab`. Otherwise importing `mlab` crashes. Then
```python
from mayavi import mlab
mlab.init_notebook('itk')
```
runs fine. However
```python
s = mlab.test_plot3d()
s
```
gives the following error messages depending on the installation method:
1. `conda install -c conda-forge itkwidgets` which installs `itkwidgets=0.32.6`
```
[Open Browser Console for more detailed log - Double click to close this message]
Failed to load model class 'ViewerModel' from module 'itkwidgets'
@http://127.0.0.1:9001/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/134.a63a8d293fb35a52dc25.js:1:74945
loadClass@http://127.0.0.1:9001/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/134.a63a8d293fb35a52dc25.js:1:75302
@http://127.0.0.1:9001/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/336.ebc7a55ea1768712771f.js:1:10738
loadModelClass@http://127.0.0.1:9001/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/336.ebc7a55ea1768712771f.js:1:10890
@http://127.0.0.1:9001/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/336.ebc7a55ea1768712771f.js:1:7531
_make_model@http://127.0.0.1:9001/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/336.ebc7a55ea1768712771f.js:1:8204
@http://127.0.0.1:9001/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/336.ebc7a55ea1768712771f.js:1:5148
new_model@http://127.0.0.1:9001/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/336.ebc7a55ea1768712771f.js:1:5194
handle_comm_open@http://127.0.0.1:9001/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/336.ebc7a55ea1768712771f.js:1:3903
@http://127.0.0.1:9001/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/134.a63a8d293fb35a52dc25.js:1:73489
@http://127.0.0.1:9001/lab/extensions/@jupyter-widgets/jupyterlab-manager/static/134.a63a8d293fb35a52dc25.js:1:73495
@http://127.0.0.1:9001/static/lab/jlab_core.33f047ff2ca794a7104f.js:1:1242535
```
2. `pip install 'itkwidgets[all]>=1.0a23'` which installs `itkwidgets=1.0a48`
```
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
File ~/anaconda3/envs/mayavi/lib/python3.11/site-packages/IPython/core/formatters.py:922, in IPythonDisplayFormatter.__call__(self, obj)
920 method = get_real_method(obj, self.print_method)
921 if method is not None:
--> 922 method()
923 return True
File ~/anaconda3/envs/mayavi/lib/python3.11/site-packages/mayavi/tools/notebook.py:31, in _ipython_display_(self)
22 def _ipython_display_(self):
23 '''Method attached to Mayavi objects.
24
25 Note that here `self` is the Mayavi object that is going to be
(...)
29
30 '''
---> 31 return _backend.display(self)
File ~/anaconda3/envs/mayavi/lib/python3.11/site-packages/mayavi/tools/notebook.py:145, in ITKBackend.display(self, obj)
137 # Works around bug in released itkwidgets-0.32.1.
138 # Can remove when this PR is merged and in a release:
139 # https://github.com/InsightSoftwareConsortium/itkwidgets/pull/438
140 kw = dict(
141 actors=actors, geometries=[], geometry_colors=[],
142 geometry_opacities=[], point_sets=[], point_set_colors=[],
143 point_set_opacities=[]
144 )
--> 145 return idisplay(self._view(**kw))
146 else:
147 return obj
File ~/anaconda3/envs/mayavi/lib/python3.11/site-packages/itkwidgets/viewer.py:1544, in view(data, **kwargs)
1414 def view(data=None, **kwargs):
1415 """View the image and/or point set.
1416
1417 Creates and returns an ImJoy plugin ipywidget to visualize an image, and/or
(...)
1542 :rtype: Viewer
1543 """
-> 1544 viewer = Viewer(data=data, **kwargs)
1546 return viewer
File ~/anaconda3/envs/mayavi/lib/python3.11/site-packages/itkwidgets/viewer.py:191, in Viewer.__init__(self, ui_collapsed, rotate, ui, **add_data_kwargs)
189 self.name = self.__str__()
190 input_data = parse_input_data(add_data_kwargs)
--> 191 data = build_init_data(input_data, self.stores)
192 if compare := input_data.get('compare'):
193 data['compare'] = compare
File ~/anaconda3/envs/mayavi/lib/python3.11/site-packages/itkwidgets/_initialization_params.py:100, in build_init_data(input_data, stores)
98 result = _get_viewer_point_set(data)
99 if result is None:
--> 100 raise RuntimeError(f"Could not process the viewer {input_type}")
101 input_data[render_type.value] = result
102 return input_data
RuntimeError: Could not process the viewer data
```
There is already report on the same problem https://github.com/enthought/mayavi/issues/1202#issue-1531272998 without any solution.
And I encountered the same error even in my laptop (MacBook Pro).
How do I obtain desired behavior of mayavi with itkwidgets?
Thanks in advance.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by reproducing the reported Jupyter Lab 4.0.11 setup with Mayavi 4.8.1 and the two itkwidgets installation methods. Read mayavi/tools/notebook.py, especially ITKBackend.display, alongside the shown itkwidgets viewer traceback. Done means mlab.test_plot3d() displays successfully through mlab.init_notebook('itk') without the reported widget or viewer errors.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- jupyter-notebook, python
- Domain
- backend, data-visualization
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100