Example #1
0
def test_non_integer_nodeids(request):

    store = pd.HDFStore(
        os.path.join(os.path.dirname(__file__), 'osm_sample.h5'), "r")
    nodes, edges = store.nodes, store.edges

    # convert to string!
    nodes.index = nodes.index.astype("str")
    edges["from"] = edges["from"].astype("str")
    edges["to"] = edges["to"].astype("str")

    net = pdna.Network(nodes.x, nodes.y, edges["from"], edges.to,
                       edges[["weight"]])

    def fin():
        store.close()

    request.addfinalizer(fin)

    # test accuracy compared to pandas functions
    ssize = 50
    r = random_data(ssize)
    connected_nodes = get_connected_nodes(net)
    random_nodes = random_connected_nodes(net, ssize)
    net.set(random_nodes, variable=r)

    s = net.aggregate(100000, type="count").loc[connected_nodes]
    assert list(nodes.index), list(s.index)
Example #2
0
def make_network(name, weight_col, max_distance):
    st = pd.HDFStore(os.path.join(misc.data_dir(), name), "r")
    nodes, edges = st.nodes, st.edges
    net = pdna.Network(nodes["x"], nodes["y"], edges["from"], edges["to"],
                       edges[[weight_col]])
    net.precompute(max_distance)
    return net
Example #3
0
def sample_osm(request):
    store = pd.HDFStore(
        os.path.join(os.path.dirname(__file__), 'osm_sample.h5'), "r")
    nodes, edges = store.nodes, store.edges
    net = pdna.Network(nodes.x, nodes.y, edges["from"], edges.to,
                       edges[["weight"]])

    # try again to test for crash
    with pytest.raises(AssertionError):
        net = pdna.Network(nodes.x, nodes.y, edges["from"], edges.to,
                           edges[["weight"]])

    net.precompute(2000)

    def fin():
        store.close()

    request.addfinalizer(fin)

    return net
Example #4
0
def make_network(edge_name, node_name, weight_col, max_distance):
    if edge_name == node_name:
        st = pd.HDFStore(os.path.join(DATA_DIR, edge_name), "r")
        nodes, edges = st.nodes, st.edges
    else:
        edges = pd.read_csv(os.path.join(DATA_DIR, edge_name))
        nodes = pd.read_csv(os.path.join(DATA_DIR, node_name), index_col="ID")
    net = pdna.Network(nodes["x"], nodes["y"], edges["from"], edges["to"],
                       edges[[weight_col]])
    net.precompute(max_distance)
    return net
Example #5
0
def second_sample_osm(request):
    store = pd.HDFStore(
        os.path.join(os.path.dirname(__file__), 'osm_sample.h5'), "r")
    nodes, edges = store.nodes, store.edges
    net = pdna.Network(nodes.x, nodes.y, edges["from"], edges.to,
                       edges[["weight"]])

    net.precompute(2000)

    def fin():
        store.close()
    request.addfinalizer(fin)

    return net
    # allow test file to be passed as an argument
    storef = sys.argv[1]
else:
    # if no argument provided look for it in the test data
    storef = os.path.normpath(os.path.join(
        os.path.dirname(os.path.abspath(__file__)),
        '../pandana/tests/osm_sample.h5'))

if not os.path.isfile(storef):
    raise IOError('Could not find test input file: {!r}'.format(storef))

print('Building network from file: {!r}'.format(storef))

store = pd.HDFStore(storef, "r")
nodes, edges = store.nodes, store.edges
net = pdna.Network(nodes.x, nodes.y, edges["from"], edges.to,
                   edges[["weight"]])
store.close()
print()

# Demonstrate shortest path code - the largest connected subgraph here has 477 nodes,
# per the unit tests

net.set(pd.Series(net.node_ids))
s = net.aggregate(10000, type='count')
connected_nodes = s[s==477]

n = 10000
nodes_a = np.random.choice(connected_nodes.index, n)
nodes_b = np.random.choice(connected_nodes.index, n)

print('Shortest path 1:')