def test_odb(): if mv.is_feature_available('odb') == 0: print( 'Skipping test_odb because ODB is not enabled in this Metview version' ) return db = mv.read(file_in_testdir('temp_u.odb')) assert (mv.type(db) == 'odb') # assert isinstance(db,mv.Odb) assert (mv.count(db) == 88) p_val = mv.values(db, 'p') assert (mv.count(p_val) == 88) assert (np.isclose(p_val[0], 98065.578125)) assert (np.isclose(p_val[87], 97651.2109375)) t_val = mv.values(db, 't') assert (mv.count(t_val) == 88) assert (np.isclose(t_val[0], 144700)) assert (np.isclose(t_val[87], 94700)) v_val = mv.values(db, 'val') assert (mv.count(v_val) == 88) assert (np.isclose(v_val[0], -4.62306786)) assert (np.isclose(v_val[87], -4.27525187))
def test_netcdf_multi_indexed_values(): nc = mv.read(file_in_testdir('xs_date_mv5.nc')) mv.setcurrent(nc, 't') assert (mv.attributes(nc)['long_name'] == "Temperature") assert (np.isclose(mv.values(nc, [0, 0, 0]), 234.7144)) assert (np.isclose(mv.values(nc, [0, 0, 4]), 237.4377)) assert (np.isclose(mv.values(nc, [0, 1, 0]), 248.7220)) assert (np.isclose(mv.values(nc, [0, 1, 1]), 249.3030))
def test_netcdf_multi_indexed_values_with_all(): nc = mv.read(file_in_testdir('xs_date_mv5.nc')) mv.setcurrent(nc, 't') assert (mv.attributes(nc)['long_name'] == "Temperature") v = mv.values(nc, [0, 0, 'all']) assert (len(v) == 64) assert (np.isclose(v[0], 234.714)) assert (np.isclose(v[63], 258.979)) v = mv.values(nc, [0, 'all', 0]) assert (len(v) == 5) assert (np.isclose(v[0], 234.714)) assert (np.isclose(v[4], 260.484))
def test_get_vector_from_grib(): v = mv.values(TEST_FIELDSET[0]) assert (isinstance(v, np.ndarray)) assert (v.dtype == np.dtype('float64')) assert (len(v) == 115680) assert (np.isclose(min(v), 206.93560791)) assert (np.isclose(max(v), 316.06060791))
def values(self): """ Property to access the values key of the GRIB file as a numpy array. :rtype: numpy.ndarray """ return metview.values(self)
def test_get_vector_float32_from_grib(): if supports_float32_vectors(): mv.vector_set_default_type('float32') v = mv.values(TEST_FIELDSET[0]) assert (isinstance(v, np.ndarray)) assert (v.dtype == np.dtype('float32')) assert (len(v) == 115680) assert (np.isclose(min(v), 206.93560791)) assert (np.isclose(max(v), 316.06060791)) mv.vector_set_default_type( 'float64') # reset to default type for the other tests
def test_fieldset_nonequality_operator(): a = mv.read(os.path.join(PATH, 'test.grib')) v = mv.values(a) v[10] = -29 v[13] = -31 v[15] = -33 b = a.set_values(v) diff = (a != b) assert (type(diff) == mv.Fieldset) vdiff = diff.values() assert (mv.sum(vdiff) == 3) # there should be exactly 3 differences assert (vdiff[5] == 0) assert (vdiff[10] == 1) assert (vdiff[11] == 0) assert (vdiff[12] == 0) assert (vdiff[13] == 1) assert (vdiff[14] == 0) assert (vdiff[15] == 1)
def test_fieldset_equality_operator(): a = mv.read(os.path.join(PATH, 'test.grib')) v = mv.values(a) v[10] = -29 v[13] = -31 v[15] = -33 b = a.set_values(v) same = (a == b) assert (type(same) == mv.Fieldset) vsame = same.values() assert (mv.sum(vsame) == len(vsame) - 3) # all but 3 should be the same assert (vsame[5] == 1) assert (vsame[10] == 0) assert (vsame[11] == 1) assert (vsame[12] == 1) assert (vsame[13] == 0) assert (vsame[14] == 1) assert (vsame[15] == 0)
def test_geopoints_nonequality_operator(): a = mv.read(file_in_testdir('t2m_3day.gpt')) assert (mv.type(a) == 'geopoints') v = mv.values(a) v[10] = -29 v[13] = -31 v[15] = -33 b = a.set_values(v) diff = (a != b) assert (mv.type(diff) == 'geopoints') vdiff = diff.values() assert (mv.sum(vdiff) == 3) # there should be exactly 3 differences assert (vdiff[5] == 0) assert (vdiff[10] == 1) assert (vdiff[11] == 0) assert (vdiff[12] == 0) assert (vdiff[13] == 1) assert (vdiff[14] == 0) assert (vdiff[15] == 1)
def test_geopoints_equality_operator(): a = mv.read(file_in_testdir('t2m_3day.gpt')) assert (mv.type(a) == 'geopoints') v = mv.values(a) v[10] = -29 v[13] = -31 v[15] = -33 b = a.set_values(v) same = (a == b) assert (mv.type(same) == 'geopoints') vsame = same.values() assert (mv.sum(vsame) == len(vsame) - 3) # all but 3 should be the same assert (vsame[5] == 1) assert (vsame[10] == 0) assert (vsame[11] == 1) assert (vsame[12] == 1) assert (vsame[13] == 0) assert (vsame[14] == 1) assert (vsame[15] == 0)
def test_odb_filter(): if mv.is_feature_available('odb') == 0: print( 'Skipping test_odb_filter because ODB is not enabled in this Metview version' ) return db = mv.read(file_in_testdir('temp_u.odb')) # assert isinstance(db,mv.Odb) assert (mv.count(db) == 88) db_res = mv.odb_filter({ 'odb_data': db, 'odb_query': "select p, t, val where val < -8", }) # assert isinstance(db_res,mv.Odb) assert (mv.count(db_res) == 6) val = mv.values(db_res, 'val') a = np.array([ -9.11442089, -8.16880512, -8.07200909, -8.06602955, -8.49743557, -8.21722794 ]) np.testing.assert_allclose(val, a)
def test_get_vector_from_multi_field_grib(): g = mv.read(os.path.join(PATH, 't_for_xs.grib')) v = mv.values(g) assert (isinstance(v, np.ndarray)) assert (v.shape == (6, 2664))