def _create_signal(shape, dim, dtype, metadata): data = np.arange(np.product(shape)).reshape(shape).astype(dtype) if dim == 1: if len(shape) > 2: s = signals.EELSSpectrum(data) if metadata: s.set_microscope_parameters(beam_energy=100., convergence_angle=1., collection_angle=10.) else: s = signals.EDSTEMSpectrum(data) if metadata: 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 = signals.BaseSignal(data).transpose(signal_axes=dim) if metadata: s.metadata.General.date = "2016-08-06" s.metadata.General.time = "10:55:00" s.metadata.General.title = "Test title" 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_linear_upsize(self): spectrum = signals.EDSTEMSpectrum(np.ones([4, 5, 10])) scale = [0.3, 0.2, .5] res = spectrum.rebin(scale=scale) nt.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) nt.assert_allclose(res.data.sum(), spectrum.data.sum())
def test_linear_downsize(self): spectrum = signals.EDSTEMSpectrum(np.ones([3, 5, 1])) scale = (1.5, 2.5, 1) res = spectrum.rebin(scale=scale, crop=True) nt.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) nt.assert_allclose(res.data.sum(), spectrum.data.sum())
def test_linear_downscale_out(self): spectrum = signals.EDSTEMSpectrum(np.ones([4, 1, 1])) scale = [1, 0.4, 1] res = spectrum.rebin(scale=scale) spectrum.data[2][0] = 5 spectrum.rebin(scale=scale, out=res) nt.assert_allclose(res.data, [[[0.4]], [[0.4]], [[0.4]], [[0.4]], [[0.4]], [[2.]], [[2.]], [[1.2]], [[0.4]], [[0.4]]]) for axis in res.axes_manager._axes: assert scale[axis.index_in_axes_manager] == axis.scale