コード例 #1
0
ファイル: test_generic.py プロジェクト: FlowAlive/mikeio
def test_extract_items(tmpdir):

    infile = "tests/testdata/oresund_vertical_slice.dfsu"
    outfile = os.path.join(tmpdir.dirname, "extracted_vertical_slice.dfsu")

    extract(infile, outfile, items="Temperature")
    extracted = mikeio.read(outfile)
    assert extracted.n_items == 1

    extract(infile, outfile, items=[0, 2])
    extracted = mikeio.read(outfile)
    assert extracted.n_items == 2

    extract(infile, outfile, items=["Salinity", 1])
    extracted = mikeio.read(outfile)
    assert extracted.n_items == 2

    with pytest.raises(Exception):
        # must be unique
        extract(infile, outfile, items=["Salinity", 2])

    with pytest.raises(Exception):
        # no negative numbers
        extract(infile, outfile, items=[0, 2, -1])

    with pytest.raises(Exception):
        extract(infile, outfile, items=[0, "not_an_item"])
コード例 #2
0
ファイル: test_generic.py プロジェクト: halvgaard/mikeio
def test_extract_non_equidistant(tmpdir):

    infile = "tests/testdata/da_diagnostic.dfs0"
    outfile = os.path.join(tmpdir.dirname, "diagnostic_subset.dfs0")

    extract(infile, outfile, start="2017-10-27 01:58", end="2017-10-27 04:32")
    extracted = mikeio.read(outfile)
    assert extracted.n_timesteps == 16
    assert extracted.time[0].hour == 2

    extract(infile, outfile, end=3600.0)
    extracted = mikeio.read(outfile)
    assert extracted.n_timesteps == 7
    assert extracted.time[0].hour == 0
    assert extracted.time[-1].minute == 0

    extract(infile, outfile, start=1800.0, end=237981231.232)
    extracted = mikeio.read(outfile)
    assert extracted.n_timesteps > 0

    extract(infile, outfile, "2017-10-27,2017-10-28")
    extracted = mikeio.read(outfile)
    assert extracted.n_timesteps > 0

    with pytest.raises(Exception):
        extract(infile, outfile, start=7200.0, end=1800.0)
コード例 #3
0
ファイル: test_generic.py プロジェクト: FlowAlive/mikeio
def test_extract_equidistant(tmpdir):

    infile = "tests/testdata/waves.dfs2"
    outfile = os.path.join(tmpdir.dirname, "waves_subset.dfs2")

    extract(infile, outfile, start=1, end=-1)
    orig = mikeio.read(infile)
    extracted = mikeio.read(outfile)
    assert extracted.n_timesteps == orig.n_timesteps - 1
    assert extracted.time[0] == orig.time[1]
コード例 #4
0
ファイル: test_xyz.py プロジェクト: mucpsing/mikeio
def test_write_xyz(tmpdir):
    outfilename = tmpdir.join("foo.xyz")
    filename = "tests/testdata/positions.xyz"

    df1 = mikeio.read(filename)

    df1.to_xyz(outfilename)

    df2 = mikeio.read(outfilename)

    assert df1.shape == df2.shape
コード例 #5
0
ファイル: test_aggregator.py プロジェクト: mucpsing/mikeio
def test_dfs2_to_dfs1_x_direction(tmpdir):

    dfs2file = "tests/testdata/eq.dfs2"

    ds2 = mikeio.read(dfs2file)

    assert ds2.data[0].shape == (25, 10, 20)

    dfs1file1 = os.path.join(tmpdir.dirname, "eq_ax_x.dfs1")
    dfs2todfs1(dfs2file, dfs1file1, axis=2)

    ds1 = mikeio.read(dfs1file1)

    assert ds1.data[0].shape == (25, 10)
コード例 #6
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_diff_dfsu(tmpdir):

    infilename_a = "tests/testdata/HD2D.dfsu"
    infilename_b = "tests/testdata/HD2D.dfsu"
    outfilename = os.path.join(tmpdir.dirname, "diff.dfsu")
    mikeio.generic.diff(infilename_a, infilename_b, outfilename)

    org = mikeio.read(infilename_a)

    diffed = mikeio.read(outfilename)

    expected = 0.0
    scaledvalue = diffed.data[0][0]
    assert scaledvalue == pytest.approx(expected)
コード例 #7
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_multiply_constant(tmpdir):

    infilename = "tests/testdata/random.dfs0"
    outfilename = os.path.join(tmpdir.dirname, "mult.dfs0")
    scale(infilename, outfilename, factor=1.5)

    org = mikeio.read(infilename)

    scaled = mikeio.read(outfilename)

    orgvalue = org.data[0][0]
    expected = orgvalue * 1.5
    scaledvalue = scaled.data[0][0]
    assert scaledvalue == pytest.approx(expected)
