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)
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)
def init(): return list( tqdm((cd.PDAG(arcs=arcs, edges=edges, new=False) for arcs, edges in arcs_edges), total=ngraphs))
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(
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)