(idtype)
| 3194 | |
| 3195 | @parametrize_idtype |
| 3196 | def test_remove_nodes(idtype): |
| 3197 | # homogeneous Graphs |
| 3198 | g = dgl.graph(([0, 1], [1, 2]), idtype=idtype, device=F.ctx()) |
| 3199 | n = 0 |
| 3200 | g.remove_nodes(n) |
| 3201 | assert g.num_nodes() == 2 |
| 3202 | assert g.num_edges() == 1 |
| 3203 | u, v = g.edges(form="uv", order="eid") |
| 3204 | assert F.array_equal(u, F.tensor([0], dtype=idtype)) |
| 3205 | assert F.array_equal(v, F.tensor([1], dtype=idtype)) |
| 3206 | g = dgl.graph(([0, 1], [1, 2]), idtype=idtype, device=F.ctx()) |
| 3207 | n = [1] |
| 3208 | g.remove_nodes(n) |
| 3209 | assert g.num_nodes() == 2 |
| 3210 | assert g.num_edges() == 0 |
| 3211 | g = dgl.graph(([0, 1], [1, 2]), idtype=idtype, device=F.ctx()) |
| 3212 | n = F.tensor([2], dtype=idtype) |
| 3213 | g.remove_nodes(n) |
| 3214 | assert g.num_nodes() == 2 |
| 3215 | assert g.num_edges() == 1 |
| 3216 | u, v = g.edges(form="uv", order="eid") |
| 3217 | assert F.array_equal(u, F.tensor([0], dtype=idtype)) |
| 3218 | assert F.array_equal(v, F.tensor([1], dtype=idtype)) |
| 3219 | |
| 3220 | # invalid nid |
| 3221 | assert_fail = False |
| 3222 | try: |
| 3223 | g.remove_nodes(3) |
| 3224 | except: |
| 3225 | assert_fail = True |
| 3226 | assert assert_fail |
| 3227 | |
| 3228 | # has node and edge data |
| 3229 | g = dgl.graph(([0, 0, 2], [0, 1, 2]), idtype=idtype, device=F.ctx()) |
| 3230 | g.ndata["hv"] = F.copy_to(F.tensor([1, 2, 3], dtype=idtype), ctx=F.ctx()) |
| 3231 | g.edata["he"] = F.copy_to(F.tensor([1, 2, 3], dtype=idtype), ctx=F.ctx()) |
| 3232 | g.remove_nodes(F.tensor([0], dtype=idtype)) |
| 3233 | assert g.num_nodes() == 2 |
| 3234 | assert g.num_edges() == 1 |
| 3235 | u, v = g.edges(form="uv", order="eid") |
| 3236 | assert F.array_equal(u, F.tensor([1], dtype=idtype)) |
| 3237 | assert F.array_equal(v, F.tensor([1], dtype=idtype)) |
| 3238 | assert F.array_equal(g.ndata["hv"], F.tensor([2, 3], dtype=idtype)) |
| 3239 | assert F.array_equal(g.edata["he"], F.tensor([3], dtype=idtype)) |
| 3240 | |
| 3241 | # node id larger than current max node id |
| 3242 | g = dgl.heterograph( |
| 3243 | {("user", "plays", "game"): ([0, 1], [1, 2])}, |
| 3244 | idtype=idtype, |
| 3245 | device=F.ctx(), |
| 3246 | ) |
| 3247 | n = 0 |
| 3248 | g.remove_nodes(n, ntype="user") |
| 3249 | assert g.num_nodes("user") == 1 |
| 3250 | assert g.num_nodes("game") == 3 |
| 3251 | assert g.num_edges() == 1 |
| 3252 | u, v = g.edges(form="uv", order="eid") |
| 3253 | assert F.array_equal(u, F.tensor([0], dtype=idtype)) |
nothing calls this directly
no test coverage detected