(g, metapath, traces, ntypes, prob=None, trace_eids=None)
| 14 | |
| 15 | |
| 16 | def check_random_walk(g, metapath, traces, ntypes, prob=None, trace_eids=None): |
| 17 | traces = F.asnumpy(traces) |
| 18 | ntypes = F.asnumpy(ntypes) |
| 19 | for j in range(traces.shape[1] - 1): |
| 20 | assert ntypes[j] == g.get_ntype_id(g.to_canonical_etype(metapath[j])[0]) |
| 21 | assert ntypes[j + 1] == g.get_ntype_id( |
| 22 | g.to_canonical_etype(metapath[j])[2] |
| 23 | ) |
| 24 | |
| 25 | for i in range(traces.shape[0]): |
| 26 | for j in range(traces.shape[1] - 1): |
| 27 | assert g.has_edges_between( |
| 28 | traces[i, j], traces[i, j + 1], etype=metapath[j] |
| 29 | ) |
| 30 | if prob is not None and prob in g.edges[metapath[j]].data: |
| 31 | p = F.asnumpy(g.edges[metapath[j]].data["p"]) |
| 32 | eids = g.edge_ids( |
| 33 | traces[i, j], traces[i, j + 1], etype=metapath[j] |
| 34 | ) |
| 35 | assert p[eids] != 0 |
| 36 | if trace_eids is not None: |
| 37 | u, v = g.find_edges(trace_eids[i, j], etype=metapath[j]) |
| 38 | assert (u == traces[i, j]) and (v == traces[i, j + 1]) |
| 39 | |
| 40 | |
| 41 | @pytest.mark.parametrize("use_uva", [True, False]) |
no test coverage detected