Exemplo n.º 1
0
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)
Exemplo n.º 2
0
def test_class_():
    # these generate warnings, but if they pass then they show that the conversion
    # from class_ to class is working
    gg = mv.read(file_in_testdir('test.grib'))
    c = mv.read(data=gg, class_='od')
    assert (mv.type(c) == 'fieldset')
    c = mv.read({'data': gg, 'class_': 'od'})
    assert (mv.type(c) == 'fieldset')
    c = mv.read({'data': gg, 'class': 'od'})
    assert (mv.type(c) == 'fieldset')
Exemplo n.º 3
0
def test_mvl_ml2hPa():
    ml_data = mv.read(file_in_testdir('ml_data.grib'))
    assert mv.type(ml_data) == 'fieldset'
    ml_t = mv.read(data=ml_data, param='t')
    ml_lnsp = mv.read(data=ml_data, param='lnsp')
    desired_pls = [1000, 900, 850, 500, 300, 100, 10, 1, 0.8, 0.5, 0.3, 0.1]
    pl_data = mv.mvl_ml2hPa(ml_lnsp, ml_t, desired_pls)
    assert mv.type(pl_data) == 'fieldset'
    pls = mv.grib_get_long(pl_data, 'level')
    lev_types = mv.grib_get_string(pl_data, 'typeOfLevel')
    lev_divisors = [1 if x == 'isobaricInhPa' else 100 for x in lev_types]
    pl_in_hpa = [a / b for a, b in zip(pls, lev_divisors)]
    assert (pl_in_hpa == desired_pls)
Exemplo n.º 4
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 6
0
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))
Exemplo n.º 7
0
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)
Exemplo n.º 8
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)
Exemplo n.º 9
0
def test_cross_section_data():
    grib = mv.read(os.path.join(PATH, 't_for_xs.grib'))
    xs_data = mv.mcross_sect(
        line=[59.9, -180, -13.5, 158.08],
        data=grib,
    )
    # the result of this should be a netCDF variable
    assert mv.type(xs_data) == 'netcdf'
    mv.setcurrent(xs_data, 't')
    assert mv.dimension_names(xs_data) == ['time', 'nlev', 'lon']
    assert np.isclose(mv.value(xs_data, 0), 230.39156)
    xs_data_x2 = xs_data * 2
    assert np.isclose(mv.value(xs_data_x2, 0), 460.7831)
Exemplo n.º 10
0
def test_odb_to_dataframe_2():
    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('small_odb.odb'))
    assert (mv.type(db) == 'odb')

    df = db.to_dataframe()
    assert (isinstance(df, pd.DataFrame))

    assert (df.shape == (273, 54))
    dt1_loc = df.iloc[0]['an_depar@body']
    assert (np.isclose(dt1_loc, -0.123831))
    dt1_loc = df.iloc[0]['class@desc']
    assert (dt1_loc.strip() == 'rd')  # strings from ODB are padded with spaces
    dt1_loc = df.iloc[20]['expver@desc']
    assert (dt1_loc.strip() == 'fgww'
            )  # strings from ODB are padded with spaces
    dt1_loc = df.iloc[20]['sensor@hdr']  # test a constant integer field
    assert (dt1_loc == 3)
Exemplo n.º 11
0
def test_odb_to_dataframe_1():
    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')

    df = db.to_dataframe()
    assert (isinstance(df, pd.DataFrame))

    assert (df.shape == (88, 3))
    dt1_loc = df.iloc[0]['p']
    assert (np.isclose(dt1_loc, 98065.6))
    dt1_loc = df.iloc[5]['t']
    assert (np.isclose(dt1_loc, 144700))
    dt1_loc = df.iloc[50]['t']
    assert (np.isclose(dt1_loc, 103200))
    dt1_loc = df.iloc[29]['val']
    assert (np.isclose(dt1_loc, -6.06863))
    dt1_loc = df.iloc[87]['val']
    assert (np.isclose(dt1_loc, -4.27525))
Exemplo n.º 12
0
def test_pass_dataset_as_arg():
    grib = mv.read(file_in_testdir('t_for_xs.grib'))
    x = grib.to_dataset()
    fs = mv.mean(x * 2)  # *2 is done by xarray, mean is done by Metview
    assert (mv.type(fs) == 'fieldset')
    assert (len(fs) == 1)
Exemplo n.º 13
0
def test_dataset_to_fieldset():
    grib = mv.read(file_in_testdir('t_for_xs.grib'))
    x = grib.to_dataset()
    f = mv.dataset_to_fieldset(x)
    assert (mv.type(f) == 'fieldset')
    assert (len(f) == 6)
Exemplo n.º 14
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)
Exemplo n.º 15
0
def test_zero_length_vector_from_numpy():
    a = np.array([])
    assert (mv.type(a) == 'vector')
    assert (mv.count(a) == 0)
Exemplo n.º 16
0
def test_type():
    out = mv.type(TEST_FIELDSET)
    assert out == 'fieldset'
Exemplo n.º 17
0
def test_geopoints_fieldset_operator():
    diff = TEST_FIELDSET - TEST_GEOPOINTS
    assert mv.type(diff) == 'geopoints'
Exemplo n.º 18
0
def test_push_nil():
    n = mv.nil()
    assert (n is None)
    assert (mv.type(n) == 'nil')
Exemplo n.º 19
0
def test_sqrt_geopoints():
    sqrt_out = mv.sqrt(TEST_GEOPOINTS)
    maximum = mv.maxvalue(sqrt_out)
    assert mv.type(sqrt_out) == 'geopoints'
    assert np.isclose(maximum, MAX_SQRT_GPT)
Exemplo n.º 20
0
def test_filter_gpt():
    filter_out = TEST_GEOPOINTS.filter(TEST_GEOPOINTS >= 280)
    assert mv.type(filter_out) == 'geopoints'
    assert mv.count(filter_out) == 38
Exemplo n.º 21
0
def test_read_gpt():
    gpt = mv.read(file_in_testdir('t2m_3day.gpt'))
    assert (mv.type(gpt) == 'geopoints')
    assert (mv.count(gpt) == 45)
Exemplo n.º 22
0
def test_read_bufr():
    bufr = mv.read(file_in_testdir('obs_3day.bufr'))
    assert (mv.type(bufr) == 'observations')