def update(self, view=None, transpose=False, aspect=None): self.clear() if aspect is not None: self.aspect = aspect if self.r is None or self.g is None or self.b is None: return if view is None: view = self.last_view if view is None: return self.last_view = view views = view_cascade(self.layer, view) artists = [] for v in views: extent = get_extent(v, transpose) # first argument = component. swap r = tuple([self.r] + list(v[1:])) g = tuple([self.g] + list(v[1:])) b = tuple([self.b] + list(v[1:])) r = self.layer[r] g = self.layer[g] b = self.layer[b] if transpose: r = r.T g = g.T b = b.T self.rnorm = self.rnorm or self._default_norm(r) self.gnorm = self.gnorm or self._default_norm(g) self.bnorm = self.bnorm or self._default_norm(b) if v is views[0]: self.rnorm.update_clip(small_view(self.layer, self.r)) self.gnorm.update_clip(small_view(self.layer, self.g)) self.bnorm.update_clip(small_view(self.layer, self.b)) image = np.dstack((self.rnorm(r), self.gnorm(g), self.bnorm(b))) if not self.layer_visible['red']: image[:, :, 0] *= 0 if not self.layer_visible['green']: image[:, :, 1] *= 0 if not self.layer_visible['blue']: image[:, :, 2] *= 0 artists.append(self._axes.imshow(image, interpolation='nearest', origin='lower', extent=extent, zorder=0)) self._axes.set_aspect(self.aspect, adjustable='datalim') self.artists = artists self._sync_style()
def _update_clip(self, att): key = (att, id(self._override_image), self.norm.clip_lo, self.norm.clip_hi) if self._clip_cache == key: return self._clip_cache = key if self._override_image is None: data = small_view(self.layer, att) else: data = small_view_array(self._override_image) self.norm.update_clip(data)