def test_app_on_undirected_graph( p2p_project_undirected_graph, sssp_result, pagerank_result, bfs_result, wcc_result, lpa_result, triangles_result, kshell_result, ): # sssp ctx1 = sssp(p2p_project_undirected_graph, src=6) r1 = (ctx1.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) r1[r1 == 1.7976931348623157e308] = float( "inf") # replace limit<double>::max with inf assert np.allclose(r1, sssp_result["undirected"]) assert np.allclose( ctx1.to_dataframe({ "node": "v.id", "r": "r" }, vertex_range={ "begin": 1, "end": 4 }).sort_values(by=["node"]).to_numpy(), [[1.0, 31.0], [2.0, 39.0], [3.0, 78.0]], ) assert np.allclose( sorted(ctx1.to_numpy("r", vertex_range={ "begin": 1, "end": 4 })), [31.0, 39.0, 78.0], ) # pagerank (only work on undirected graph) ctx2 = pagerank(p2p_project_undirected_graph, delta=0.85, max_round=10) r2 = (ctx2.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) assert np.allclose(r2, pagerank_result["undirected"]) ctx3 = pagerank(p2p_project_undirected_graph, 0.85, 10) r3 = (ctx3.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) assert np.allclose(r3, pagerank_result["undirected"]) # r4 = pagerank(arrow_project_graph, 10, 0.85) # check max_round=10 # assert r4 is not None ctx5 = pagerank(p2p_project_undirected_graph, "0.85", "10") r5 = (ctx5.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) assert np.allclose(r5, pagerank_result["undirected"]) ctx6 = pagerank(p2p_project_undirected_graph) r6 = (ctx6.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) assert np.allclose(r6, pagerank_result["undirected"]) assert np.allclose( ctx6.to_dataframe({ "node": "v.id", "r": "r" }, vertex_range={ "begin": 1, "end": 4 }).sort_values(by=["node"]).to_numpy(), [ [1.0, 6.153724343761569e-05], [2.0, 9.280361872165397e-05], [3.0, 1.643246086005906e-05], ], ) assert np.allclose( sorted(ctx6.to_numpy("r", vertex_range={ "begin": 1, "end": 4 })), sorted([ 6.153724343761569e-05, 9.280361872165397e-05, 1.643246086005906e-05 ]), ) # bfs ctx7 = bfs(p2p_project_undirected_graph, src=6) r7 = (ctx7.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=int)) assert np.all(r7 == bfs_result["undirected"]) assert np.all( ctx7.to_dataframe( { "node": "v.id", "r": "r" }, vertex_range={ "begin": 1, "end": 4 }).sort_values(by=["node"]).to_numpy() == [[1, 1], [2, 2], [3, 2]]) assert np.all( sorted(ctx7.to_numpy("r", vertex_range={ "begin": 1, "end": 4 })) == [1, 2, 2]) # wcc ctx8 = wcc(p2p_project_undirected_graph) r8 = (ctx8.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=int)) assert np.all(r8 == wcc_result) assert np.all( ctx8.to_dataframe( { "node": "v.id", "r": "r" }, vertex_range={ "begin": 1, "end": 4 }).sort_values(by=["node"]).to_numpy() == [[1, 1], [2, 1], [3, 1]]) assert np.all( ctx8.to_numpy("r", vertex_range={ "begin": 1, "end": 4 }) == [1, 1, 1]) # lpa ctx9 = lpa(p2p_project_undirected_graph, max_round=10) r9 = (ctx9.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=int)) assert np.all(r9 == lpa_result) assert np.all( ctx9.to_dataframe( { "node": "v.id", "r": "r" }, vertex_range={ "begin": 1, "end": 4 }).sort_values(by=["node"]).to_numpy() == [[1, 1], [2, 2], [3, 2]]) assert np.all( sorted(ctx9.to_numpy("r", vertex_range={ "begin": 1, "end": 4 })) == [1, 2, 2]) # kshell ctx10 = k_shell(p2p_project_undirected_graph, k=3) r10 = (ctx10.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=int)) assert np.all(r10 == kshell_result) assert np.all( ctx10.to_dataframe( { "node": "v.id", "r": "r" }, vertex_range={ "begin": 1, "end": 4 }).sort_values(by=["node"]).to_numpy() == [[1, 0], [2, 0], [3, 0]]) assert np.all( ctx10.to_numpy("r", vertex_range={ "begin": 1, "end": 4 }) == [0, 0, 0]) # triangles ctx_triangles = triangles(p2p_project_undirected_graph) ret_triangles = (ctx_triangles.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) assert np.allclose(ret_triangles, triangles_result["undirected"]) # louvain ctx10 = louvain(p2p_project_undirected_graph, min_progress=50, progress_tries=2) # simple_path assert is_simple_path(p2p_project_undirected_graph, [1, 10])
def test_run_app_on_directed_graph( p2p_project_directed_graph, sssp_result, pagerank_result, hits_result, bfs_result, clustering_result, dc_result, ev_result, katz_result, ): # sssp ctx1 = sssp(p2p_project_directed_graph, src=6) r1 = (ctx1.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) r1[r1 == 1.7976931348623157e308] = float( "inf") # replace limit::max with inf assert np.allclose(r1, sssp_result["directed"]) ctx2 = sssp(p2p_project_directed_graph, 6) r2 = (ctx2.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) r2[r2 == 1.7976931348623157e308] = float( "inf") # replace limit::max with inf assert np.allclose(r2, sssp_result["directed"]) assert np.allclose( ctx2.to_dataframe({ "node": "v.id", "r": "r" }, vertex_range={ "begin": 1, "end": 4 }).sort_values(by=["node"]).to_numpy(), [[1.0, 260.0], [2.0, 229.0], [3.0, 310.0]], ) assert np.allclose( sorted(ctx1.to_numpy("r", vertex_range={ "begin": 1, "end": 4 })), sorted([260.0, 229.0, 310.0]), ) r3 = sssp(p2p_project_directed_graph, 100000000) assert r3 is not None # pagerank ctx_pr = pagerank(p2p_project_directed_graph, delta=0.85, max_round=10) ret_pr = (ctx_pr.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) assert np.allclose(ret_pr, pagerank_result["directed"]) # hits ctx_hits = hits(p2p_project_directed_graph, tolerance=0.001) ret_hub = (ctx_hits.to_dataframe({ "node": "v.id", "hub": "r.hub" }).sort_values(by=["node"]).to_numpy(dtype=float)) ret_auth = (ctx_hits.to_dataframe({ "node": "v.id", "auth": "r.auth" }).sort_values(by=["node"]).to_numpy(dtype=float)) assert np.allclose(ret_hub, hits_result["hub"]) assert np.allclose(ret_auth, hits_result["auth"]) # bfs ctx4 = bfs(p2p_project_directed_graph, src=6) r4 = (ctx4.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=int)) assert np.all(r4 == bfs_result["directed"]) ctx5 = bfs(p2p_project_directed_graph, 6) r5 = (ctx5.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=int)) assert np.all(r5 == bfs_result["directed"]) assert np.all( ctx5.to_dataframe( { "node": "v.id", "r": "r" }, vertex_range={ "begin": 1, "end": 4 }).sort_values(by=["node"]).to_numpy() == [[1, 5], [2, 5], [3, 6]]) assert np.all( sorted(ctx5.to_numpy("r", vertex_range={ "begin": 1, "end": 4 })) == [5, 5, 6]) # simple_path assert is_simple_path(p2p_project_directed_graph, [1, 10]) with pytest.raises(InvalidArgumentError, match="Louvain not support directed graph."): louvain(p2p_project_directed_graph) # clustering ctx_clustering = clustering(p2p_project_directed_graph) ret_clustering = (ctx_clustering.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) assert np.allclose(ret_clustering, clustering_result["directed"]) # degree_centrality ctx_dc = degree_centrality(p2p_project_directed_graph) ret_dc = (ctx_dc.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) assert np.allclose(ret_dc, dc_result["directed"]) # eigenvector_centrality ctx_ev = eigenvector_centrality(p2p_project_directed_graph) ret_ev = (ctx_ev.to_dataframe({ "node": "v.id", "r": "r" }).sort_values(by=["node"]).to_numpy(dtype=float)) assert np.allclose(ret_ev, ev_result["directed"]) # katz_centrality ctx_katz = katz_centrality(p2p_project_directed_graph)
def _is_simple_path(G, nodes): return graphscope.is_simple_path(G, nodes)