Esempio n. 1
0
    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))
Esempio n. 2
0
 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))
Esempio n. 3
0
    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)
Esempio n. 4
0
 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]))
Esempio n. 5
0
 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
Esempio n. 6
0
 def gmaker(x):
     return self.from_graph(BaseGraphAlgOps.subtract(self, x))
Esempio n. 7
0
 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])
     )
Esempio n. 8
0
 def test_subtract_e(self):
     """"""
     gs = BaseGraphAlgOps.subtract(self.graph, self.e2)
     self.assertEqual(set(gs.E), set([self.e1]))
Esempio n. 9
0
 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]))