Skip to content

Commit

Permalink
Backport PR #3235: Bugfix: lcviz TPFs are sliced by cube index rather…
Browse files Browse the repository at this point in the history
… than time slice (#3405)

Co-authored-by: Brett M. Morris <[email protected]>
  • Loading branch information
meeseeksmachine and bmorris3 authored Jan 22, 2025
1 parent ae3063a commit bae76e2
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 18 deletions.
2 changes: 2 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ Bug Fixes

- Fixes data-menu visibility when app is scrolled out of view. [#3391]

- Fix Slice plugin for indexing through temporal slices. [#3235]

Cubeviz
^^^^^^^

Expand Down
48 changes: 30 additions & 18 deletions jdaviz/configs/cubeviz/plugins/mixins.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down

0 comments on commit bae76e2

Please sign in to comment.