예제 #1
0
 def tryModel(self, model):
     ci = GraphCI(model.adg(), undirected=True, moralise=True)
     eci = GraphCI(model.adg().essential_graph(),
                   undirected=True,
                   moralise=True)
     self.same_graph(model.adg().moralise(),
                     model.adg().essential_graph().moralise())
     self.same_ci(ci, eci)
예제 #2
0
 def tryModel(self, model):
     eg = model.adg().essential_graph()
     remodel = EssentialGraph(vertices=eg.vertices(),
                              lines=eg.lines(),
                              arrows=eg.arrows()).orient()
     self.same_graph(model.adg().essential_graph(),
                     remodel.essential_graph())
     self.same_ci(GraphCI(model.adg()), GraphCI(remodel))
예제 #3
0
 def runTest(self):
     for i, cbn in enumerate(self.cbn):
         obs, a, b = frozenset(), frozenset('a'), frozenset('b')
         ci = {}
         ga = cbn.copy()
         ga.intervene({'a': frozenset([0])})
         ga = ga.adg()
         gb = cbn.copy()
         gb.intervene({'b': frozenset([0])})
         gb = gb.adg()
         gab = cbn.copy()
         gab.intervene({'a': frozenset([0]), 'b': frozenset([0])})
         gab = gab.adg()
         ci[obs] = GraphCI(cbn.adg())
         ci[a] = GraphCI(ga)
         ci[b] = GraphCI(gb)
         ci[a | b] = GraphCI(gab)
         self.go(obs, a, b, self.arr[i], ci)
예제 #4
0
    def tryModel(self, model):
        model_do = CBN.from_bn(model.copy(copy_domain=True))
        # perform every interventional query
        ci = {}
        for q in model_do.good_interventions():
            # generate the model
            model_do = CBN.from_bn(model.copy(copy_domain=True))
            model_do.intervene(q)
            ci[frozenset(q.keys())] = GraphCI(model_do.adg())

        iic = InterventionalICPattern(ci)
        self.assertEquals(iic.lines(), [])
        self.assertEquals(iic.orient(), model.adg())
예제 #5
0
    def tryModel(self, model):
        # perform every interventional query
        ci = {}
        for xs in powerset(model.variables()):
            # build the intervention q
            q = {}
            for x in xs:
                q[x] = frozenset([set(model.values(x)).pop()])

            # generate the model
            model_do = CBN.from_bn(model.copy(copy_domain=True))
            model_do.intervene(q)
            ci[frozenset(q.keys())] = GraphCI(model_do.adg())

        iic = InterventionalICPattern(ci)
        self.assertEquals(iic.lines(), [])
        self.assertEquals(iic.orient(), model.adg())
예제 #6
0
 def testAsia(self):
     from gPy.Examples import asia
     indep = GraphCI(asia.adg(), True, True).independences()
     for k in indep.keys():
         print k, ':', indep[k]
예제 #7
0
 def same_indep(self, g, undir, mor, indep):
     found_indep = GraphCI(g, undir, mor).independences()
     self.assertEqual(frozenset(found_indep.keys()),
                      frozenset(indep.keys()))
     for k in found_indep.keys():
         self.assertEqual(frozenset(found_indep[k]), frozenset(indep[k]))
예제 #8
0
 def tryModel(self, model):
     ci = GraphCI(model.adg())
     g = ICPattern(ci)
     self.same_graph(g, model.adg().essential_graph())
예제 #9
0
 def tryModel(self, model):
     ci = GraphCI(model.adg())
     g = ICPattern(ci, model.adg().topological_order())
     self.same_graph(g, model.adg())
예제 #10
0
 def tryModel(self, model):
     ci = GraphCI(model.adg(), undirected=True, moralise=True)
     g = ICPattern(ci)
     self.same_graph(g.moralise(), model.adg().essential_graph().moralise())