def test_add_edge(self): """""" g = BaseGraphAlgOps.add(self.graph, self.e3) # self.assertEqual(set(self.graph.V), set(g.V)) # self.assertEqual(set(self.graph_2.E), set(g.E))
def __add__( self, a: Union[Set[Edge], Set[Node], Node, Edge, GraphObject]) -> GraphObject: """! \brief overloads + sign for doing algebraic operations with graph objects. """ return self.from_base_graph(BaseGraphAlgOps.add(self, a))
def __sub__( self, a: Union[Set[Edge], Set[Node], Node, Edge, BaseGraph]) -> BaseGraph: """! \brief overloads - sign for doing algebraic operations with graph objects. """ bgraph = BaseGraphAlgOps.subtract(self, a) return self.from_base_graph(bgraph)
def test_add_graph(self): n = Node("n646", {}) n1 = Node("n647", {}) n2 = Node("n648", {}) e = Edge( "e8", start_node=self.n1, end_node=n, edge_type=EdgeType.UNDIRECTED ) gg = BaseGraph( gid="temp", data={}, nodes=set([n, n1, n2]), edges=set([e]) ) g = BaseGraphAlgOps.add(self.graph, gg) self.assertEqual( BaseGraphOps.nodes(g), set([self.n1, self.n2, self.n3, self.n4, n, n1, n2]), ) self.assertEqual(BaseGraphOps.edges(g), set([e, self.e1, self.e2]))
def order_by_greedy_metric( self, nodes: Set[NumCatRVariable], s: Callable[[Graph, Dict[Node, bool]], Optional[Node]] = min_unmarked_neighbours, ) -> Dict[str, int]: """! From Koller and Friedman 2009, p. 314 """ marked = {n.id(): False for n in nodes} cardinality = {n.id(): -1 for n in nodes} for i in range(len(nodes)): X = s(g=self, nodes=nodes, marked=marked) if X is not None: cardinality[X.id()] = i TEMP = BaseGraphOps.neighbours_of(self, X) while TEMP: n_x = TEMP.pop() for n in BaseGraphOps.neighbours_of(self, X): self = BaseGraphAlgOps.added_edge_between_if_none( self, n_x, n, is_directed=False) marked[X.id()] = True return cardinality
def gmaker(x): return self.from_graph(BaseGraphAlgOps.subtract(self, x))
def test_add_node(self): n = Node("n646", {}) g = BaseGraphAlgOps.add(self.graph, n) self.assertEqual( BaseGraphOps.nodes(g), set([self.n1, self.n2, self.n3, self.n4, n]) )
def test_subtract_e(self): """""" gs = BaseGraphAlgOps.subtract(self.graph, self.e2) self.assertEqual(set(gs.E), set([self.e1]))
def test_subtract_n(self): """""" gs = BaseGraphAlgOps.subtract(self.graph, self.n2) nodes = set(gs.V) self.assertEqual(nodes, set([self.n1, self.n3, self.n4]))