Exemple #1
0
    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)
Exemple #2
0
 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)
Exemple #3
0
 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)
Exemple #4
0
 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)
Exemple #5
0
 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)
Exemple #6
0
    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)
Exemple #7
0
 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)