Skip to content

Commit aa86ecb

Browse files
duytnguyendtnkecnrypllim
authored
Cubeviz slider performance improvements (#1550)
* Set wavelength directly rather than msg * Remove unneeded message * Retrieve x slices from viewer marks rather than data Co-authored-by: Kyle Conroy <[email protected]> * Codestyle * Add Changelog * Strip metric from changelog Co-authored-by: P. L. Lim <[email protected]> * Remove SlideSelectWavelengthMessage * Remove straggler property Co-authored-by: Kyle Conroy <[email protected]> Co-authored-by: P. L. Lim <[email protected]>
1 parent f7ee912 commit aa86ecb

File tree

4 files changed

+9
-22
lines changed

4 files changed

+9
-22
lines changed

CHANGES.rst

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ Cubeviz
6060
- Fixed ``viewer.jdaviz_helper`` returning Specviz helper instead of Cubeviz helper after Specviz
6161
helper is called via ``Cubeviz.specviz``. Now ``viewer.jdaviz_helper`` always returns the Cubeviz helper. [#1546]
6262

63+
- Increased spectral slider performance considerably. [#1550]
64+
6365
Imviz
6466
^^^^^
6567

jdaviz/configs/cubeviz/helper.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
from jdaviz.configs.default.plugins.line_lists.line_list_mixin import LineListMixin
66
from jdaviz.configs.specviz import Specviz
77
from jdaviz.core.events import (AddDataMessage,
8-
SliceSelectWavelengthMessage,
98
SliceSelectSliceMessage)
109

1110
__all__ = ['Cubeviz', 'CubeViz']
@@ -17,8 +16,6 @@ class Cubeviz(ConfigHelper, LineListMixin):
1716

1817
def __init__(self, *args, **kwargs):
1918
super().__init__(*args, **kwargs)
20-
self.app.hub.subscribe(self, SliceSelectWavelengthMessage,
21-
handler=self.select_wavelength)
2219
self.app.hub.subscribe(self, AddDataMessage,
2320
handler=self._set_spectrum_x_axis)
2421

@@ -80,12 +77,12 @@ def select_wavelength(self, wavelength):
8077
Wavelength to select in units of the x-axis of the spectrum. The nearest slice will
8178
be selected.
8279
"""
83-
if isinstance(wavelength, SliceSelectWavelengthMessage):
84-
# SliceSelectWavelengthMessage is broadcasted by the spectrum-viewer slice tool
85-
wavelength = float(wavelength.wavelength)
8680
if not isinstance(wavelength, (int, float)):
8781
raise TypeError("wavelength must be a float or int")
88-
x_all = self.app.get_viewer('spectrum-viewer').data()[0].spectral_axis.value
82+
# Retrieve the x slices from the spectrum viewer's marks
83+
x_all = [m for m in self.app.get_viewer('spectrum-viewer').figure.marks
84+
if m.__class__.__name__ in ['Lines', 'LinesGL']
85+
][0].x
8986
index = np.argmin(abs(x_all - wavelength))
9087
return self.select_slice(int(index))
9188

jdaviz/configs/cubeviz/plugins/tools.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from glue.core.roi import RectangularROI
77
from glue.core.edit_subset_mode import NewMode
88

9-
from jdaviz.core.events import SliceSelectWavelengthMessage, SliceToolStateMessage
9+
from jdaviz.core.events import SliceToolStateMessage
1010

1111
__all__ = []
1212

@@ -41,8 +41,7 @@ def on_mouse_event(self, data):
4141
# throttle to 200ms
4242
return
4343

44-
msg = SliceSelectWavelengthMessage(wavelength=data['domain']['x'], sender=self)
45-
self.viewer.session.hub.broadcast(msg)
44+
self.viewer.jdaviz_helper.select_wavelength(data['domain']['x'])
4645

4746
self._time_last = time.time()
4847

jdaviz/core/events.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
__all__ = ['NewViewerMessage', 'ViewerAddedMessage', 'ViewerRemovedMessage', 'LoadDataMessage',
44
'AddDataMessage', 'SnackbarMessage', 'RemoveDataMessage',
55
'AddLineListMessage', 'RowLockMessage',
6-
'SliceSelectWavelengthMessage', 'SliceSelectSliceMessage',
6+
'SliceSelectSliceMessage',
77
'SliceToolStateMessage',
88
'TableClickMessage']
99

@@ -256,17 +256,6 @@ def shared_image(self):
256256
return self._shared_image
257257

258258

259-
class SliceSelectWavelengthMessage(Message):
260-
'''Message generated by the select slice plot plugin which is processed by the cubeviz helper'''
261-
def __init__(self, wavelength=None, *args, **kwargs):
262-
super().__init__(*args, **kwargs)
263-
self._wavelength = wavelength
264-
265-
@property
266-
def wavelength(self):
267-
return self._wavelength
268-
269-
270259
class SliceSelectSliceMessage(Message):
271260
'''Message generated by the cubeviz helper and processed by the slice plugin to sync
272261
slice selection across all viewers'''

0 commit comments

Comments
 (0)