| 2941 | ) |
| 2942 | @parametrize_idtype |
| 2943 | def test_module_gdc(idtype): |
| 2944 | transform = dgl.GDC([0.1, 0.2, 0.1], avg_degree=1) |
| 2945 | g = dgl.graph( |
| 2946 | ([0, 1, 2, 3, 4], [2, 3, 4, 5, 3]), idtype=idtype, device=F.ctx() |
| 2947 | ) |
| 2948 | g.ndata["h"] = F.randn((6, 2)) |
| 2949 | new_g = transform(g) |
| 2950 | assert new_g.idtype == g.idtype |
| 2951 | assert new_g.device == g.device |
| 2952 | assert new_g.num_nodes() == g.num_nodes() |
| 2953 | src, dst = new_g.edges() |
| 2954 | eset = set(zip(list(F.asnumpy(src)), list(F.asnumpy(dst)))) |
| 2955 | assert eset == { |
| 2956 | (0, 0), |
| 2957 | (0, 2), |
| 2958 | (0, 4), |
| 2959 | (1, 1), |
| 2960 | (1, 3), |
| 2961 | (1, 5), |
| 2962 | (2, 2), |
| 2963 | (2, 3), |
| 2964 | (2, 4), |
| 2965 | (3, 3), |
| 2966 | (3, 5), |
| 2967 | (4, 3), |
| 2968 | (4, 4), |
| 2969 | (4, 5), |
| 2970 | (5, 5), |
| 2971 | } |
| 2972 | assert F.allclose(g.ndata["h"], new_g.ndata["h"]) |
| 2973 | assert "w" in new_g.edata |
| 2974 | |
| 2975 | # Prior edge weights |
| 2976 | g.edata["w"] = F.tensor([0.1, 0.2, 0.3, 0.4, 0.5]) |
| 2977 | new_g = transform(g) |
| 2978 | src, dst = new_g.edges() |
| 2979 | eset = set(zip(list(F.asnumpy(src)), list(F.asnumpy(dst)))) |
| 2980 | assert eset == {(0, 0), (1, 1), (2, 2), (3, 3), (4, 3), (4, 4), (5, 5)} |
| 2981 | |
| 2982 | |
| 2983 | @unittest.skipIf( |