def test_ignore_edges(self): data_array = np.ones(shape=(100, 100)) * 5000 value = 50 data_array[1:-1, 1:-1] = value clim0 = pst._get_limits_from_array(data_array, ignore_edges=True) assert (value, value) == clim0 clim1 = pst._get_limits_from_array(data_array, ignore_edges=False) assert not ((value, value) == clim1)
def test_ignore_zeros(self): data_array0 = np.zeros(shape=(100, 100)) value = 50 data_array0[:, 70:80] = value clim0_0 = pst._get_limits_from_array(data_array0, ignore_zeros=True) assert (value, value) == clim0_0 clim0_1 = pst._get_limits_from_array(data_array0, sigma=0) assert (data_array0.mean(), data_array0.mean()) == clim0_1 clim0_2 = pst._get_limits_from_array(data_array0, sigma=1) assert (0.0, 20.0) == clim0_2
def test_simple_sigma(self): data_array0 = np.array((5, 10)) clim0 = pst._get_limits_from_array(data_array0, sigma=0) assert (data_array0.mean(), data_array0.mean()) == clim0 data_array1 = np.array((5, -10)) clim1 = pst._get_limits_from_array(data_array1, sigma=0) assert (data_array1.mean(), data_array1.mean()) == clim1 data_array2 = np.array((-5, 10)) clim2 = pst._get_limits_from_array(data_array2, sigma=0) assert (data_array2.mean(), data_array2.mean()) == clim2 data_array3 = np.array((-5, -10)) clim3 = pst._get_limits_from_array(data_array3, sigma=0) assert (data_array3.mean(), data_array3.mean()) == clim3
def get_magnitude_signal(self, autolim=True, autolim_sigma=4): """Get DPC magnitude image visualized as greyscale. Converts the x and y beam shifts into a magnitude map, showing the magnitude of the beam shifts. Useful for visualizing magnetic domain structures. Parameters ---------- autolim : bool, default True autolim_sigma : float, default 4 Returns ------- magnitude_signal : HyperSpy 2D signal Examples -------- >>> s = pxm.dummy_data.get_simple_dpc_signal() >>> s_magnitude = s.get_magnitude_signal() >>> s_magnitude.plot() See Also -------- get_color_signal : Signal showing both phase and magnitude get_phase_signal : Signal showing the phase """ inav02 = np.abs(self.inav[0].data)**2 inav12 = np.abs(self.inav[1].data)**2 magnitude = np.sqrt(inav02 + inav12) magnitude_limits = None if autolim: magnitude_limits = pst._get_limits_from_array(magnitude, sigma=autolim_sigma) np.clip(magnitude, magnitude_limits[0], magnitude_limits[1], out=magnitude) signal = Signal2D(magnitude) pst._copy_signal2d_axes_manager_metadata(self, signal) return signal
def get_color_signal(self, rotation=None, autolim=True, autolim_sigma=4): """Get DPC image visualized using continuous color scale. Converts the x and y beam shifts into an RGB array, showing the magnitude and direction of the beam shifts. Useful for visualizing magnetic domain structures. Parameters ---------- rotation : float, optional In degrees. Useful for correcting the mismatch between scan direction and diffraction pattern rotation. autolim : bool, default True autolim_sigma : float, default 4 Returns ------- color_signal : HyperSpy 2D RGB signal Examples -------- >>> s = pxm.dummy_data.get_simple_dpc_signal() >>> s_color = s.get_color_signal() >>> s_color.plot() Rotate the beam shift by 30 degrees >>> s_color = s.get_color_signal(rotation=30) See Also -------- get_color_signal : Signal showing both phase and magnitude get_phase_signal : Signal showing the phase """ # Rotate the phase by -30 degrees in the color "wheel", to get better # visualization in the vertical and horizontal direction. if rotation is None: rotation = -30 else: rotation = rotation - 30 inav0 = self.inav[0].data inav1 = self.inav[1].data phase = np.arctan2(inav0, inav1) % (2 * np.pi) magnitude = np.sqrt(np.abs(inav0) ** 2 + np.abs(inav1) ** 2) magnitude_limits = None if autolim: magnitude_limits = pst._get_limits_from_array( magnitude, sigma=autolim_sigma ) rgb_array = pst._get_rgb_phase_magnitude_array( phase=phase, magnitude=magnitude, rotation=rotation, magnitude_limits=magnitude_limits, ) signal_rgb = Signal1D(rgb_array * (2 ** 16 - 1)) signal_rgb.change_dtype("uint16") signal_rgb.change_dtype("rgb16") pst._copy_signal2d_axes_manager_metadata(self, signal_rgb) return signal_rgb