示例#1
0
 def test_spectral_conversion(self, unit1, unit2):
     sq1 = SpectralQuantity(1 * unit1)
     sq2 = sq1.to(unit2)
     sq3 = sq2.to(unit1)
     assert isinstance(sq2, SpectralQuantity)
     assert isinstance(sq3, SpectralQuantity)
     assert_quantity_allclose(sq1, sq3)
示例#2
0
 def test_spectral_conversion(self, unit1, unit2):
     sq1 = SpectralQuantity(1 * unit1)
     sq2 = sq1.to(unit2)
     sq3 = sq2.to(str(unit1))  # check that string units work
     assert isinstance(sq2, SpectralQuantity)
     assert isinstance(sq3, SpectralQuantity)
     assert_quantity_allclose(sq1, sq3)
示例#3
0
    def test_doppler_conversion(self):

        sq1 = SpectralQuantity(1 * u.km / u.s,
                               doppler_convention='optical',
                               doppler_rest=500 * u.nm)

        sq2 = sq1.to(u.m / u.s)
        assert_allclose(sq2.value, 1000)

        sq3 = sq1.to(u.m / u.s, doppler_convention='radio')
        assert_allclose(sq3.value, 999.996664)

        sq4 = sq1.to(u.m / u.s, doppler_convention='relativistic')
        assert_allclose(sq4.value, 999.998332)

        sq5 = sq1.to(u.m / u.s, doppler_rest=499.9 * u.nm)
        assert_allclose(sq5.value, 60970.685737)

        val5 = sq1.to_value(u.m / u.s, doppler_rest=499.9 * u.nm)
        assert_allclose(val5, 60970.685737)
示例#4
0
    def test_doppler_conversion_validation(self):

        sq1 = SpectralQuantity(1 * u.GHz)
        sq2 = SpectralQuantity(1 * u.km / u.s)

        with pytest.raises(
                ValueError,
                match=
                'doppler_convention not set, cannot convert to/from velocities'
        ):
            sq1.to(u.km / u.s)

        with pytest.raises(
                ValueError,
                match=
                'doppler_convention not set, cannot convert to/from velocities'
        ):
            sq2.to(u.GHz)

        with pytest.raises(
                ValueError,
                match='doppler_rest not set, cannot convert to/from velocities'
        ):
            sq1.to(u.km / u.s, doppler_convention='radio')

        with pytest.raises(
                ValueError,
                match='doppler_rest not set, cannot convert to/from velocities'
        ):
            sq2.to(u.GHz, doppler_convention='radio')

        with pytest.raises(
                u.UnitsError,
                match=
                "Argument 'doppler_rest' to function 'to' must be in units"):
            sq1.to(u.km / u.s,
                   doppler_convention='radio',
                   doppler_rest=5 * u.kg)

        with pytest.raises(
                u.UnitsError,
                match=
                "Argument 'doppler_rest' to function 'to' must be in units"):
            sq2.to(u.GHz, doppler_convention='radio', doppler_rest=5 * u.kg)

        with pytest.raises(
                ValueError,
                match=
                "doppler_convention should be one of optical/radio/relativistic"
        ):
            sq1.to(u.km / u.s,
                   doppler_convention='banana',
                   doppler_rest=5 * u.GHz)

        with pytest.raises(
                ValueError,
                match=
                "doppler_convention should be one of optical/radio/relativistic"
        ):
            sq2.to(u.GHz, doppler_convention='banana', doppler_rest=5 * u.GHz)

        with pytest.raises(ValueError,
                           match='Original doppler_convention not set'):
            sq2.to(u.km / u.s, doppler_convention='radio')

        with pytest.raises(ValueError, match='Original doppler_rest not set'):
            sq2.to(u.km / u.s, doppler_rest=5 * u.GHz)