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_obsfilter(): bufr = mv.read(file_in_testdir('obs_3day.bufr')) # test two styles of passing parameters gpt1 = mv.obsfilter({ 'data': bufr, 'parameter': '012004', 'output': "geopoints" }) gpt2 = mv.obsfilter(data=bufr, parameter='012004', output="geopoints") assert (mv.type(gpt1) == 'geopoints') assert (mv.count(gpt1) == 45) assert (mv.type(gpt2) == 'geopoints') assert (mv.count(gpt2) == 45)
def test_set_vector_float32_from_numpy_array(): if supports_float32_vectors(): r = np.arange(1, 21, dtype=np.float32) assert (mv.type(r) == 'vector') assert (mv.dtype(r) == 'float32') assert (mv.count(r) == 20) assert (mv.maxvalue(r) == 20)
def test_simple_vector_with_nans(): a = np.array([1, np.nan, 2, 3]) n = -a assert (mv.count(a) == 4) assert (mv.sum(a) == 6) # missing vals Python->Macro # seems that comparing numPy arrays that have NaNs in them is not # so straightforward, but this works: np.testing.assert_array_equal(mv.neg(a), n) # missing vals Macro->Python
def test_read_gptset(): gpts = mv.read(file_in_testdir('geopointset_1.gpts')) assert (mv.type(gpts) == 'geopointset') assert (mv.count(gpts) == 6) gpt1 = gpts[0] assert (mv.type(gpt1) == 'geopoints') assert (mv.count(gpt1) == 11) assert (mv.metadata(gpt1) is None) gpt2 = gpts[1] assert (mv.type(gpt2) == 'geopoints') assert (mv.count(gpt2) == 1) # check the metadata md = mv.metadata(gpt2) assert (isinstance(md, dict)) assert (md['mykey1'] == 'val1') assert (md['mykey2'] == 5) # check that it is iterable counts = [mv.count(c) for c in gpts] assert (counts == [11.0, 1.0, 44.0, 11.0, 1.0, 44.0]) # test the filtering bad_filter = mv.filter(gpts, {'badkey': 7}) assert (bad_filter is None) good_filter = mv.filter(gpts, {'mykey2': 5}) assert (mv.type(good_filter) == 'geopointset') assert (mv.count(good_filter) == 1) assert (mv.count(good_filter[0]) == 1) lats = good_filter[0].latitudes() assert (len(lats) == 1) assert (lats[0] == 60.82)
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_filter_gpt(): filter_out = TEST_GEOPOINTS.filter(TEST_GEOPOINTS >= 280) assert mv.type(filter_out) == 'geopoints' assert mv.count(filter_out) == 38
def test_read_gpt(): gpt = mv.read(file_in_testdir('t2m_3day.gpt')) assert (mv.type(gpt) == 'geopoints') assert (mv.count(gpt) == 45)
def test_count(): out = mv.count(TEST_FIELDSET) assert out == 1
def test_zero_length_vector_from_numpy(): a = np.array([]) assert (mv.type(a) == 'vector') assert (mv.count(a) == 0)
def test_set_vector_from_numpy_array(): r = np.arange(1, 21, dtype=np.float64) assert (mv.type(r) == 'vector') assert (mv.dtype(r) == 'float64') assert (mv.count(r) == 20) assert (mv.maxvalue(r) == 20)