コード例 #8
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_add_constant(tmpdir):

    infilename = "tests/testdata/random.dfs0"
    outfilename = os.path.join(tmpdir.dirname, "add.dfs0")
    scale(infilename, outfilename, offset=100.0)

    org = mikeio.read(infilename)

    scaled = mikeio.read(outfilename)

    orgvalue = org.data[0][0]
    expected = orgvalue + 100.0
    scaledvalue = scaled.data[0][0]
    assert scaledvalue == pytest.approx(expected)
コード例 #9
0
ファイル: test_aggregator.py プロジェクト: mucpsing/mikeio
def test_dfs2_to_dfs1_y_direction(tmpdir):

    dfs2file = "tests/testdata/eq.dfs2"

    ds2 = mikeio.read(dfs2file)

    assert ds2.data[0].shape == (25, 10, 20)  # t, y, x

    dfs1file1 = os.path.join(tmpdir.dirname, "eq_ax_y.dfs1")
    dfs2todfs1(dfs2file, dfs1file1)  # default aggregation is over y axis

    ds1 = mikeio.read(dfs1file1)

    assert ds1.data[0].shape == (25, 20)
コード例 #10
0
ファイル: test_aggregator.py プロジェクト: mucpsing/mikeio
def test_dfsu_to_dfs0(tmpdir):

    dfsufile = "tests/testdata/HD2D.dfsu"

    ds_in = mikeio.read(dfsufile)

    assert ds_in.data[0].shape == (9, 884)

    dfs0file1 = os.path.join(tmpdir.dirname, "HD2D_mean.dfs0")
    dfstodfs0(dfsufile, dfs0file1)

    ds0 = mikeio.read(dfs0file1)

    assert ds0.data[0].shape == (9, )
コード例 #11
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_linear_transform_dfsu(tmpdir):

    infilename = "tests/testdata/HD2D.dfsu"
    outfilename = os.path.join(tmpdir.dirname, "linear.dfsu")
    scale(infilename, outfilename, offset=-20.0, factor=1.5)

    org = mikeio.read(infilename)

    scaled = mikeio.read(outfilename)

    orgvalue = org.data[0][0]
    expected = orgvalue * 1.5 - 20.0
    scaledvalue = scaled.data[0][0]
    assert scaledvalue == pytest.approx(expected)
コード例 #12
0
ファイル: test_generic.py プロジェクト: FlowAlive/mikeio
def test_extract_non_equidistant(tmpdir):

    infile = "tests/testdata/da_diagnostic.dfs0"
    outfile = os.path.join(tmpdir.dirname, "diagnostic_subset.dfs0")

    extract(infile, outfile, start="2017-10-27 01:58", end="2017-10-27 04:32")
    extracted = mikeio.read(outfile)
    assert extracted.n_timesteps == 16
    assert extracted.time[0].hour == 2

    extract(infile, outfile, end=3600.0)
    extracted = mikeio.read(outfile)
    assert extracted.n_timesteps == 7
    assert extracted.time[0].hour == 0
    assert extracted.time[-1].minute == 0
コード例 #13
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_sum_dfsu(tmpdir):

    infilename_a = "tests/testdata/HD2D.dfsu"
    infilename_b = "tests/testdata/HD2D.dfsu"
    outfilename = os.path.join(tmpdir.dirname, "sum.dfsu")
    mikeio.generic.sum(infilename_a, infilename_b, outfilename)

    org = mikeio.read(infilename_a)

    summed = mikeio.read(outfilename)

    orgvalue = org.data[0][0]
    expected = orgvalue * 2
    scaledvalue = summed.data[0][0]
    assert scaledvalue == pytest.approx(expected)
コード例 #14
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_sum_itself(tmpdir):

    infilename_1 = "tests/testdata/gebco_sound.dfs2"
    infilename_2 = "tests/testdata/gebco_sound.dfs2"
    outfilename = os.path.join(tmpdir.dirname, "diff.dfs2")
    
    sum(infilename_1, infilename_2, outfilename)

    org = mikeio.read(infilename_1)

    assert np.isnan(org["Elevation"][0][0,-1])

    summed = mikeio.read(outfilename)

    assert np.isnan(summed["Elevation"][0][0,-1])
