def __init__(self, logger, dist=None, settings=None, bpp=None): Callback.Callbacks.__init__(self) self.logger = logger # Create settings and set defaults if settings is None: settings = Settings.SettingGroup(logger=self.logger) self.settings = settings self.t_ = settings self.settings_keys = ['color_map', 'intensity_map', 'color_array', 'shift_array', 'color_algorithm', 'color_hashsize', ] # add our defaults self.t_.add_defaults(color_map='gray', intensity_map='ramp', color_algorithm='linear', color_hashsize=65535, color_array=None, shift_array=None) self.t_.get_setting('color_map').add_callback('set', self.color_map_set_cb) self.t_.get_setting('intensity_map').add_callback('set', self.intensity_map_set_cb) self.t_.get_setting('color_array').add_callback('set', self.color_array_set_cb) self.t_.get_setting('shift_array').add_callback('set', self.shift_array_set_cb) self.t_.get_setting('color_hashsize').add_callback('set', self.color_hashsize_set_cb) self.t_.get_setting('color_algorithm').add_callback('set', self.color_algorithm_set_cb) # For color and intensity maps self.cmap = None self.imap = None self.arr = None self.iarr = None self.carr = None self.sarr = None self.scale_pct = 1.0 # targeted bit depth per-pixel band of the output RGB array # (can be less than the data size of the output array) if bpp is None: bpp = 8 self.bpp = bpp # maximum value that we can generate in this range self.maxc = int(2 ** self.bpp - 1) # data size per pixel band in the output RGB array self._set_dtype() # For scaling algorithms hashsize = self.t_.get('color_hashsize', 65536) if dist is None: color_alg_name = self.t_.get('color_algorithm', 'linear') color_dist_class = ColorDist.get_dist(color_alg_name) dist = color_dist_class(hashsize) self.dist = dist # For callbacks for name in ('changed', ): self.enable_callback(name) self.suppress_changed = self.suppress_callback('changed', 'last') carr = self.t_.get('color_array', None) sarr = self.t_.get('shift_array', None) cm_name = self.t_.get('color_map', 'gray') self.set_color_map(cm_name) im_name = self.t_.get('intensity_map', 'ramp') self.set_intensity_map(im_name) # Initialize color array if carr is not None: self.set_carr(carr) else: self.calc_cmap() # Initialize shift array if sarr is not None: self.set_sarr(sarr) else: self.reset_sarr(callback=False)
def set_hash_algorithm(self, name, callback=True, **kwdargs): hashsize = self.dist.get_hash_size() dist = ColorDist.get_dist(name)(hashsize, **kwdargs) self.set_dist(dist, callback=callback)
def color_algorithm_set_cb(self, setting, name): size = self.t_.get('color_hashsize', self.dist.get_hash_size()) dist = ColorDist.get_dist(name)(size) self.set_dist(dist, callback=True)
def test_dist_function(self, dist_name): dist = cd.get_dist(dist_name)(self.hashsize, colorlen=self.colorlen) y = dist.hash_array(self.data) expected_y = self.scale_and_rescale(dist_name, self.data) np.testing.assert_allclose(y, expected_y)
def test_dist_function(self, dist_name): dist = cd.get_dist(dist_name)(self.hashsize, colorlen=self.colorlen) y = dist.hash_array(self.data) expected_y = self.scale_and_rescale(dist_name, self.data) np.testing.assert_allclose(y, expected_y)
def __init__(self, logger, dist=None, settings=None, bpp=None): Callback.Callbacks.__init__(self) self.logger = logger # Create settings and set defaults if settings is None: settings = Settings.SettingGroup(logger=self.logger) self.settings = settings self.t_ = settings self.settings_keys = ['color_map', 'intensity_map', 'color_array', 'shift_array', 'color_algorithm', 'color_hashsize', ] # add our defaults self.t_.add_defaults(color_map='gray', intensity_map='ramp', color_algorithm='linear', color_hashsize=65535, color_array=None, shift_array=None) self.t_.get_setting('color_map').add_callback('set', self.color_map_set_cb) self.t_.get_setting('intensity_map').add_callback('set', self.intensity_map_set_cb) self.t_.get_setting('color_array').add_callback('set', self.color_array_set_cb) self.t_.get_setting('shift_array').add_callback('set', self.shift_array_set_cb) self.t_.get_setting('color_hashsize').add_callback('set', self.color_hashsize_set_cb) self.t_.get_setting('color_algorithm').add_callback('set', self.color_algorithm_set_cb) # For color and intensity maps self.cmap = None self.imap = None self.arr = None self.iarr = None self.carr = None self.sarr = None self.scale_pct = 1.0 # targeted bit depth per-pixel band of the output RGB array # (can be less than the data size of the output array) if bpp is None: bpp = 8 self.bpp = bpp # maximum value that we can generate in this range self.maxc = 2 ** self.bpp - 1 # data size per pixel band in the output RGB array self._set_dtype() # For scaling algorithms hashsize = self.t_.get('color_hashsize', 65536) if dist is None: color_alg_name = self.t_.get('color_algorithm', 'linear') color_dist_class = ColorDist.get_dist(color_alg_name) dist = color_dist_class(hashsize) self.dist = dist # For callbacks for name in ('changed', ): self.enable_callback(name) self.suppress_changed = self.suppress_callback('changed', 'last') carr = self.t_.get('color_array', None) sarr = self.t_.get('shift_array', None) cm_name = self.t_.get('color_map', 'gray') self.set_color_map(cm_name) im_name = self.t_.get('intensity_map', 'ramp') self.set_intensity_map(im_name) # Initialize color array if carr is not None: self.set_carr(carr) else: self.calc_cmap() # Initialize shift array if sarr is not None: self.set_sarr(sarr) else: self.reset_sarr(callback=False)
def color_algorithm_set_cb(self, setting, name): size = self.t_.get('color_hashsize', self.dist.get_hash_size()) dist = ColorDist.get_dist(name)(size) self.set_dist(dist, callback=True)