def test_unit_conversions(): """ Test operations that convert to different units or cast to ndarray """ from yt.units.yt_array import YTQuantity from yt.units.unit_object import Unit km = YTQuantity(1, 'km') km_in_cm = km.in_units('cm') cm_unit = Unit('cm') kpc_unit = Unit('kpc') yield assert_equal, km_in_cm, km yield assert_equal, km_in_cm.in_cgs(), 1e5 yield assert_equal, km_in_cm.in_mks(), 1e3 yield assert_equal, km_in_cm.units, cm_unit km_view = km.ndarray_view() km.convert_to_units('cm') assert_true(km_view.base is km.base) yield assert_equal, km, YTQuantity(1, 'km') yield assert_equal, km.in_cgs(), 1e5 yield assert_equal, km.in_mks(), 1e3 yield assert_equal, km.units, cm_unit km.convert_to_units('kpc') assert_true(km_view.base is km.base) yield assert_array_almost_equal_nulp, km, YTQuantity(1, 'km') yield assert_array_almost_equal_nulp, km.in_cgs(), YTQuantity(1e5, 'cm') yield assert_array_almost_equal_nulp, km.in_mks(), YTQuantity(1e3, 'm') yield assert_equal, km.units, kpc_unit yield assert_isinstance, km.to_ndarray(), np.ndarray yield assert_isinstance, km.ndarray_view(), np.ndarray dyne = YTQuantity(1.0, 'dyne') yield assert_equal, dyne.in_cgs(), dyne yield assert_equal, dyne.in_cgs(), 1.0 yield assert_equal, dyne.in_mks(), dyne yield assert_equal, dyne.in_mks(), 1e-5 yield assert_equal, str(dyne.in_mks().units), 'kg*m/s**2' yield assert_equal, str(dyne.in_cgs().units), 'cm*g/s**2' em3 = YTQuantity(1.0, 'erg/m**3') yield assert_equal, em3.in_cgs(), em3 yield assert_equal, em3.in_cgs(), 1e-6 yield assert_equal, em3.in_mks(), em3 yield assert_equal, em3.in_mks(), 1e-7 yield assert_equal, str(em3.in_mks().units), 'kg/(m*s**2)' yield assert_equal, str(em3.in_cgs().units), 'g/(cm*s**2)'
def test_temperature_conversions(): """ Test conversions between various supported temperatue scales. Also ensure we only allow compound units with temperature scales that have a proper zero point. """ from yt.units.unit_object import InvalidUnitOperation km = YTQuantity(1, 'km') balmy = YTQuantity(300, 'K') balmy_F = YTQuantity(80.33, 'degF') balmy_C = YTQuantity(26.85, 'degC') balmy_R = YTQuantity(540, 'R') assert_array_almost_equal(balmy.in_units('degF'), balmy_F) assert_array_almost_equal(balmy.in_units('degC'), balmy_C) assert_array_almost_equal(balmy.in_units('R'), balmy_R) balmy_view = balmy.ndarray_view() balmy.convert_to_units('degF') assert_true(balmy_view.base is balmy.base) assert_array_almost_equal(np.array(balmy), np.array(balmy_F)) balmy.convert_to_units('degC') assert_true(balmy_view.base is balmy.base) assert_array_almost_equal(np.array(balmy), np.array(balmy_C)) balmy.convert_to_units('R') assert_true(balmy_view.base is balmy.base) assert_array_almost_equal(np.array(balmy), np.array(balmy_R)) balmy.convert_to_units('degF') assert_true(balmy_view.base is balmy.base) assert_array_almost_equal(np.array(balmy), np.array(balmy_F)) assert_raises(InvalidUnitOperation, np.multiply, balmy, km) # Does CGS conversion from F to K work? assert_array_almost_equal(balmy.in_cgs(), YTQuantity(300, 'K'))
def test_temperature_conversions(): """ Test conversions between various supported temperatue scales. Also ensure we only allow compound units with temperature scales that have a proper zero point. """ from yt.units.unit_object import InvalidUnitOperation km = YTQuantity(1, 'km') balmy = YTQuantity(300, 'K') balmy_F = YTQuantity(80.33, 'degF') balmy_C = YTQuantity(26.85, 'degC') balmy_R = YTQuantity(540, 'R') assert_array_almost_equal(balmy.in_units('degF'), balmy_F) assert_array_almost_equal(balmy.in_units('degC'), balmy_C) assert_array_almost_equal(balmy.in_units('R'), balmy_R) balmy_view = balmy.ndarray_view() balmy.convert_to_units('degF') yield assert_true, balmy_view.base is balmy.base yield assert_array_almost_equal, np.array(balmy), np.array(balmy_F) balmy.convert_to_units('degC') yield assert_true, balmy_view.base is balmy.base yield assert_array_almost_equal, np.array(balmy), np.array(balmy_C) balmy.convert_to_units('R') yield assert_true, balmy_view.base is balmy.base yield assert_array_almost_equal, np.array(balmy), np.array(balmy_R) balmy.convert_to_units('degF') yield assert_true, balmy_view.base is balmy.base yield assert_array_almost_equal, np.array(balmy), np.array(balmy_F) yield assert_raises, InvalidUnitOperation, np.multiply, balmy, km # Does CGS conversion from F to K work? yield assert_array_almost_equal, balmy.in_cgs(), YTQuantity(300, 'K')
def test_unit_conversions(): """ Test operations that convert to different units or cast to ndarray """ from yt.units.yt_array import YTQuantity from yt.units.unit_object import Unit km = YTQuantity(1, 'km') km_in_cm = km.in_units('cm') cm_unit = Unit('cm') kpc_unit = Unit('kpc') assert_equal(km_in_cm, km) assert_equal(km_in_cm.in_cgs(), 1e5) assert_equal(km_in_cm.in_mks(), 1e3) assert_equal(km_in_cm.units, cm_unit) km_view = km.ndarray_view() km.convert_to_units('cm') assert_true(km_view.base is km.base) assert_equal(km, YTQuantity(1, 'km')) assert_equal(km.in_cgs(), 1e5) assert_equal(km.in_mks(), 1e3) assert_equal(km.units, cm_unit) km.convert_to_units('kpc') assert_true(km_view.base is km.base) assert_array_almost_equal_nulp(km, YTQuantity(1, 'km')) assert_array_almost_equal_nulp(km.in_cgs(), YTQuantity(1e5, 'cm')) assert_array_almost_equal_nulp(km.in_mks(), YTQuantity(1e3, 'm')) assert_equal(km.units, kpc_unit) assert_isinstance(km.to_ndarray(), np.ndarray) assert_isinstance(km.ndarray_view(), np.ndarray) dyne = YTQuantity(1.0, 'dyne') assert_equal(dyne.in_cgs(), dyne) assert_equal(dyne.in_cgs(), 1.0) assert_equal(dyne.in_mks(), dyne) assert_equal(dyne.in_mks(), 1e-5) assert_equal(str(dyne.in_mks().units), 'kg*m/s**2') assert_equal(str(dyne.in_cgs().units), 'cm*g/s**2') em3 = YTQuantity(1.0, 'erg/m**3') assert_equal(em3.in_cgs(), em3) assert_equal(em3.in_cgs(), 1e-6) assert_equal(em3.in_mks(), em3) assert_equal(em3.in_mks(), 1e-7) assert_equal(str(em3.in_mks().units), 'kg/(m*s**2)') assert_equal(str(em3.in_cgs().units), 'g/(cm*s**2)') em3_converted = YTQuantity(1545436840.386756, 'Msun/(Myr**2*kpc)') assert_equal(em3.in_base(unit_system="galactic"), em3) assert_array_almost_equal(em3.in_base(unit_system="galactic"), em3_converted) assert_equal(str(em3.in_base(unit_system="galactic").units), 'Msun/(Myr**2*kpc)') dimless = YTQuantity(1.0, "") assert_equal(dimless.in_cgs(), dimless) assert_equal(dimless.in_cgs(), 1.0) assert_equal(dimless.in_mks(), dimless) assert_equal(dimless.in_mks(), 1.0) assert_equal(str(dimless.in_cgs().units), "dimensionless")
def test_dimensionless_conversion(): a = YTQuantity(1, 'Zsun') b = a.in_units('Zsun') a.convert_to_units('Zsun') assert_true(a.units.base_value == metallicity_sun) assert_true(b.units.base_value == metallicity_sun)
def test_dimensionless_conversion(): a = YTQuantity(1, 'Zsun') b = a.in_units('Zsun') a.convert_to_units('Zsun') yield assert_true, a.units.base_value == metallicity_sun yield assert_true, b.units.base_value == metallicity_sun