コード例 #15
0
ファイル: test_dfs0.py プロジェクト: yangzhangfeng/mikeio
def test_write_from_data_frame_different_types(tmpdir):

    df = pd.read_csv(
        "tests/testdata/co2-mm-mlo.csv",
        parse_dates=True,
        index_col="Date",
        na_values=-99.99,
    )

    df = df[["Average", "Trend"]]

    filename = os.path.join(tmpdir.dirname, "dataframe.dfs0")

    items = [
        ItemInfo("Average", EUMType.Concentration, EUMUnit.gram_per_meter_pow_3),
        ItemInfo("Trend", EUMType.Undefined),
    ]

    Dfs0.from_dataframe(df, filename, items=items)

    ds = mikeio.read(filename)

    assert len(ds.items) == 2
    assert ds.items[0].type == EUMType.Concentration
    assert ds.items[0].unit == EUMUnit.gram_per_meter_pow_3

    assert ds.items[1].type == EUMType.Undefined
    assert ds.items[1].unit == EUMUnit.undefined
コード例 #16
0
ファイル: test_main.py プロジェクト: robindang0573/mikeio
def test_read_dfs1_generic_read():

    filename = r"tests/testdata/random.dfs1"

    res = mikeio.read(filename)
    data = res.data[0]
    assert data.shape == (100, 3)  # time, x
コード例 #17
0
ファイル: test_main.py プロジェクト: yangzhangfeng/mikeio
def test_read_dfsu_generic_read():

    filename = "tests/testdata/HD2D.dfsu"

    ds = mikeio.read(filename)

    assert len(ds) == 4
コード例 #18
0
ファイル: test_main.py プロジェクト: famiuer/mikeio
def test_read_dfsu_generic_read_single_item_number():

    filename = "tests/testdata/HD2D.dfsu"

    ds = mikeio.read(filename, item_numbers=[1])

    assert len(ds) == 1
コード例 #19
0
ファイル: test_dfs0.py プロジェクト: Take-Over-Inc/mikeio
def test_write_from_data_frame_monkey_patched_data_value_not_default(tmpdir):

    df = pd.read_csv(
        "tests/testdata/co2-mm-mlo.csv",
        parse_dates=True,
        index_col="Date",
        na_values=-99.99,
    )

    filename = os.path.join(tmpdir.dirname, "dataframe.dfs0")

    items = []
    for col in df.columns:
        items.append(
            ItemInfo(col,
                     EUMType.Concentration,
                     EUMUnit.gram_per_meter_pow_3,
                     data_value_type="MeanStepBackward"))

    df.to_dfs0(filename, items=items)

    ds = mikeio.read(filename)

    assert len(ds.items) == 5
    assert ds.items[0].type == EUMType.Concentration
    assert ds.items[0].unit == EUMUnit.gram_per_meter_pow_3
    assert np.isnan(ds["Average"][3])
    assert ds.time[0].year == 1958
    assert ds.items[0].data_value_type == 3
コード例 #20
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_diff_itself(tmpdir):

    infilename_1 = "tests/testdata/gebco_sound.dfs2"
    infilename_2 = "tests/testdata/gebco_sound.dfs2"
    outfilename = os.path.join(tmpdir.dirname, "diff.dfs2")
    
    diff(infilename_1, infilename_2, outfilename)

    org = mikeio.read(infilename_1)

    assert np.isnan(org["Elevation"][0][0,-1])

    diffed = mikeio.read(outfilename)

    diffedvalue = diffed["Elevation"][0, 0, 0]
    assert diffedvalue == pytest.approx(0.0)
    assert np.isnan(diffed["Elevation"][0][0,-1])
コード例 #21
0
ファイル: test_main.py プロジェクト: robindang0573/mikeio
def test_read_dfs0_generic_read():

    filename = r"tests/testdata/random.dfs0"

    res = mikeio.read(filename)
    data = res.data

    assert len(data) == 2
コード例 #22
0
ファイル: test_main.py プロジェクト: robindang0573/mikeio
def test_read_dfs2_generic_read():

    filename = r"tests/testdata/random.dfs2"

    res = mikeio.read(filename, item_names=["testing water level"])
    data = res.data[0]
    assert data[0, 11, 0] == 0
    assert data.shape == (3, 100, 2)  # time, y, x
コード例 #23
0
ファイル: test_main.py プロジェクト: robindang0573/mikeio
def test_read_dfsu_generic_read():

    filename = "tests/testdata/HD2D.dfsu"

    (data, t, names) = mikeio.read(filename)

    assert len(data) == 4
    assert len(names) == 4
コード例 #24
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_concat_overlapping(tmpdir):
    infilename_a = "tests/testdata/tide1.dfs1"
    infilename_b = "tests/testdata/tide2.dfs1"
    outfilename = os.path.join(tmpdir.dirname, "concat.dfs1")

    mikeio.generic.concat([infilename_a, infilename_b], outfilename)

    ds = mikeio.read(outfilename)
    assert len(ds.time) == 145
