Skip to content

Commit

Permalink
Merge pull request #388 from Carifio24/jupyter-volume-layer-widget
Browse files Browse the repository at this point in the history
  • Loading branch information
astrofrog authored Aug 16, 2024
2 parents a177e17 + 4795d4f commit cdf1cd9
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 1 deletion.
22 changes: 22 additions & 0 deletions glue_vispy_viewers/volume/jupyter/tests/test_viewer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,32 @@
from glue.core import Data
from glue_jupyter import jglue
from ..volume_viewer import JupyterVispyVolumeViewer
from ....scatter.jupyter.layer_state_widget import Scatter3DLayerStateWidget
from ..layer_state_widget import Volume3DLayerStateWidget


def test_basic_jupyter_volume():
app = jglue()
data = Data(x=np.arange(24).reshape((2, 3, 4)), label="cube data")
app.add_data(data)
app.new_data_viewer(JupyterVispyVolumeViewer, data=data)


def test_jupyter_layer_widgets():
app = jglue()
volume_data = Data(x=np.arange(24).reshape((2, 3, 4)), label="cube data")
scatter_data = Data(x=np.arange(0, 5), y=np.arange(5, 10), z=np.arange(20, 25))
for index, component in enumerate(("x", "y", "z")):
app.add_link(volume_data, f"Pixel Axis {2-index} [{component}]", scatter_data, component)
app.add_data(volume_data)
app.add_data(scatter_data)
viewer = app.new_data_viewer(JupyterVispyVolumeViewer, data=volume_data)
viewer.add_data(scatter_data)

layer_options = viewer.layer_options
volume_layer = viewer.layers[0]
scatter_layer = viewer.layers[1]
volume_widget = layer_options.layer_to_dict(volume_layer, 0)["layer_panel"]
assert isinstance(volume_widget, Volume3DLayerStateWidget)
scatter_widget = layer_options.layer_to_dict(scatter_layer, 1)["layer_panel"]
assert isinstance(scatter_widget, Scatter3DLayerStateWidget)
7 changes: 6 additions & 1 deletion glue_vispy_viewers/volume/jupyter/volume_viewer.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
import os

from glue_jupyter.view import IPyWidgetView

from ...scatter.layer_artist import ScatterLayerArtist
from ..layer_artist import VolumeLayerArtist
from ..volume_viewer import VispyVolumeViewerMixin
from .viewer_state_widget import Volume3DViewerStateWidget
from ...scatter.jupyter.layer_state_widget import Scatter3DLayerStateWidget
from .layer_state_widget import Volume3DLayerStateWidget
from ...common.jupyter.toolbar import VispyJupyterToolbar

Expand All @@ -12,8 +16,9 @@
class JupyterVispyVolumeViewer(VispyVolumeViewerMixin, IPyWidgetView):

_options_cls = Volume3DViewerStateWidget
_layer_style_widget_cls = Volume3DLayerStateWidget
_toolbar_cls = VispyJupyterToolbar
_layer_style_widget_cls = {VolumeLayerArtist: Volume3DLayerStateWidget,
ScatterLayerArtist: Scatter3DLayerStateWidget}

def __init__(self, *args, **kwargs):
# Vispy and jupyter_rfb don't work correctly on Linux unless DISPLAY is set
Expand Down

0 comments on commit cdf1cd9

Please sign in to comment.