Exemple #1
0
    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')
Exemple #2
0
        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
Exemple #3
0
    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
Exemple #4
0
    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
Exemple #5
0
    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
Exemple #6
0
    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
Exemple #7
0
    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
Exemple #8
0
    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
Exemple #9
0
    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
Exemple #10
0
    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')
Exemple #11
0
    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