コード例 #25
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_multiply_constant_single_item_name(tmpdir):

    infilename = "tests/testdata/wind_north_sea.dfsu"
    outfilename = os.path.join(tmpdir.dirname, "multname.dfsu")
    scale(infilename, outfilename, factor=1.5, items=["Wind speed"])

    org = mikeio.read(infilename)

    scaled = mikeio.read(outfilename)

    orgvalue_speed = org["Wind speed"][0, 0]
    expected_speed = orgvalue_speed * 1.5
    scaledvalue_speed = scaled["Wind speed"][0, 0]
    assert scaledvalue_speed == pytest.approx(expected_speed)

    orgvalue_dir = org["Wind direction"][0, 0]
    expected_dir = orgvalue_dir
    scaledvalue_dir = scaled["Wind direction"][0, 0]
    assert scaledvalue_dir == pytest.approx(expected_dir)
コード例 #26
0
def test_multiply_constant_single_item_number(tmpdir):

    infilename = "tests/testdata/wind_north_sea.dfsu"
    outfilename = os.path.join(tmpdir.dirname, "mult.dfsu")
    scale(infilename, outfilename, factor=1.5, item_numbers=[0])

    org = mikeio.read(infilename)

    scaled = mikeio.read(outfilename)

    orgvalue_speed = org.data[0][0][0]
    expected_speed = orgvalue_speed * 1.5
    scaledvalue_speed = scaled.data[0][0][0]
    assert scaledvalue_speed == pytest.approx(expected_speed)

    orgvalue_dir = org.data[1][0][0]
    expected_dir = orgvalue_dir
    scaledvalue_dir = scaled.data[1][0][0]
    assert scaledvalue_dir == pytest.approx(expected_dir)
コード例 #27
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_add_constant_delete_values_unchanged(tmpdir):

    infilename = "tests/testdata/gebco_sound.dfs2"
    outfilename = os.path.join(tmpdir.dirname, "adj.dfs2")
    scale(infilename, outfilename, offset=-2.1, items=["Elevation"])

    org = mikeio.read(infilename)

    scaled = mikeio.read(outfilename)

    orgvalue = org["Elevation"][0, 0, 0]
    scaledvalue = scaled["Elevation"][0, 0, 0]
    assert scaledvalue == pytest.approx(orgvalue - 2.1)

    orgvalue = org["Elevation"][0, 100, 0]
    assert np.isnan(orgvalue)

    scaledvalue = scaled["Elevation"][0, 100, 0]
    assert np.isnan(scaledvalue)
コード例 #28
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_concat_three_files(tmpdir):
    infiles = [
        "tests/testdata/tide1.dfs1",
        "tests/testdata/tide2.dfs1",
        "tests/testdata/tide4.dfs1",
    ]
    outfilename = os.path.join(tmpdir.dirname, "concat.dfs1")

    mikeio.generic.concat(infiles, outfilename)

    ds = mikeio.read(outfilename)
    assert len(ds.time) == (5 * 48 + 1)
コード例 #29
0
ファイル: test_generic.py プロジェクト: mucpsing/mikeio
def test_multiply_constant_delete_values_unchanged_2(tmpdir):

    infilename = "tests/testdata/random_two_item.dfs2"
    outfilename = os.path.join(tmpdir.dirname, "adj.dfs2")

    item_name = "testing water level"

    scale(infilename, outfilename, factor=1000.0, items=[item_name])

    org = mikeio.read(infilename)

    scaled = mikeio.read(outfilename)

    orgvalue = org[item_name][0, 0, 0]
    scaledvalue = scaled[item_name][0, 0, 0]
    assert scaledvalue == pytest.approx(orgvalue * 1000.0)

    orgvalue = org[item_name][0, 10, 0]
    assert np.isnan(orgvalue)

    scaledvalue = scaled[item_name][0, 10, 0]
    assert np.isnan(scaledvalue)
コード例 #30
0
ファイル: test_dfs0.py プロジェクト: robindang0573/mikeio
def test_create_from_data_frame(tmpdir):

    df = pd.read_csv(
        "tests/testdata/co2-mm-mlo.csv",
        parse_dates=True,
        index_col="Date",
        na_values=-99.99,
    )

    filename = os.path.join(tmpdir.dirname, "dataframe.dfs0")
    Dfs0.from_dataframe(
        df, filename, itemtype=EUMType.Concentration, unit=EUMUnit.gram_per_meter_pow_3
    )  # Could not find better type

    ds = mikeio.read(filename)

    assert len(ds.items) == 5
    assert ds.items[0].type == EUMType.Concentration
    assert ds.items[0].unit == EUMUnit.gram_per_meter_pow_3