Esempio n. 1
0
    def test_copy(self):
        pdag = cd.PDAG(arcs={(1, 2), (1, 3), (2, 3)})
        pdag2 = pdag.copy()
        self.assertEqual(pdag.arcs, pdag2.arcs)
        self.assertEqual(pdag.edges, pdag2.edges)
        self.assertEqual(pdag.neighbors, pdag2.neighbors)
        self.assertEqual(pdag.parents, pdag2.parents)
        self.assertEqual(pdag.children, pdag2.children)

        pdag2._replace_arc_with_edge((1, 2))
        self.assertNotEqual(pdag.arcs, pdag2.arcs)
        self.assertNotEqual(pdag.edges, pdag2.edges)
        self.assertNotEqual(pdag.parents, pdag2.parents)
        self.assertNotEqual(pdag.children, pdag2.children)
Esempio n. 2
0
    def test_to_complete_pdag(self):
        g = cd.PDAG(arcs={(0, 1), (0, 2), (3, 0)}, edges={(1, 2), (1, 3), (2, 3)})
        g.to_complete_pdag()
        g_comp = cd.PDAG(arcs={(0, 1), (0, 2), (3, 0), (3, 1), (3, 2)}, edges={(1, 2)})
        self.assertEqual(g, g_comp)

        g = cd.PDAG(arcs={(0, 1), (0, 2), (0, 3)}, edges={(1, 2), (1, 3), (2, 3)})
        g.to_complete_pdag()
        g_comp = cd.PDAG(arcs={(0, 1), (0, 2), (0, 3)}, edges={(1, 2), (1, 3), (2, 3)})
        self.assertEqual(g, g_comp)

        g = cd.PDAG(arcs={(1, 0), (2, 0), (3, 0)}, edges={(1, 2), (1, 3), (2, 3)})
        g.to_complete_pdag()
        g_comp = cd.PDAG(arcs={(1, 0), (2, 0), (3, 0)}, edges={(1, 2), (1, 3), (2, 3)})
        self.assertEqual(g, g_comp)
Esempio n. 3
0
def init():
    return list(
        tqdm((cd.PDAG(arcs=arcs, edges=edges, new=False)
              for arcs, edges in arcs_edges),
             total=ngraphs))
Esempio n. 4
0
import causaldag as cd
from line_profiler import LineProfiler
from tqdm import tqdm

nnodes = 500
ngraphs = 100
dags = cd.rand.directed_erdos(nnodes, 40 / (nnodes - 1), ngraphs)
cpdags1 = [dag.cpdag_new(new=True) for dag in dags]
arcs_edges = [(cpdag.arcs, cpdag.edges) for cpdag in cpdags1]

print('add consecutively')
pdags = list(
    tqdm((cd.PDAG(arcs=arcs, edges=edges, new=False)
          for arcs, edges in arcs_edges),
         total=ngraphs))
print('add all at once')
pdags2 = list(
    tqdm((cd.PDAG(arcs=arcs, edges=edges, new=True)
          for arcs, edges in arcs_edges),
         total=ngraphs))
print('add consecutively')
pdags = list(
    tqdm((cd.PDAG(arcs=arcs, edges=edges, new=False)
          for arcs, edges in arcs_edges),
         total=ngraphs))
eq = [p == p2 for p, p2 in zip(pdags, pdags2)]
a = [p.num_edges for p in pdags]


def init_new():
    return list(
Esempio n. 5
0
    def test_shd(self):
        d1 = cd.PDAG(arcs={(0, 1)})
        d2 = cd.PDAG()
        self.assertEqual(d1.shd(d2), 1)
        self.assertEqual(d2.shd(d1), 1)

        d1 = cd.PDAG(arcs={(0, 1)})
        d2 = cd.PDAG(arcs={(0, 1)})
        self.assertEqual(d1.shd(d2), 0)
        self.assertEqual(d2.shd(d1), 0)

        d1 = cd.PDAG(arcs={(0, 1)})
        d2 = cd.PDAG(edges={(0, 1)})
        self.assertEqual(d1.shd(d2), 1)
        self.assertEqual(d2.shd(d1), 1)

        d1 = cd.PDAG(arcs={(0, 1)})
        d2 = cd.PDAG(arcs={(1, 0)})
        self.assertEqual(d1.shd(d2), 1)
        self.assertEqual(d2.shd(d1), 1)

        d1 = cd.PDAG(arcs={(0, 1), (0, 2)})
        d2 = cd.PDAG(arcs={(0, 1)}, edges={(0, 2)})
        self.assertEqual(d1.shd(d2), 1)
        self.assertEqual(d2.shd(d1), 1)

        d1 = cd.PDAG(arcs={(0, 1), (0, 2)})
        d2 = cd.PDAG(arcs={(1, 0), (2, 0)})
        self.assertEqual(d1.shd(d2), 2)
        self.assertEqual(d2.shd(d1), 2)

        d1 = cd.PDAG(arcs={(0, 1), (0, 2)})
        d2 = cd.PDAG(edges={(1, 0), (2, 0)})
        self.assertEqual(d1.shd(d2), 2)
        self.assertEqual(d2.shd(d1), 2)