class TestJunctionTreeMethods(unittest.TestCase):
    def setUp(self):
        self.factor1 = DiscreteFactor(["a", "b"], [2, 2], np.random.rand(4))
        self.factor2 = DiscreteFactor(["b", "c"], [2, 2], np.random.rand(4))
        self.factor3 = DiscreteFactor(["d", "e"], [2, 2], np.random.rand(4))
        self.factor4 = DiscreteFactor(["e", "f"], [2, 2], np.random.rand(4))
        self.factor5 = DiscreteFactor(["a", "b", "e"], [2, 2, 2],
                                      np.random.rand(8))

        self.graph1 = JunctionTree()
        self.graph1.add_edge(("a", "b"), ("b", "c"))
        self.graph1.add_factors(self.factor1, self.factor2)

        self.graph2 = JunctionTree()
        self.graph2.add_nodes_from([("a", "b"), ("b", "c"), ("d", "e")])
        self.graph2.add_edge(("a", "b"), ("b", "c"))
        self.graph2.add_factors(self.factor1, self.factor2, self.factor3)

        self.graph3 = JunctionTree()
        self.graph3.add_edges_from([(("a", "b"), ("b", "c")),
                                    (("d", "e"), ("e", "f"))])
        self.graph3.add_factors(self.factor1, self.factor2, self.factor3,
                                self.factor4)

        self.graph4 = JunctionTree()
        self.graph4.add_edges_from([
            (("a", "b", "e"), ("b", "c")),
            (("a", "b", "e"), ("e", "f")),
            (("d", "e"), ("e", "f")),
        ])
        self.graph4.add_factors(self.factor5, self.factor2, self.factor3,
                                self.factor4)

    def test_check_model(self):
        self.assertRaises(ValueError, self.graph2.check_model)
        self.assertRaises(ValueError, self.graph3.check_model)
        self.assertTrue(self.graph1.check_model())
        self.assertTrue(self.graph4.check_model())

    def tearDown(self):
        del self.factor1
        del self.factor2
        del self.factor3
        del self.factor4
        del self.factor5

        del self.graph1
        del self.graph2
        del self.graph3
        del self.graph4
Example #2
0
class TestJunctionTreeMethods(unittest.TestCase):
    def setUp(self):
        self.factor1 = DiscreteFactor(['a', 'b'], [2, 2], np.random.rand(4))
        self.factor2 = DiscreteFactor(['b', 'c'], [2, 2], np.random.rand(4))
        self.factor3 = DiscreteFactor(['d', 'e'], [2, 2], np.random.rand(4))
        self.factor4 = DiscreteFactor(['e', 'f'], [2, 2], np.random.rand(4))
        self.factor5 = DiscreteFactor(['a', 'b', 'e'], [2, 2, 2],
                                      np.random.rand(8))

        self.graph1 = JunctionTree()
        self.graph1.add_edge(('a', 'b'), ('b', 'c'))
        self.graph1.add_factors(self.factor1, self.factor2)

        self.graph2 = JunctionTree()
        self.graph2.add_nodes_from([('a', 'b'), ('b', 'c'), ('d', 'e')])
        self.graph2.add_edge(('a', 'b'), ('b', 'c'))
        self.graph2.add_factors(self.factor1, self.factor2, self.factor3)

        self.graph3 = JunctionTree()
        self.graph3.add_edges_from([(('a', 'b'), ('b', 'c')),
                                    (('d', 'e'), ('e', 'f'))])
        self.graph3.add_factors(self.factor1, self.factor2, self.factor3,
                                self.factor4)

        self.graph4 = JunctionTree()
        self.graph4.add_edges_from([(('a', 'b', 'e'), ('b', 'c')),
                                    (('a', 'b', 'e'), ('e', 'f')),
                                    (('d', 'e'), ('e', 'f'))])
        self.graph4.add_factors(self.factor5, self.factor2, self.factor3,
                                self.factor4)

    def test_check_model(self):
        self.assertRaises(ValueError, self.graph2.check_model)
        self.assertRaises(ValueError, self.graph3.check_model)
        self.assertTrue(self.graph1.check_model())
        self.assertTrue(self.graph4.check_model())

    def tearDown(self):
        del self.factor1
        del self.factor2
        del self.factor3
        del self.factor4
        del self.factor5

        del self.graph1
        del self.graph2
        del self.graph3
        del self.graph4
class TestJunctionTreeMethods(unittest.TestCase):
    def setUp(self):
        self.factor1 = DiscreteFactor(['a', 'b'], [2, 2], np.random.rand(4))
        self.factor2 = DiscreteFactor(['b', 'c'], [2, 2], np.random.rand(4))
        self.factor3 = DiscreteFactor(['d', 'e'], [2, 2], np.random.rand(4))
        self.factor4 = DiscreteFactor(['e', 'f'], [2, 2], np.random.rand(4))
        self.factor5 = DiscreteFactor(['a', 'b', 'e'], [2, 2, 2], np.random.rand(8))

        self.graph1 = JunctionTree()
        self.graph1.add_edge(('a', 'b'), ('b', 'c'))
        self.graph1.add_factors(self.factor1, self.factor2)

        self.graph2 = JunctionTree()
        self.graph2.add_nodes_from([('a', 'b'), ('b', 'c'), ('d', 'e')])
        self.graph2.add_edge(('a', 'b'), ('b', 'c'))
        self.graph2.add_factors(self.factor1, self.factor2, self.factor3)

        self.graph3 = JunctionTree()
        self.graph3.add_edges_from([(('a', 'b'), ('b', 'c')), (('d', 'e'), ('e', 'f'))])
        self.graph3.add_factors(self.factor1, self.factor2, self.factor3, self.factor4)

        self.graph4 = JunctionTree()
        self.graph4.add_edges_from([(('a', 'b', 'e'), ('b', 'c')), (('a', 'b', 'e'), ('e', 'f')),
                                    (('d', 'e'), ('e', 'f'))])
        self.graph4.add_factors(self.factor5, self.factor2, self.factor3, self.factor4)

    def test_check_model(self):
        self.assertRaises(ValueError, self.graph2.check_model)
        self.assertRaises(ValueError, self.graph3.check_model)
        self.assertTrue(self.graph1.check_model())
        self.assertTrue(self.graph4.check_model())

    def tearDown(self):
        del self.factor1
        del self.factor2
        del self.factor3
        del self.factor4
        del self.factor5

        del self.graph1
        del self.graph2
        del self.graph3
        del self.graph4