Ejemplo n.º 1
0
 def setup_method(self, method):
     self.uc = UnitConversion()
     self._set_units_scale_size(units='m', scale=1E-3)
Ejemplo n.º 2
0
 def setup_method(self, method):
     self.uc = UnitConversion()
     self._set_units_scale_size(units='m', scale=1E-3)
Ejemplo n.º 3
0
class TestUnitConversion:

    def setup_method(self, method):
        self.uc = UnitConversion()
        self._set_units_scale_size(units='m', scale=1E-3)

    def _set_units_scale_size(self, units=t.Undefined, scale=1.0, size=100,
                              offset=0.0):
        self.uc.units = units
        self.uc.scale = scale
        self.uc.offset = offset
        self.uc.size = size

    def test_units_setter(self):
        self.uc.units = ' m'
        assert self.uc.units == ' m'
        self.uc.units = 'um'
        assert self.uc.units == 'um'
        self.uc.units = 'µm'
        assert self.uc.units == 'µm'
        self.uc.units = 'km'
        assert self.uc.units == 'km'

    def test_ignore_conversion(self):
        assert self.uc._ignore_conversion(t.Undefined)
        with assert_warns(
                message="not supported for conversion.",
                category=UserWarning):
            assert self.uc._ignore_conversion('unit_not_supported')
        assert not self.uc._ignore_conversion('m')

    def test_converted_compact_scale_units(self):
        self.uc.units = 'micron'
        with assert_warns(
                message="not supported for conversion.",
                category=UserWarning):
            self.uc._convert_compact_units()
        assert self.uc.units == 'micron'
        nt.assert_almost_equal(self.uc.scale, 1.0E-3)

    def test_convert_to_units(self):
        self._set_units_scale_size(t.Undefined, 1.0)
        out = self.uc._convert_units('nm')
        assert out is None
        assert self.uc.units == t.Undefined
        nt.assert_almost_equal(self.uc.scale, 1.0)

        self._set_units_scale_size('m', 1.0E-3)
        out = self.uc._convert_units('µm')
        assert out is None
        assert self.uc.units == 'um'
        nt.assert_almost_equal(self.uc.scale, 1E3)

        self._set_units_scale_size('µm', 0.5)
        out = self.uc._convert_units('nm')
        assert out is None
        assert self.uc.units == 'nm'
        nt.assert_almost_equal(self.uc.scale, 500)

        self._set_units_scale_size('µm', 5)
        out = self.uc._convert_units('cm')
        assert out is None
        assert self.uc.units == 'cm'
        nt.assert_almost_equal(self.uc.scale, 0.0005)

        self._set_units_scale_size('1/µm', 5)
        out = self.uc._convert_units('1/nm')
        assert out is None
        assert self.uc.units == '1 / nm'
        nt.assert_almost_equal(self.uc.scale, 0.005)

        self._set_units_scale_size('eV', 5)
        out = self.uc._convert_units('keV')
        assert out is None
        assert self.uc.units == 'keV'
        nt.assert_almost_equal(self.uc.scale, 0.005)

    def test_convert_to_units_not_in_place(self):
        self._set_units_scale_size(t.Undefined, 1.0)
        out = self.uc.convert_to_units('nm', inplace=False)
        assert out is None  # unit conversion is ignored
        assert self.uc.units == t.Undefined
        nt.assert_almost_equal(self.uc.scale, 1.0)

        self._set_units_scale_size('m', 1.0E-3)
        out = self.uc.convert_to_units('µm', inplace=False)
        assert out == (1E3, 0.0, 'um')
        assert self.uc.units == 'm'
        nt.assert_almost_equal(self.uc.scale, 1.0E-3)
        nt.assert_almost_equal(self.uc.offset, 0.0)

        self._set_units_scale_size('µm', 0.5)
        out = self.uc.convert_to_units('nm', inplace=False)
        assert out[1:] == (0.0, 'nm')
        nt.assert_almost_equal(out[0], 500.0)
        assert self.uc.units == 'µm'
        nt.assert_almost_equal(self.uc.scale, 0.5)

    def test_get_compact_unit(self):
        ##### Imaging #####
        # typical setting for high resolution image
        self._set_units_scale_size('m', 12E-12, 2048, 2E-9)
        self.uc._convert_compact_units()
        assert self.uc.units == 'nm'
        nt.assert_almost_equal(self.uc.scale, 0.012)
        nt.assert_almost_equal(self.uc.offset, 2.0)

        # typical setting for nm resolution image
        self._set_units_scale_size('m', 0.5E-9, 1024)
        self.uc._convert_compact_units()
        assert self.uc.units == 'nm'
        nt.assert_almost_equal(self.uc.scale, 0.5)
        nt.assert_almost_equal(self.uc.offset, 0.0)

        ##### Diffraction #####
        # typical TEM diffraction
        self._set_units_scale_size('1/m', 0.1E9, 1024)
        self.uc._convert_compact_units()
        assert self.uc.units == '1 / nm'
        nt.assert_almost_equal(self.uc.scale, 0.1)

        # typical TEM diffraction
        self._set_units_scale_size('1/m', 0.01E9, 256)
        self.uc._convert_compact_units()
        assert self.uc.units == '1 / um'
        nt.assert_almost_equal(self.uc.scale, 10.0)

        # high camera length diffraction
        self._set_units_scale_size('1/m', 0.1E9, 4096)
        self.uc._convert_compact_units()
        assert self.uc.units == '1 / nm'
        nt.assert_almost_equal(self.uc.scale, 0.1)

        # typical EDS resolution
        self._set_units_scale_size('eV', 50, 4096, 0.0)
        self.uc._convert_compact_units()
        assert self.uc.units == 'keV'
        nt.assert_almost_equal(self.uc.scale, 0.05)
        nt.assert_almost_equal(self.uc.offset, 0.0)

        ##### Spectroscopy #####
        # typical EELS resolution
        self._set_units_scale_size('eV', 0.2, 2048, 200.0)
        self.uc._convert_compact_units()
        assert self.uc.units == 'eV'
        nt.assert_almost_equal(self.uc.scale, 0.2)
        nt.assert_almost_equal(self.uc.offset, 200.0)

        # typical EELS resolution
        self._set_units_scale_size('eV', 1.0, 2048, 500.0)
        self.uc._convert_compact_units()
        assert self.uc.units == 'eV'
        nt.assert_almost_equal(self.uc.scale, 1.0)
        nt.assert_almost_equal(self.uc.offset, 500)

        # typical high resolution EELS resolution
        self._set_units_scale_size('eV', 0.05, 100)
        self.uc._convert_compact_units()
        assert self.uc.units == 'eV'
        assert self.uc.scale == 0.05
