def test_linear_upsize(self, dtype): spectrum = EDSTEMSpectrum(np.ones([4, 5, 10], dtype=dtype)) scale = [0.3, 0.2, 0.5] res = spectrum.rebin(scale=scale) np.testing.assert_allclose(res.data, 0.03 * np.ones((20, 16, 20))) for axis in res.axes_manager._axes: assert scale[axis.index_in_axes_manager] == axis.scale res = spectrum.rebin(scale=scale, crop=False) np.testing.assert_allclose(res.data.sum(), spectrum.data.sum())
def test_linear_downsize(self, dtype): spectrum = EDSTEMSpectrum(np.ones([3, 5, 1], dtype=dtype)) scale = (1.5, 2.5, 1) res = spectrum.rebin(scale=scale, crop=True) np.testing.assert_allclose(res.data, 3.75 * np.ones((1, 3, 1))) for axis in res.axes_manager._axes: assert scale[axis.index_in_axes_manager] == axis.scale res = spectrum.rebin(scale=scale, crop=False) np.testing.assert_allclose(res.data.sum(), spectrum.data.sum())
def setup_method(self, method): s = EDSTEMSpectrum(np.ones([2, 2, 1024])) energy_axis = s.axes_manager.signal_axes[0] energy_axis.scale = 1e-2 energy_axis.units = 'keV' energy_axis.name = "Energy" s.set_microscope_parameters(beam_energy=200, live_time=2.5, tilt_stage=0.0, azimuth_angle=0, elevation_angle=35, energy_resolution_MnKa=130, beam_current=0.05) elements = ['Al', 'Zn'] xray_lines = ['Al_Ka', 'Zn_Ka'] intensities = [300, 500] for i, xray_line in enumerate(xray_lines): gauss = Gaussian() line_energy, FWHM = s._get_line_energy(xray_line, FWHM_MnKa='auto') gauss.centre.value = line_energy gauss.A.value = intensities[i] gauss.sigma.value = FWHM s.data[:] += gauss.function(energy_axis.axis) s.set_elements(elements) s.add_lines(xray_lines) s.axes_manager[0].scale = 0.5 s.axes_manager[1].scale = 0.5 s.axes_manager[0].units = 'nm' s.axes_manager[1].units = 'nm' self.signal = s
def test_decomposition(normalise_poissonian_noise): s = EDSTEMSpectrum(np.ones(shape=(32, 32, 1024))) s.add_poissonian_noise() # default uses `vacuum_mask` s.decomposition(normalise_poissonian_noise) # test with numpy array mask mask = s.vacuum_mask().data s.decomposition(normalise_poissonian_noise, navigation_mask=mask)
def setup_method(self, method): s = EDSTEMSpectrum(np.ones([2, 2, 1024])) energy_axis = s.axes_manager.signal_axes[0] energy_axis.scale = 1e-2 energy_axis.units = 'keV' energy_axis.name = "Energy" s.set_microscope_parameters(beam_energy=200, live_time=2.5, tilt_stage=0.0, azimuth_angle=0, elevation_angle=35, energy_resolution_MnKa=130, beam_current=0.05) elements = ['Al', 'Zn'] xray_lines = ['Al_Ka', 'Zn_Ka'] intensities = [300, 500] for i, xray_line in enumerate(xray_lines): gauss = Gaussian() line_energy, FWHM = s._get_line_energy(xray_line, FWHM_MnKa='auto') gauss.centre.value = line_energy gauss.A.value = intensities[i] gauss.sigma.value = FWHM s.data[:] += gauss.function(energy_axis.axis) s.set_elements(elements) s.add_lines(xray_lines) s.axes_manager[0].scale = 0.5 s.axes_manager[1].scale = 0.5 self.signal = s
def setUp(self): s = EDSTEMSpectrum(np.ones([2, 2, 1024])) energy_axis = s.axes_manager.signal_axes[0] energy_axis.scale = 1e-2 energy_axis.units = "keV" energy_axis.name = "Energy" s.set_microscope_parameters( beam_energy=200, live_time=3.1, tilt_stage=0.0, azimuth_angle=None, elevation_angle=35, energy_resolution_MnKa=130, ) s.metadata.Acquisition_instrument.TEM.Detector.EDS.real_time = 2.5 s.metadata.Acquisition_instrument.TEM.beam_current = 0.05 elements = ["Al", "Zn"] xray_lines = ["Al_Ka", "Zn_Ka"] intensities = [300, 500] for i, xray_line in enumerate(xray_lines): gauss = Gaussian() line_energy, FWHM = s._get_line_energy(xray_line, FWHM_MnKa="auto") gauss.centre.value = line_energy gauss.A.value = intensities[i] gauss.sigma.value = FWHM s.data[:] += gauss.function(energy_axis.axis) s.set_elements(elements) s.add_lines(xray_lines) s.axes_manager[0].scale = 0.5 s.axes_manager[1].scale = 0.5 self.signal = s
def _create_signal( shape, dim, dtype, ): data = np.arange(np.product(shape)).reshape(shape).astype(dtype) if dim == 1: if len(shape) > 2: s = EELSSpectrum(data) s.set_microscope_parameters(beam_energy=100., convergence_angle=1., collection_angle=10.) else: s = EDSTEMSpectrum(data) s.set_microscope_parameters(beam_energy=100., live_time=1., tilt_stage=2., azimuth_angle=3., elevation_angle=4., energy_resolution_MnKa=5.) else: s = BaseSignal(data) s.axes_manager.set_signal_dimension(dim) for i, axis in enumerate(s.axes_manager._axes): i += 1 axis.offset = i * 0.5 axis.scale = i * 100 axis.name = "%i" % i if axis.navigate: axis.units = "m" else: axis.units = "eV" return s
def test_get_calibration_from(self): s = self.signal scalib = EDSTEMSpectrum(np.ones(1024)) energy_axis = scalib.axes_manager.signal_axes[0] energy_axis.scale = 0.01 energy_axis.offset = -0.10 s.get_calibration_from(scalib) assert (s.axes_manager.signal_axes[0].scale == energy_axis.scale)
def test_linear_upscale_out(self): spectrum = EDSTEMSpectrum(np.ones([4, 1, 1])) scale = [1, 0.4, 1] offset = [0, -0.3, 0] res = spectrum.rebin(scale=scale) spectrum.data[2][0] = 5 spectrum.rebin(scale=scale, out=res) np.testing.assert_allclose( res.data, [ [[0.4]], [[0.4]], [[0.4]], [[0.4]], [[0.4]], [[2.0]], [[2.0]], [[1.2]], [[0.4]], [[0.4]], ], atol=1e-3, ) for axis in res.axes_manager._axes: assert scale[axis.index_in_axes_manager] == axis.scale assert offset[axis.index_in_axes_manager] == axis.offset
def test_eds(): s = EDSTEMSpectrum(([0, 1])) s2 = EDSSEMSpectrum(([0, 1])) s.axes_manager[0].convert_to_non_uniform_axis() s2.axes_manager[0].convert_to_non_uniform_axis() s.set_microscope_parameters(20) with pytest.raises(NotImplementedError): s.get_calibration_from(s) with pytest.raises(NotImplementedError): s2.get_calibration_from(s2) m = s.create_model() with pytest.raises(NotImplementedError): m.add_family_lines('Al_Ka') with pytest.raises(NotImplementedError): m._set_energy_scale('Al_Ka', [1.0]) with pytest.raises(NotImplementedError): m._set_energy_offset('Al_Ka', [1.0])
# numpy dataset np.random.seed(1001) imageds = np.random.randint(1, 5, size=(3, 32, 32)) imageds_da = da.from_array(imageds) hsimage = Signal2D(imageds) hsimage_da = Signal2D(imageds_da).as_lazy() hsimage.metadata.General.original_filename = "non/existant/path.emd" hsimage.metadata.General.title = "dummy" hsimage_da.metadata.General.original_filename = "non/existant/path.emd" hsimage_da.metadata.General.title = "dummy" # spectrum maps specmap = np.random.randint(1, 5, size=(3, 32, 32, 3)) specmap_da = da.from_array(specmap) hsspecmap = EDSTEMSpectrum(specmap) hsspecmap_da = EDSTEMSpectrum(specmap_da).as_lazy() @pytest.mark.parametrize("data", [imageds, imageds_da, hsimage, hsimage_da]) def test_match_series_create(data): mso = ms.MatchSeries(data) assert not mso.completed assert type(mso.data) == type(data) @pytest.mark.xfail(raises=ValueError) def test_match_series_fail(): ms.MatchSeries()
def setup_method(self, method): s = EDSTEMSpectrum(np.array([np.linspace(0.001, 0.5, 20)] * 100).T) s.add_poissonian_noise() self.signal = s
def test_sum_minimum_missing(self): s = EDSTEMSpectrum(np.ones((4, 2, 1024))) s.sum()
def setup_method(self, method): # Create an empty spectrum s = EDSTEMSpectrum(np.ones((4, 2, 1024))) s.metadata.Acquisition_instrument.TEM.Detector.EDS.live_time = 3.1 s.metadata.Acquisition_instrument.TEM.beam_energy = 15.0 self.signal = s
def setUp(self): # Create an empty spectrum s = EDSTEMSpectrum(np.ones((4, 2, 1024))) s.mapped_parameters.TEM.EDS.live_time = 3.1 s.mapped_parameters.TEM.beam_energy = 15.0 self.signal = s
def test_sum_minimum_missing(self): s = EDSTEMSpectrum(np.ones((4, 2, 1024))) s.sum()
def setup_method(self, method): s = EDSTEMSpectrum(np.array([np.linspace(0.001, 0.5, 20)] * 100).T) s.add_poissonian_noise() self.signal = s
def setUp(self): s = Simulation(np.array([np.linspace(0.001, 0.5, 20)] * 100).T) s.add_poissonian_noise() s = EDSTEMSpectrum(s.data) self.signal = s