def test_array_unit_conversion_different_units_doesnt_modify_original(): a = DataArray(np.array([1., 2., 3.]), attrs={'units': 'km', 'foo': 'bar'}) a.to_units('m') assert (a.values == np.array([1., 2., 3.])).all() assert len(a.attrs) == 2 assert a.attrs['foo'] == 'bar' assert a.attrs['units'] == 'km'
def test_array_unit_conversion_different_units(): a = DataArray(np.array([1., 2., 3.]), attrs={'units': 'km', 'foo': 'bar'}) result = a.to_units('m') assert (result.values == np.array([1000., 2000., 3000.])).all() assert len(result.attrs) == 2 assert result.attrs['units'] == 'm' assert result.attrs['foo'] == 'bar'
def test_for_g_per_kg(): mass_mixing_ratio_co2 = 605e-3 molecular_weight_co2 = 48 expected_vol_mixing_ratio = [[[365.0670833333333e-6]]] co2 = DataArray(mass_mixing_ratio_co2 * np.ones((1, 1, 1)), dims=['longitude', 'latitude', 'mid_levels'], attrs=dict(units='g/kg')) vol_mixing_ratio = mass_to_volume_mixing_ratio( co2.to_units('g/g').values, molecular_weight=molecular_weight_co2) print(vol_mixing_ratio, expected_vol_mixing_ratio) assert np.all(np.isclose(vol_mixing_ratio, expected_vol_mixing_ratio))