def test_2hop_using_gsl_with_undirected_edge_homo(self): """ Using gsl api and sample neighbor on undirected edges whose source node and dst node has same type. """ gl.set_eager_mode(True) expand_factor = [3, 2] ids = self._seed_node2_ids def repeat_fn(q, params): return q.outE(params[0]).sample(params[1]).by("random").inV() nbrs = self.g.V(self._node2_type, feed=ids) \ .repeat(repeat_fn, 2, params_list=[(self._edge3_type, 3), (self._edge3_type, 2)]) \ .emit() edges1 = nbrs[1] nodes1 = nbrs[2] edges2 = nbrs[3] nodes2 = nbrs[4] n = expand_factor[0] * expand_factor[1] for i in range(0, ids.size * 3): for dst_id in nodes2.ids.flatten()[i:i + 2]: src_id = nodes1.ids.flatten()[i] out_id = utils.fixed_dst_ids(src_id, self._node2_range) in_id = utils.fixed_dst_ids(dst_id, self._node2_range) utils.check_ids(src_id, out_id + in_id)
def test_basic(self): file_path = self.gen_test_data([], False) decoder = gl.Decoder() g = gl.Graph() \ .edge(source=file_path, edge_type=self.edge_tuple_, decoder=decoder) g.init(server_id=0, server_count=1, tracker=utils.TRACKER_PATH) edges = g.E("first").batch(4).emit() utils.check_ids(edges.src_ids, range(self.src_range_[0], self.src_range_[1])) utils.check_ids(edges.dst_ids, range(self.dst_range_[0], self.dst_range_[1]))
def test_neg(self): """ Sample negative neighbors with node_weight of the target nodes. """ expand_factor = 6 ids = self._seed_node2_ids nbr_s = self.g.negative_sampler(self._node2_type, expand_factor=expand_factor, strategy="node_weight") nodes = nbr_s.get(ids) utils.check_ids(nodes.ids, [i for i in range(100, 200) if i not in ids]) utils.check_node_type(nodes, node_type=self._node2_type) utils.check_node_shape(nodes, ids.size * expand_factor)
def test_labeled(self): file_path = self.gen_test_data([utils.LABELED], False) decoder = gl.Decoder(labeled=True) g = gl.Graph() \ .edge(source=file_path, edge_type=self.edge_tuple_, decoder=decoder) g.init(server_id=0, server_count=1, tracker=utils.TRACKER_PATH) edges = g.E("first").batch(self.batch_size_).emit() utils.check_ids(edges.src_ids, range(self.src_range_[0], self.src_range_[1])) utils.check_ids(edges.dst_ids, range(self.dst_range_[0], self.dst_range_[1])) utils.check_edge_labels(edges)
def test_neg_using_gremlin(self): """ Using gremlin-like api. """ expand_factor = 6 ids = self._seed_node1_ids nbrs = self.g.V(self._node2_type, feed=ids) \ .Neg(self._node2_type).sample(expand_factor).by("node_weight") \ .emit() nodes = nbrs[1] utils.check_ids(nodes.ids, [i for i in range(100, 200) if i not in ids]) utils.check_node_type(nodes, node_type=self._node2_type) utils.check_node_shape(nodes, ids.size * expand_factor)
def test_weighted(self): file_path = self.gen_test_data([utils.WEIGHTED], False) decoder = gl.Decoder(weighted=True) g = gl.Graph() \ .edge(source=file_path, edge_type=self.edge_tuple_, decoder=decoder) g.init(tracker=utils.TRACKER_PATH) edges = g.E("first").batch(self.batch_size_).emit() utils.check_ids(edges.src_ids, range(self.src_range_[0], self.src_range_[1])) utils.check_ids(edges.dst_ids, range(self.dst_range_[0], self.dst_range_[1])) utils.check_edge_weights(edges) g.close()
def test_basic(self): gl.set_eager_mode(True) file_path = self.gen_test_data([], False) decoder = gl.Decoder() gl.set_eager_mode(True) g = gl.Graph() \ .edge(source=file_path, edge_type=self.edge_tuple_, decoder=decoder) g.init(tracker=utils.TRACKER_PATH) edges = g.E("first").batch(4).emit() utils.check_ids(edges.src_ids, range(self.src_range_[0], self.src_range_[1])) utils.check_ids(edges.dst_ids, range(self.dst_range_[0], self.dst_range_[1])) g.close()
def test_neg(self): """ Using primative api. """ expand_factor = 6 ids = self._seed_node1_ids nbr_s = self.g.negative_sampler(self._edge1_type, expand_factor=expand_factor, strategy="random") nodes = nbr_s.get(ids) for i, e in enumerate(ids): expected_ids = [iid for iid in self._node2_ids if \ iid not in utils.fixed_dst_ids(e, self._node2_range)] utils.check_ids(nodes.ids[i], expected_ids) utils.check_node_type(nodes, node_type=self._node2_type) utils.check_node_shape(nodes, ids.size * expand_factor)
def test_neg(self): """ Sample negative neighbors with in-degree of the target nodes. """ expand_factor = 6 ids = self._seed_node1_ids nbr_s = self.g.negative_sampler(self._edge1_type, expand_factor=expand_factor, strategy="in_degree") nodes = nbr_s.get(ids) for i, e in enumerate(ids): expected_ids = [iid for iid in self._node2_ids if \ iid not in utils.fixed_dst_ids(e, self._node2_range)] utils.check_ids(nodes.ids[i], expected_ids) utils.check_node_type(nodes, node_type=self._node2_type) utils.check_node_shape(nodes, ids.size * expand_factor)
def test_labeled_attributed(self): file_path = self.gen_test_data([utils.LABELED, utils.ATTRIBUTED], False) decoder = gl.Decoder(labeled=True, attr_types=utils.ATTR_TYPES) g = gl.Graph() \ .edge(source=file_path, edge_type=self.edge_tuple_, decoder=decoder) g.init(tracker=utils.TRACKER_PATH) edges = g.E("first").batch(self.batch_size_).emit() utils.check_ids(edges.src_ids, range(self.src_range_[0], self.src_range_[1])) utils.check_ids(edges.dst_ids, range(self.dst_range_[0], self.dst_range_[1])) utils.check_edge_labels(edges) utils.check_edge_attrs(edges) g.close()
def test_basic(self): file_path = self.gen_test_data([], False) decoder = gl.Decoder() g = gl.Graph() \ .edge(source=file_path, edge_type=self.edge_tuple_, decoder=decoder) g.init(tracker=utils.TRACKER_PATH) query = g.E("first").batch(4).alias('e').values() ds = gl.Dataset(query) edges = ds.next()['e'] utils.check_ids(edges.src_ids, range(self.src_range_[0], self.src_range_[1])) utils.check_ids(edges.dst_ids, range(self.dst_range_[0], self.dst_range_[1])) g.close()
def test_neg_using_gsl(self): """ Using gsl api. """ gl.set_eager_mode(True) expand_factor = 6 ids = self._seed_node1_ids nbrs = self.g.V(self._node1_type, feed=ids) \ .outNeg(self._edge1_type).sample(expand_factor).by("in_degree") \ .emit() nodes = nbrs[1] for i, e in enumerate(ids): expected_ids = [iid for iid in self._node2_ids if \ iid not in utils.fixed_dst_ids(e, self._node2_range)] utils.check_ids(nodes.ids[i], expected_ids) utils.check_node_type(nodes, node_type=self._node2_type) utils.check_node_shape(nodes, ids.size * expand_factor)
def test_weighted_labeled_attributed(self): file_path = self.gen_test_data( [utils.WEIGHTED, utils.LABELED, utils.ATTRIBUTED], False) decoder = gl.Decoder( weighted=True, labeled=True, attr_types=utils.ATTR_TYPES) g = gl.Graph() \ .edge(source=file_path, edge_type=self.edge_tuple_, decoder=decoder) g.init(tracker=utils.TRACKER_PATH) query = g.E("first").batch(self.batch_size_).alias('e').values() ds = gl.Dataset(query) edges = ds.next()['e'] utils.check_ids(edges.src_ids, range(self.src_range_[0], self.src_range_[1])) utils.check_ids(edges.dst_ids, range(self.dst_range_[0], self.dst_range_[1])) utils.check_edge_labels(edges) utils.check_edge_attrs(edges) utils.check_edge_weights(edges) g.close()