コード例 #1
0
ファイル: test_flow_accumulator.py プロジェクト: stgl/landlab
def test_nmg_no_cell_area():
    y_of_node = (0, 1, 2, 2)
    x_of_node = (0, 0, -1, 1)
    nodes_at_link = ((1, 0), (2, 1), (3, 1))
    nmg = NetworkModelGrid((y_of_node, x_of_node), nodes_at_link)
    nmg.add_field("topographic__elevation", nmg.x_of_node + nmg.y_of_node, at="node")
    with pytest.raises(FieldError):
        FlowAccumulator(nmg)
コード例 #2
0
def test_nmg_no_cell_area():
    y_of_node = (0, 1, 2, 2)
    x_of_node = (0, 0, -1, 1)
    nodes_at_link = ((1, 0), (2, 1), (3, 1))
    nmg = NetworkModelGrid((y_of_node, x_of_node), nodes_at_link)
    nmg.add_field("topographic__elevation", nmg.x_of_node + nmg.y_of_node, at="node")
    with pytest.raises(FieldError):
        FlowAccumulator(nmg)
コード例 #3
0
ファイル: test_constructors.py プロジェクト: landlab/landlab
def test_network_from_file():
    file_strn = (
        "yx_of_node:\n"
        "    - [0, 1, 2, 2]\n"
        "    - [0, 0, -1, 1]\n"
        "links:\n"
        "    - [1, 0]\n"
        "    - [2, 1]\n"
        "    - [3, 1]\n"
        "xy_of_reference:\n"
        "    - 12345\n"
        "    - 678910\n"
        "axis_name:\n"
        "    - 'spam'\n"
        "    - 'eggs'\n"
        "axis_units:\n"
        "    - 'smoot'\n"
        "    - 'parsec'"
    )
    file_like = StringIO(file_strn)
    mg = NetworkModelGrid.from_file(file_like)

    assert_array_equal(mg.x_of_node, np.array([0.0, 0.0, -1.0, 1.0]))
    assert_array_equal(mg.y_of_node, np.array([0.0, 1.0, 2.0, 2.0]))
    assert_array_equal(mg.nodes_at_link, np.array([[0, 1], [2, 1], [1, 3]]))
    assert mg.axis_units == ("smoot", "parsec")
    assert mg.axis_name == ("spam", "eggs")
    assert mg.xy_of_reference == (12345, 678910)
コード例 #4
0
ファイル: test_constructors.py プロジェクト: justync/landlab
def test_network_from_file():
    file_strn = ("yx_of_node:\n"
                 "    - [0, 1, 2, 2]\n"
                 "    - [0, 0, -1, 1]\n"
                 "links:\n"
                 "    - [1, 0]\n"
                 "    - [2, 1]\n"
                 "    - [3, 1]\n"
                 "xy_of_reference:\n"
                 "    - 12345\n"
                 "    - 678910\n"
                 "axis_name:\n"
                 "    - 'spam'\n"
                 "    - 'eggs'\n"
                 "axis_units:\n"
                 "    - 'smoot'\n"
                 "    - 'parsec'")
    file_like = StringIO(file_strn)
    mg = NetworkModelGrid.from_file(file_like)

    assert_array_equal(mg.x_of_node, np.array([0., 0., -1., 1.]))
    assert_array_equal(mg.y_of_node, np.array([0., 1., 2., 2.]))
    assert_array_equal(mg.nodes_at_link, np.array([[0, 1], [2, 1], [1, 3]]))
    assert mg.axis_units == ("smoot", "parsec")
    assert mg.axis_name == ("spam", "eggs")
    assert mg.xy_of_reference == (12345, 678910)
コード例 #5
0
def test_network_from_file():
    file_like = StringIO(
        """
        yx_of_node:
            - [0, 1, 2, 2]
            - [0, 0, -1, 1]
        links:
            - [1, 0]
            - [2, 1]
            - [3, 1]
        xy_of_reference:
            - 12345
            - 678910
        xy_axis_name:
            - 'spam'
            - 'eggs'
        xy_axis_units:
            - 'smoot'
            - 'parsec'
        """
    )
    mg = NetworkModelGrid.from_file(file_like)

    assert_array_equal(mg.x_of_node, np.array([0.0, 0.0, -1.0, 1.0]))
    assert_array_equal(mg.y_of_node, np.array([0.0, 1.0, 2.0, 2.0]))
    assert_array_equal(mg.nodes_at_link, np.array([[0, 1], [2, 1], [1, 3]]))
    assert mg.axis_units == ("smoot", "parsec")
    assert mg.axis_name == ("spam", "eggs")
    assert mg.xy_of_reference == (12345, 678910)
