def update(self, view, transpose=False, aspect=None): self.clear() if aspect is not None: self.aspect = aspect subset = self.layer logging.debug("View into subset %s is %s", self.layer, view) try: mask = subset.to_mask(view[1:]) except IncompatibleAttribute as exc: self.disable_invalid_attributes(*exc.args) return False logging.debug("View mask has shape %s", mask.shape) # shortcut for empty subsets if not mask.any(): return if transpose: mask = mask.T extent = get_extent(view, transpose) r, g, b = color2rgb(self.layer.style.color) mask = np.dstack((r * mask, g * mask, b * mask, mask * .5)) mask = (255 * mask).astype(np.uint8) self.artists = [self._axes.imshow(mask, extent=extent, interpolation='nearest', origin='lower', zorder=5, visible=self.visible)] self._axes.set_aspect(self.aspect, adjustable='datalim')
def wrapper(bounds=None): # Get original array mask = array_maker(bounds=bounds) # Convert to RGBA array" r, g, b = color2rgb(color) mask = np.dstack((r * mask, g * mask, b * mask, mask * .5)) mask = (255 * mask).astype(np.uint8) return mask
def __getitem__(self, view=None): if not self.layer_artist._compatible_with_reference_data: return self.nan_array try: mask = self.layer_state.get_sliced_data(view=view) except IncompatibleAttribute: self.layer_artist.disable("Cannot compute mask for this layer") return self.nan_array else: self.layer_artist._enabled = True r, g, b = color2rgb(self.layer_state.color) mask = np.dstack((r * mask, g * mask, b * mask, mask * .5)) mask = (255 * mask).astype(np.uint8) return mask
def _update_ginga_models(self, view, transpose=False): subset = self.layer logging.getLogger(__name__).debug("View into subset %s is %s", self.layer, view) _, view = split_component_view(view) # discard ComponentID r, g, b = color2rgb(self.layer.style.color) if self._img is None: self._img = SubsetImage(subset, view) if self._cimg is None: # SubsetImages can't be added to canvases directly. Need # to wrap into a ginga canvas type. Image = self._canvas.getDrawClass('image') self._cimg = Image(0, 0, self._img, alpha=0.5, flipy=False) self._img.view = view self._img.color = (r, g, b) self._img.transpose = transpose
def __getitem__(self, view=None): if (self.layer_artist is None or self.layer_state is None or self.viewer_state is None): return self.nan_array if not self.layer_artist._compatible_with_reference_data: return self.nan_array try: mask = self.layer_state.get_sliced_data(view=view) except IncompatibleAttribute: self.layer_artist.disable_incompatible_subset() return self.nan_array else: self.layer_artist.enable() r, g, b = color2rgb(self.layer_state.color) mask = np.dstack((r * mask, g * mask, b * mask, mask * .5)) mask = (255 * mask).astype(np.uint8) return mask
def __call__(self, bounds): if (self.layer_artist is None or self.layer_state is None or self.viewer_state is None): return broadcast_to(np.nan, self.shape) # We should compute the mask even if the layer is not visible as we need # the layer to show up properly when it is made visible (which doesn't # trigger __getitem__) try: mask = self.layer_state.get_sliced_data(bounds=bounds) except IncompatibleAttribute: self.layer_artist.disable_incompatible_subset() return broadcast_to(np.nan, self.shape) else: self.layer_artist.enable(redraw=False) r, g, b = color2rgb(self.layer_state.color) mask = np.dstack((r * mask, g * mask, b * mask, mask * .5)) mask = (255 * mask).astype(np.uint8) return mask
def update(self, view, transpose=False, aspect=None): self.clear() if aspect is not None: self.aspect = aspect subset = self.layer logging.debug("View into subset %s is %s", self.layer, view) try: mask = subset.to_mask(view[1:]) except IncompatibleAttribute as exc: self.disable_invalid_attributes(*exc.args) return False logging.debug("View mask has shape %s", mask.shape) # shortcut for empty subsets if not mask.any(): return if transpose: mask = mask.T extent = get_extent(view, transpose) r, g, b = color2rgb(self.layer.style.color) mask = np.dstack((r * mask, g * mask, b * mask, mask * .5)) mask = (255 * mask).astype(np.uint8) self.artists = [ self._axes.imshow(mask, extent=extent, interpolation='nearest', origin='lower', zorder=5, visible=self.visible) ] self._axes.set_aspect(self.aspect, adjustable='datalim')
def __getitem__(self, view=None): if (self.layer_artist is None or self.layer_state is None or self.viewer_state is None): return broadcast_to(np.nan, self.shape) # We should compute the mask even if the layer is not visible as we need # the layer to show up properly when it is made visible (which doesn't # trigger __getitem__) try: mask = self.layer_state.get_sliced_data(view=view) except IncompatibleAttribute: self.layer_artist.disable_incompatible_subset() return broadcast_to(np.nan, self.shape) else: self.layer_artist.enable(redraw=False) r, g, b = color2rgb(self.layer_state.color) mask = np.dstack((r * mask, g * mask, b * mask, mask * .5)) mask = (255 * mask).astype(np.uint8) return mask