Open JoseBlanca opened 2 years ago
I've found a workaround.
I think that the problem was caused by a new version of vispy. Vispy released v0.11.0 on 2022-07-04. I guess I might have regenerated my virtual environment and I've got this newer vispy. I've uninstalled vispy and reinstalled pinning my requirements to vispy==0.10.0 and the 3D scatter is back!
Thanks for the detailed bug report and backtrace! I could isolate the error
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/gloo/glir.py", line 931, in set_data raise RuntimeError("Shader compilation error in %s:\n%s" % RuntimeError: Shader compilation error in GL_FRAGMENT_SHADER: on line 3: warning: extension
GL_OES_element_index_uint' unsupported in fragment shader #extension GL_OES_element_index_uint : enable on line 4: warning: extension
GL_OES_standard_derivatives' unsupported in fragment shaderextension GL_OES_standard_derivatives : enable
on line 1482: error: no function with name 'CatRom' rgb = CatRom(u_font_atlas, u_font_atlas_shape, uv);
to the changes from vispy/vispy#2322.
@astrofrog it appears that this removed CatRom
from the available shaders resp. has renamed all the "plain" shaders to *2D
ones, looking at the declaration in build_spatial_filters.py
and the output in spatial-filters.frag
. I could only find one remaining instance of CatRom
in vispy/glsl/markers/marker-sdf.frag
.
So changing the shader in glue_vispy_viewers/compat/text.py
to call CatRom2D
as well duly restores the 3D Scatter viewer for the current vispy, but I am not sure how to elegantly do this conditionally for vispy.__version__ >= 0.11
.
Perhaps run some f-string or .format()
tricks on self.FRAGMENT_SHADER
; or maybe it's better to bump the minimum version to 0.11 right away?
Maybe just bumping the min version is fine if everything else seems to work
Will see if I can test this properly, but a large fraction of the tests have already been failing before, e.g. in glue-viz/glue-vispy-viewers#371.
It does not trigger any of the existing add_viewer
tests afaics, might be a widget_cls
not covered by the tests?
[EDIT: was breaking app.new_data_viewer(VispyScatterViewer)
in the toolbar tests]
Describe the bug The 3d viewer does not plot any markers
To Reproduce Steps to reproduce the behavior such as:
Expected behavior The dots should be plotted as before
Details:
Versions: Glue: 1.5.0 Python: 3.10.5 PyQt5: PyQt: 5.15.7 - Qt: 5.15.2 PySide2: Not installed qtpy: 2.1.0 setuptools: 58.1.0 echo: 0.6 numpy: 1.23.1 matplotlib: 3.5.2 pandas: 1.4.3 astropy: 5.1 dill: 0.3.5.1 h5py: 3.7.0 xlrd: 2.0.1 openpyxl: 3.0.10 mpl-scatter-density: 0.7 glue-core: 1.5.0 glue-vispy-viewers: 1.0.5 IPython: 8.4.0 qtconsole: 5.3.1 ipykernel: 6.15.1 traitlets: 5.3.0 pygments: 2.12.0 pyzmq: 23.2.0 scipy: 1.8.1 scikit-image: Not installed PyAVM: Not installed spectral-cube: 0.6.0 astrodendro: Not installed mock: Not installed pytest: Not installed plotly: Not installed
Additional context Add any other context about the problem here.
I've run glue. A warning has appeared. $ glue QSocketNotifier: Can only be used with threads started with QThread
I've loaded a csv and and I've created a 3D Scatter viewer. The viewer appears, but there's no markers plotted.
Up until yesterday it worked, no problem. I don't know if it's related but yesterday I installed mesa:
$ sudo apt install libgl1-mesa-dev libglu1-mesa-dev
I also don't know if it its related to https://github.com/glue-viz/glue/issues/2291
There's a stack:
WARNING:vispy:Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7f9aa77b8a00> WARNING:vispy:Traceback (most recent call last): File "/home/jose/analyses/g2psol/pyenv/bin/glue", line 8, in
sys.exit(main())
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue/main.py", line 259, in main
start_glue(kwargs)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue/main.py", line 197, in startglue
return ga.start(maximized=maximized)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue/app/qt/application.py", line 1225, in start
return self.app.exec()
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue/utils/misc.py", line 55, in result
return func(*args, *kwargs)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue/app/qt/layer_tree_widget.py", line 125, in _do_action
app.choose_new_data_viewer(data)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue/app/qt/application.py", line 1009, in choose_new_data_viewer
return self.do(cmd)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue/core/application_base.py", line 261, in do
return self._cmds.do(command)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue/core/command.py", line 134, in do
result = cmd.do(self._session)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue/core/command.py", line 235, in do
viewer = session.application.new_data_viewer(self.viewer, self.data)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue/utils/matplotlib.py", line 186, in wrapper
result = func(args, kwargs)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue/app/qt/application.py", line 1015, in new_data_viewer
viewer.show()
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/glue_vispy_viewers/common/vispy_data_viewer.py", line 188, in show
super(BaseVispyViewer, self).show()
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/app/backends/_qt.py", line 567, in event
out = super(QtBaseCanvasBackend, self).event(ev)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/app/backends/_qt.py", line 567, in event
out = super(QtBaseCanvasBackend, self).event(ev)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/app/backends/_qt.py", line 903, in paintGL
self._vispy_canvas.events.draw(region=None)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/util/event.py", line 453, in call
self._invoke_callback(cb, event)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/util/event.py", line 471, in _invoke_callback
_handle_exception(self.ignore_callback_errors,
<< caught exception here: >>
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/util/event.py", line 469, in _invoke_callback
cb(event)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/scene/canvas.py", line 218, in on_draw
self._draw_scene()
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/scene/canvas.py", line 277, in _draw_scene
self.draw_visual(self.scene)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/scene/canvas.py", line 315, in draw_visual
node.draw()
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/scene/visuals.py", line 103, in draw
self._visual_superclass.draw(self)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/visuals/visual.py", line 605, in draw
v.draw()
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/visuals/visual.py", line 451, in draw
self._program.draw(self._vshare.draw_mode,
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/visuals/shaders/program.py", line 102, in draw
Program.draw(self, *args, *kwargs)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/gloo/program.py", line 526, in draw
canvas.context.flush_commands()
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/gloo/context.py", line 172, in flush_commands
self.glir.flush(self.shared.parser)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/gloo/glir.py", line 582, in flush
self._shared.flush(parser)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/gloo/glir.py", line 504, in flush
parser.parse(self._filter(self.clear(), parser))
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/gloo/glir.py", line 822, in parse
self._parse(command)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/gloo/glir.py", line 792, in _parse
ob.set_data(args)
File "/home/jose/analyses/g2psol/pyenv/lib/python3.10/site-packages/vispy/gloo/glir.py", line 931, in set_data
raise RuntimeError("Shader compilation error in %s:\n%s" %
RuntimeError: Shader compilation error in GL_FRAGMENT_SHADER:
on line 3: warning: extension `GL_OES_element_index_uint' unsupported in fragment shader
extension GL_OES_element_index_uint : enable
ERROR:vispy:Invoking <bound method SceneCanvas.on_draw of <SceneCanvas (PyQt5) at 0x7f9aa50a5db0>> for DrawEvent WARNING:vispy:Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7f9aa77b8a00> ERROR:vispy:Invoking <bound method SceneCanvas.on_draw of <SceneCanvas (PyQt5) at 0x7f9aa50a5db0>> repeat 2 WARNING:vispy:Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7f9aa77b8a00> WARNING:vispy:Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7f9aa77b8a00> ERROR:vispy:Invoking <bound method SceneCanvas.on_draw of <SceneCanvas (PyQt5) at 0x7f9aa50a5db0>> repeat 4 WARNING:vispy:Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7f9aa77b8a00> WARNING:vispy:Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7f9aa77b8a00> WARNING:vispy:Error drawing visual <glue_vispy_viewers.compat.text.TextVisual object at 0x7f9aa77b8a00