diff --git a/CHANGES.rst b/CHANGES.rst index 732515e20b..5d4b63d75d 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -66,6 +66,8 @@ Bug Fixes - Improved performance and removed jittering for the matched box zoom tool. [#3215] +- Fix Slice plugin for indexing through temporal slices. [#3235] + Cubeviz ^^^^^^^ diff --git a/jdaviz/configs/cubeviz/plugins/mixins.py b/jdaviz/configs/cubeviz/plugins/mixins.py index 41ec392cf7..87e53e724d 100644 --- a/jdaviz/configs/cubeviz/plugins/mixins.py +++ b/jdaviz/configs/cubeviz/plugins/mixins.py @@ -96,27 +96,39 @@ def slice_values(self): ) for layer in self.layers: - world_comp_ids = layer.layer.data.world_component_ids - - if not len(world_comp_ids): - # rampviz uses coordinate components: - world_comp_ids = layer.layer.data.coordinate_components - - if self.slice_index >= len(world_comp_ids): - # Case where 2D image is loaded in image viewer - continue - - try: - # Retrieve layer data and units using the slice index of the world components ids - data_comp = layer.layer.data.get_component(world_comp_ids[self.slice_index]) - except (AttributeError, KeyError): - continue + coords = layer.layer.data.coords + if hasattr(coords, 'temporal_wcs'): + data_units = coords.temporal_wcs.unit + data = coords.temporal_wcs.pixel_to_world_values( + np.arange(layer.layer.data.shape[0]) + ) - data = np.asarray(data_comp.data.take(0, take_inds[0]).take(0, take_inds[1]), # noqa - dtype=float) + else: + world_comp_ids = layer.layer.data.world_component_ids + + if not len(world_comp_ids): + # rampviz uses coordinate components: + world_comp_ids = layer.layer.data.coordinate_components + + if self.slice_index >= len(world_comp_ids): + # Case where 2D image is loaded in image viewer + continue + + try: + # Retrieve layer data and units using the slice index + # of the world components ids + data_comp = layer.layer.data.get_component( + world_comp_ids[self.slice_index] + ) + except (AttributeError, KeyError): + continue + + data = np.asarray( + data_comp.data.take(0, take_inds[0]).take(0, take_inds[1]), + dtype=float) + data_units = getattr(data_comp, 'units', None) # Convert to display units if applicable - data_units = getattr(data_comp, 'units', None) if slice_display_units and data_units and slice_display_units != data_units: converted_axis = (data * u.Unit(data_units)).to_value( slice_display_units,