Exemple #1
0
    def get_color_mapping(self, ds_id: str,
                          var_name: str) -> Tuple[str, Tuple[float, float]]:
        cmap_name = None
        cmap_vmin, cmap_vmax = None, None
        color_mappings = self.get_color_mappings(ds_id)
        if color_mappings:
            color_mapping = color_mappings.get(var_name)
            if color_mapping:
                cmap_vmin, cmap_vmax = color_mapping.get(
                    'ValueRange', (None, None))
                if color_mapping.get('ColorFile') is not None:
                    cmap_name = color_mapping.get('ColorFile', cmap_name)
                else:
                    cmap_name = color_mapping.get('ColorBar', cmap_name)
                    cmap_name, _ = get_cmap(cmap_name)

        cmap_range = cmap_vmin, cmap_vmax
        if cmap_name is not None and None not in cmap_range:
            # noinspection PyTypeChecker
            return cmap_name, cmap_range

        ds = self.get_dataset(ds_id, expected_var_names=[var_name])
        var = ds[var_name]
        valid_range = get_var_valid_range(var)
        return get_var_cmap_params(var, cmap_name, cmap_range, valid_range)
Exemple #2
0
    def _get_color_mappings(ml_dataset: MultiLevelDataset,
                            var_name: str,
                            config: Mapping[str, Any],
                            style_id: str):
        cmap_name = None
        cmap_range = None, None

        if config:
            style_id = style_id or 'default'
            styles = config.get('Styles')
            if styles:
                color_mappings = None
                for style in styles:
                    if style.get('Identifier') == style_id:
                        color_mappings = style.get('ColorMappings')
                        break
                if color_mappings:
                    color_mapping = color_mappings.get(var_name)
                    if color_mapping:
                        cmap_name = color_mapping.get('ColorBar')
                        cmap_vmin, cmap_vmax = color_mapping.get('ValueRange', (None, None))
                        cmap_range = cmap_vmin, cmap_vmax

        if cmap_name is not None and None not in cmap_range:
            return cmap_name, cmap_range
        var = ml_dataset.base_dataset[var_name]
        valid_range = get_var_valid_range(var)
        return get_var_cmap_params(var, cmap_name, cmap_range, valid_range)
Exemple #3
0
    def get_color_mapping(self, ds_id: str, var_name: str):
        cmap_name = None
        cmap_vmin, cmap_vmax = None, None

        dataset_descriptor = self.get_dataset_descriptor(ds_id)
        style_name = dataset_descriptor.get('Style', 'default')
        styles = self._config.get('Styles')
        if styles:
            style = None
            for s in styles:
                if style_name == s['Identifier']:
                    style = s
                    break
            if style:
                color_mappings = style.get('ColorMappings')
                if color_mappings:
                    color_mapping = color_mappings.get(var_name)
                    if color_mapping:
                        cmap_vmin, cmap_vmax = color_mapping.get('ValueRange', (None, None))
                        if color_mapping.get('ColorFile') is not None:
                            cmap_name = color_mapping.get('ColorFile', cmap_name)
                        else:
                            cmap_name = color_mapping.get('ColorBar', cmap_name)
                            cmap_name, _ = get_cmap(cmap_name)

        cmap_params = cmap_name, cmap_vmin, cmap_vmax
        if None not in cmap_params:
            return cmap_params

        ds = self.get_dataset(ds_id, expected_var_names=[var_name])
        var = ds[var_name]
        valid_range = get_var_valid_range(var)
        return get_var_cmap_params(var, cmap_name, cmap_vmin, cmap_vmax, valid_range)
Exemple #4
0
 def test_from_nothing(self):
     a = xr.DataArray(0)
     self.assertEqual(None, get_var_valid_range(a))
Exemple #5
0
 def test_from_valid_max(self):
     a = xr.DataArray(0, attrs=dict(valid_max=1))
     self.assertEqual((-np.inf, 1), get_var_valid_range(a))
Exemple #6
0
 def test_from_valid_min(self):
     a = xr.DataArray(0, attrs=dict(valid_min=-1))
     self.assertEqual((-1, np.inf), get_var_valid_range(a))
Exemple #7
0
 def test_from_valid_range(self):
     a = xr.DataArray(0, attrs=dict(valid_range=[-1, 1]))
     self.assertEqual((-1, 1), get_var_valid_range(a))