def test_simple_graph(): elist = [(0, 1), (0, 2), (1, 2), (0, 1)] g = dgl.DGLGraph(elist, readonly=True) assert g.is_multigraph sg = dgl.to_simple_graph(g) assert not sg.is_multigraph assert sg.number_of_edges() == 3 src, dst = sg.edges() eset = set(zip(list(F.asnumpy(src)), list(F.asnumpy(dst)))) assert eset == set(elist)
def test_self_loop(): n = 100 num_hops = 2 g = generate_rand_graph(n, complete=True) nf = create_mini_batch(g, num_hops, add_self_loop=True) for i in range(1, nf.num_layers): in_deg = nf.layer_in_degree(i) deg = F.copy_to(F.ones(in_deg.shape, dtype=F.int64), F.cpu()) * n assert_array_equal(F.asnumpy(in_deg), F.asnumpy(deg)) g = generate_rand_graph(n, complete=True, add_self_loop=True) g = dgl.to_simple_graph(g) nf = create_mini_batch(g, num_hops, add_self_loop=True) for i in range(nf.num_blocks): parent_eid = F.asnumpy(nf.block_parent_eid(i)) parent_nid = F.asnumpy(nf.layer_parent_nid(i + 1)) # The loop eid in the parent graph must exist in the block parent eid. parent_loop_eid = F.asnumpy(g.edge_ids(parent_nid, parent_nid)) assert len(parent_loop_eid) == len(parent_nid) for eid in parent_loop_eid: assert eid in parent_eid