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)
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)
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)
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)