Ejemplo n.º 4
0
class TestUnitConversion:
    def setup_method(self, method):
        self.uc = UnitConversion()
        self._set_units_scale_size(units='m', scale=1E-3)

    def _set_units_scale_size(self,
                              units=t.Undefined,
                              scale=1.0,
                              size=100,
                              offset=0.0):
        self.uc.units = units
        self.uc.scale = scale
        self.uc.offset = offset
        self.uc.size = size

    def test_units_setter(self):
        self.uc.units = ' m'
        assert self.uc.units == ' m'
        self.uc.units = 'um'
        assert self.uc.units == 'um'
        self.uc.units = 'µm'
        assert self.uc.units == 'µm'
        self.uc.units = 'km'
        assert self.uc.units == 'km'

    def test_ignore_conversion(self):
        assert self.uc._ignore_conversion(t.Undefined)
        with assert_warns(message="not supported for conversion.",
                          category=UserWarning):
            assert self.uc._ignore_conversion('unit_not_supported')
        assert not self.uc._ignore_conversion('m')

    def test_converted_compact_scale_units(self):
        self.uc.units = 'micron'
        with assert_warns(message="not supported for conversion.",
                          category=UserWarning):
            self.uc._convert_compact_units()
        assert self.uc.units == 'micron'
        nt.assert_almost_equal(self.uc.scale, 1.0E-3)

    def test_convert_to_units(self):
        self._set_units_scale_size(t.Undefined, 1.0)
        out = self.uc._convert_units('nm')
        assert out is None
        assert self.uc.units == t.Undefined
        nt.assert_almost_equal(self.uc.scale, 1.0)

        self._set_units_scale_size('m', 1.0E-3)
        out = self.uc._convert_units('µm')
        assert out is None
        assert self.uc.units == 'um'
        nt.assert_almost_equal(self.uc.scale, 1E3)

        self._set_units_scale_size('µm', 0.5)
        out = self.uc._convert_units('nm')
        assert out is None
        assert self.uc.units == 'nm'
        nt.assert_almost_equal(self.uc.scale, 500)

        self._set_units_scale_size('µm', 5)
        out = self.uc._convert_units('cm')
        assert out is None
        assert self.uc.units == 'cm'
        nt.assert_almost_equal(self.uc.scale, 0.0005)

        self._set_units_scale_size('1/µm', 5)
        out = self.uc._convert_units('1/nm')
        assert out is None
        assert self.uc.units == '1 / nm'
        nt.assert_almost_equal(self.uc.scale, 0.005)

        self._set_units_scale_size('eV', 5)
        out = self.uc._convert_units('keV')
        assert out is None
        assert self.uc.units == 'keV'
        nt.assert_almost_equal(self.uc.scale, 0.005)

    def test_convert_to_units_not_in_place(self):
        self._set_units_scale_size(t.Undefined, 1.0)
        out = self.uc.convert_to_units('nm', inplace=False)
        assert out == None  # unit conversion is ignored
        assert self.uc.units == t.Undefined
        nt.assert_almost_equal(self.uc.scale, 1.0)

        self._set_units_scale_size('m', 1.0E-3)
        out = self.uc.convert_to_units('µm', inplace=False)
        assert out == (1E3, 0.0, 'um')
        assert self.uc.units == 'm'
        nt.assert_almost_equal(self.uc.scale, 1.0E-3)
        nt.assert_almost_equal(self.uc.offset, 0.0)

        self._set_units_scale_size('µm', 0.5)
        out = self.uc.convert_to_units('nm', inplace=False)
        assert out[1:] == (0.0, 'nm')
        nt.assert_almost_equal(out[0], 500.0)
        assert self.uc.units == 'µm'
        nt.assert_almost_equal(self.uc.scale, 0.5)

    def test_get_compact_unit(self):
        ##### Imaging #####
        # typical setting for high resolution image
        self._set_units_scale_size('m', 12E-12, 2048, 2E-9)
        self.uc._convert_compact_units()
        assert self.uc.units == 'nm'
        nt.assert_almost_equal(self.uc.scale, 0.012)
        nt.assert_almost_equal(self.uc.offset, 2.0)

        # typical setting for nm resolution image
        self._set_units_scale_size('m', 0.5E-9, 1024)
        self.uc._convert_compact_units()
        assert self.uc.units == 'nm'
        nt.assert_almost_equal(self.uc.scale, 0.5)
        nt.assert_almost_equal(self.uc.offset, 0.0)

        ##### Diffraction #####
        # typical TEM diffraction
        self._set_units_scale_size('1/m', 0.1E9, 1024)
        self.uc._convert_compact_units()
        assert self.uc.units == '1 / nm'
        nt.assert_almost_equal(self.uc.scale, 0.1)

        # typical TEM diffraction
        self._set_units_scale_size('1/m', 0.01E9, 256)
        self.uc._convert_compact_units()
        assert self.uc.units == '1 / um'
        nt.assert_almost_equal(self.uc.scale, 10.0)

        # high camera length diffraction
        self._set_units_scale_size('1/m', 0.1E9, 4096)
        self.uc._convert_compact_units()
        assert self.uc.units == '1 / nm'
        nt.assert_almost_equal(self.uc.scale, 0.1)

        # typical EDS resolution
        self._set_units_scale_size('eV', 50, 4096, 0.0)
        self.uc._convert_compact_units()
        assert self.uc.units == 'keV'
        nt.assert_almost_equal(self.uc.scale, 0.05)
        nt.assert_almost_equal(self.uc.offset, 0.0)

        ##### Spectroscopy #####
        # typical EELS resolution
        self._set_units_scale_size('eV', 0.2, 2048, 200.0)
        self.uc._convert_compact_units()
        assert self.uc.units == 'eV'
        nt.assert_almost_equal(self.uc.scale, 0.2)
        nt.assert_almost_equal(self.uc.offset, 200.0)

        # typical EELS resolution
        self._set_units_scale_size('eV', 1.0, 2048, 500.0)
        self.uc._convert_compact_units()
        assert self.uc.units == 'eV'
        nt.assert_almost_equal(self.uc.scale, 1.0)
        nt.assert_almost_equal(self.uc.offset, 500)

        # typical high resolution EELS resolution
        self._set_units_scale_size('eV', 0.05, 100)
        self.uc._convert_compact_units()
        assert self.uc.units == 'eV'
        assert self.uc.scale == 0.05