MCPcopy
hub / github.com/dmlc/dgl / test_remove_nodes

Function test_remove_nodes

tests/python/common/test_heterograph.py:3196–3308  ·  view source on GitHub ↗
(idtype)

Source from the content-addressed store, hash-verified

3194
3195@parametrize_idtype
3196def 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))

Callers

nothing calls this directly

Calls 8

remove_nodesMethod · 0.80
create_test_heterograph3Function · 0.70
graphMethod · 0.45
ctxMethod · 0.45
num_nodesMethod · 0.45
num_edgesMethod · 0.45
edgesMethod · 0.45
copy_toMethod · 0.45

Tested by

no test coverage detected