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)
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'))
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
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
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