Example #1
0
class VispyLayer(Layer):
    def __init__(self,
                 renderer,
                 data,
                 cmap='viridis',
                 clim=(0, 1),
                 interp='nearest',
                 alpha=100,
                 order=1):
        super().__init__(renderer,
                         data,
                         cmap=cmap,
                         clim=clim,
                         interp=interp,
                         alpha=alpha,
                         order=order)
        self.visual = ImageVisual(self._data,
                                  clim=self._clim,
                                  cmap=self._cmap,
                                  interpolation=self._interp)
        self.alphaFilter = Alpha(self._alpha / 100.)
        self.visual.attach(self.alphaFilter)
        self._rescale()

    def set_order(self, order):
        super().set_order(order)
        self.visual.transform.translate = (-1, 1, -.01 * order)

    def _convert_cmap(self, cmap):
        if type(cmap) == list:
            cmap = Colormap(ColorArray(cmap))
        return cmap

    def _rescale(self):
        height, width = self._data.shape[:2]
        vscale = -2. / height
        hscale = 2. / width
        zdepth = -0.01 * self._order
        transform = transforms.STTransform(scale=(hscale, vscale),
                                           translate=(-1, 1, zdepth))
        self.visual.transform = transform

    def update_image(self, data, **kwargs):
        self.visual.set_data(data)
        if 'clim' in kwargs:
            self.visual.clim = kwargs['clim']
        if 'cmap' in kwargs:
            cmap = self._convert_cmap(kwargs['cmap'])
            self.visual.cmap = cmap
        if 'interp' in kwargs:
            self.visual.interpolation = kwargs['interp']
        if 'alpha' in kwargs:
            self.alphaFilter.alpha = kwargs['alpha'] / 100.
        if 'order' in kwargs:
            self.set_order(kwargs['order'])
        super().update_image(data, **kwargs)

    def draw(self):
        if self.is_visible():
            self.visual.draw()
class VispyLayer(Layer):
    def __init__(
            self,
            renderer,
            data,
            cmap="gray",
            clim=(0, 1),
            interp="nearest",
            alpha=100,
            order=1,
    ):
        super().__init__(
            renderer,
            data,
            cmap=cmap,
            clim=clim,
            interp=interp,
            alpha=alpha,
            order=order,
        )
        self.visual = ImageVisual(self._data,
                                  clim=self._clim,
                                  cmap=cmap,
                                  interpolation=self._interp)
        self.alphaFilter = Alpha(self._alpha / 100.0)
        self.visual.attach(self.alphaFilter)
        self._rescale()
        print("Vispy")

    def set_order(self, order):
        super().set_order(order)
        self.visual.transform.translate = (-1, 1, -0.01 * order)

    def _convert_cmap(self, cmap):
        if type(cmap) == list:
            cmap = Colormap(ColorArray(cmap))
        return cmap

    def _rescale(self):
        height, width = self._data.shape[:2]
        vscale = -2.0 / height
        hscale = 2.0 / width
        zdepth = -0.01 * self._order
        transform = transforms.STTransform(scale=(hscale, vscale),
                                           translate=(-1, 1, zdepth))
        self.visual.transform = transform

    def update_image(self, data, **kwargs):
        self.visual.set_data(data)
        if "clim" in kwargs:
            self.visual.clim = kwargs["clim"]
        if "cmap" in kwargs:
            cmap = self._convert_cmap(kwargs["cmap"])
            self.visual.cmap = cmap
        if "interp" in kwargs:
            self.visual.interpolation = kwargs["interp"]
        if "alpha" in kwargs:
            self.alphaFilter.alpha = kwargs["alpha"] / 100.0
        if "order" in kwargs:
            self.set_order(kwargs["order"])
        super().update_image(data, **kwargs)

    def draw(self):
        if self.is_visible():
            self.visual.draw()