コード例 #6
0
ファイル: test_constructors.py プロジェクト: landlab/landlab
def test_network_from_dict():
    params = {
        "yx_of_node": [(0, 1, 2, 2), (0, 0, -1, 1)],
        "links": ((1, 0), (2, 1), (3, 1)),
        "axis_name": ("spam", "eggs"),
        "axis_units": ("smoot", "parsec"),
        "xy_of_reference": (12345, 678910),
    }
    mg = NetworkModelGrid.from_dict(params)
    assert_array_equal(mg.x_of_node, np.array([0.0, 0.0, -1.0, 1.0]))
    assert_array_equal(mg.y_of_node, np.array([0.0, 1.0, 2.0, 2.0]))
    assert_array_equal(mg.nodes_at_link, np.array([[0, 1], [2, 1], [1, 3]]))
    assert mg.axis_units == ("smoot", "parsec")
    assert mg.axis_name == ("spam", "eggs")
    assert mg.xy_of_reference == (12345, 678910)
コード例 #7
0
ファイル: test_constructors.py プロジェクト: justync/landlab
def test_network_from_dict():
    params = {
        "yx_of_node": [(0, 1, 2, 2), (0, 0, -1, 1)],
        "links": ((1, 0), (2, 1), (3, 1)),
        "axis_name": ("spam", "eggs"),
        "axis_units": ("smoot", "parsec"),
        "xy_of_reference": (12345, 678910),
    }
    mg = NetworkModelGrid.from_dict(params)
    assert_array_equal(mg.x_of_node, np.array([0., 0., -1., 1.]))
    assert_array_equal(mg.y_of_node, np.array([0., 1., 2., 2.]))
    assert_array_equal(mg.nodes_at_link, np.array([[0, 1], [2, 1], [1, 3]]))
    assert mg.axis_units == ("smoot", "parsec")
    assert mg.axis_name == ("spam", "eggs")
    assert mg.xy_of_reference == (12345, 678910)
コード例 #8
0
ファイル: conftest.py プロジェクト: wilmerjimenez/landlab
def simple_network():
    y_of_node = (0, 1, 2, 2)
    x_of_node = (0, 0, -1, 1)
    nodes_at_link = ((1, 0), (2, 1), (3, 1))
    mg = NetworkModelGrid((y_of_node, x_of_node), nodes_at_link)
    return mg
コード例 #9
0
def test_pulser_defaults_equal():
    y_of_node = (0, 100, 200)
    x_of_node = (0, 0, 100)
    nodes_at_link = ((1, 0), (2, 1), (1, 2))
    #create network model grid
    grid = NetworkModelGrid((y_of_node, x_of_node), nodes_at_link)
    grid.at_link["channel_width"] = np.full(grid.number_of_links, 1.0)  # m
    grid.at_link["channel_slope"] = np.full(grid.number_of_links, .01)  # m / m
    grid.at_link["reach_length"] = np.full(grid.number_of_links, 100.0)  # m
    
    
    # instantiate pulse
    make_pulse = SedimentPulser(grid)
    
    # obtain values for all defaults of initializer
    default_rho_sediment = make_pulse._rho_sediment
    default_std_dev = make_pulse._std_dev
    default_time_to_pulse = make_pulse._time_to_pulse
    #assign d50 of lognormal sediment distribution 
    d50 = 1.5
    
    # "run model" for single time step (will pulse once)
    for time in range(1):
        # call pulser
        parcels = make_pulse(d50, time)
    
    # obtain values for all defaults of call
    # can we access these somehow from 'make_pulse' so they aren't hard-coded?
    default_n_parcels = 100 
    default_link_to_pulse = 0
    default_abrasion_rate = 0.0
    default_time_arrival = 0.0 #for this case we only have 1 time step 
    
    # check values-----------
    np.testing.assert_equal(
        parcels.dataset.element_id.values,
        np.expand_dims(np.full(n_parcels, default_link_to_pulse),1)
    )
    
    np.testing.assert_equal(
        parcels.dataset.starting_link.values,
        np.expand_dims(np.full(n_parcels, default_link_to_pulse),1)
    )
    
    # test 
    np.testing.assert_equal(
        parcels.dataset.abrasion_rate.values,
        np.expand_dims(np.full(n_parcels, default_abrasion_rate),1)
    )
    
    # test starting location
    np.testing.assert_equal(
        parcels.dataset.time_arrival_in_link.values,
        np.expand_dims(np.full(n_parcels, default_time_arrival),1)
    )
    
    # test D distribution
    ks_test_stat, pval = scipy.stats.kstest(
        np.ravel(parcels.dataset.D),
        "lognorm",
        scipy.stats.lognorm.fit(np.ravel(parcels.dataset.D))
    )
    
    if pval < 0.05:
        raise ValueError('D distribution not lognormal')