Exemplo n.º 1
0
    def _get_tick_locator(self, map_name):
        min_val, max_val = self._data_info.maps[map_name].min(
        ), self._data_info.maps[map_name].max()

        scale = self._get_map_attr(map_name, 'scale', Scale())
        if scale.use_max:
            max_val = scale.vmax
        if scale.use_min:
            min_val = scale.vmin

        return MyColourBarTickLocator(
            min_val, max_val, numticks=self._plot_config.colorbar_nmr_ticks)
Exemplo n.º 2
0
    def _get_tick_locator(self, map_name):
        min_val, max_val = self._data_info.get_single_map_info(
            map_name).min_max()

        scale = self._get_map_attr(map_name, 'scale', Scale())
        if scale.use_max:
            max_val = scale.vmax
        if scale.use_min:
            min_val = scale.vmin

        return MyColourBarTickLocator(
            min_val,
            max_val,
            numticks=self._get_colorbar_setting(map_name, 'nmr_ticks'),
            round_precision=self._get_colorbar_setting(map_name,
                                                       'round_precision'))
Exemplo n.º 3
0
    def _get_map_plot_options(self, map_name):
        output_dict = {
            'vmin':
            self._data_info.get_single_map_info(map_name).min(),
            'vmax':
            self._data_info.get_single_map_info(map_name).max(),
            'cmap':
            self._get_map_attr(map_name, 'colormap',
                               self._plot_config.colormap)
        }

        scale = self._get_map_attr(map_name, 'scale', Scale())
        if scale.use_max:
            output_dict['vmax'] = scale.vmax
        if scale.use_min:
            output_dict['vmin'] = scale.vmin

        return output_dict
Exemplo n.º 4
0
    def _get_map_plot_options(self, map_name):
        cmap = get_cmap(
            self._get_map_attr(map_name, 'colormap',
                               self._plot_config.colormap))

        masked_color = self._get_map_attr(
            map_name, 'colormap_masked_color',
            self._plot_config.colormap_masked_color)
        if masked_color is not None:
            cmap.set_bad(color=masked_color)

        output_dict = {
            'vmin': self._data_info.get_single_map_info(map_name).min(),
            'vmax': self._data_info.get_single_map_info(map_name).max(),
            'cmap': cmap
        }

        scale = self._get_map_attr(map_name, 'scale', Scale())
        if scale.use_max:
            output_dict['vmax'] = scale.vmax
        if scale.use_min:
            output_dict['vmin'] = scale.vmin

        return output_dict
Exemplo n.º 5
0
    def _get_image(self, map_name):
        """Get the 2d image to display for the given data."""
        def get_slice(data):
            """Get the slice of the data in the desired dimension."""
            dimension = self._plot_config.dimension
            slice_index = self._plot_config.slice_index
            volume_index = self._plot_config.volume_index

            data_slice = get_slice_in_dimension(data, dimension, slice_index)
            if len(data_slice.shape) > 2:
                if data_slice.shape[2] == 3 and self._get_map_attr(
                        map_name, 'interpret_as_colormap'):
                    data_slice = np.abs(data_slice[:, :, :])

                    if self._get_map_attr(map_name, 'colormap_order'):
                        order = self._get_map_attr(map_name, 'colormap_order')
                        data_slice[..., :] = data_slice[
                            ..., [order.index(color) for color in 'rbg']]

                elif volume_index < data_slice.shape[2]:
                    data_slice = np.squeeze(data_slice[:, :, volume_index])
                else:
                    data_slice = np.squeeze(
                        data_slice[:, :, data_slice.shape[2] - 1])

            if len(data_slice.shape) == 1:
                data_slice = data_slice[:, None]

            return data_slice

        def apply_modifications(data_slice):
            """Modify the data using (possible) value clipping and masking"""
            data_slice = self._get_map_attr(map_name, 'clipping',
                                            Clipping()).apply(data_slice)
            mask_name = self._get_map_attr(map_name, 'mask_name',
                                           self._plot_config.mask_name)
            if mask_name:
                mask = (get_slice(self._data_info.get_map_data(mask_name)) > 0)
                if len(data_slice.shape) != len(mask.shape):
                    mask = mask[..., None]
                data_slice = data_slice * mask
            return data_slice

        data = self._data_info.get_map_data(map_name)
        if len(data.shape) == 2:
            data_slice = data
        else:
            data_slice = get_slice(data)

        data_slice = apply_modifications(data_slice)
        data_slice = _apply_transformations(self._plot_config, data_slice)

        if len(data_slice.shape) == 3:
            multiplication_map = self._get_map_attr(map_name,
                                                    'colormap_weight_map',
                                                    None)
            if multiplication_map is not None and map_name != multiplication_map:
                multiplication_map = self._get_image(multiplication_map)
                if len(multiplication_map.shape) != 3:
                    multiplication_map = multiplication_map[..., None]

                scale = self._get_map_attr(map_name, 'scale', Scale())
                new_vmax = np.min(((scale.vmax if scale.use_max else 1), 1))
                new_vmin = np.max(((scale.vmin if scale.use_min else 0), 0))

                multiplication_map = multiplication_map + (
                    1 - (new_vmax - new_vmin))
                data_slice = data_slice * multiplication_map

                if np.max(data_slice) > 1:
                    data_slice /= np.max(data_slice)

        return data_slice