コード例 #1
0
ファイル: testsnt_verify.py プロジェクト: donsheehy/net-trees
 def testfinduncomplevels(self):
     T = SNT(2, 1, 1, 4)
     p1 = Point([0], Euclidean())
     p2 = Point([2], Euclidean())
     p3 = Point([11], Euclidean())
     p4 = Point([28], Euclidean())
     T.setroot(p1)
     T.insert(p2, T.root)
     T.insert(p3, T.root)
     T.insert(p4, [ch for ch in T.root.getchild().ch if ch.point == p3][0])
     ver = SNTVerify(T, [p1, p2, p3, p4])
     ver.finduncomplevels()
     self.assertEqual(len(ver.uncomplevels), 7)
     self.assertEqual(next(iter(ver.uncomplevels[5])).point, p1)
     self.assertEqual(next(iter(ver.uncomplevels[5])).level, 5)
     self.assertEqual({n.point for n in ver.uncomplevels[4]}, {p1, p4})
     self.assertEqual(len([n.level for n in ver.uncomplevels[4] if n.level == 4]), 2)
     self.assertEqual({n.point for n in ver.uncomplevels[3]}, {p1, p3, p4})
     self.assertEqual(len([n.level for n in ver.uncomplevels[3] if n.level == 3]), 3)
     self.assertEqual({n.point for n in ver.uncomplevels[2]}, {p1, p3, p4})
     self.assertEqual(len([n.level for n in ver.uncomplevels[2] if n.level == 2]), 2)
     self.assertEqual(len([n.level for n in ver.uncomplevels[2] if n.level == 3]), 1)
     self.assertEqual({n.point for n in ver.uncomplevels[1]}, {p1, p3, p4})
     self.assertEqual(len([n.level for n in ver.uncomplevels[1] if n.level == 1]), 1)
     self.assertEqual(len([n.level for n in ver.uncomplevels[1] if n.level == 2]), 1)
     self.assertEqual(len([n.level for n in ver.uncomplevels[1] if n.level == 3]), 1)
     self.assertEqual({n.point for n in ver.uncomplevels[0]}, {p1, p2, p3, p4})
     self.assertEqual(len([n.level for n in ver.uncomplevels[0] if n.level == 0]), 2)
     self.assertEqual(len([n.level for n in ver.uncomplevels[0] if n.level == 2]), 1)
     self.assertEqual(len([n.level for n in ver.uncomplevels[0] if n.level == 3]), 1)
     self.assertEqual({n.point for n in ver.uncomplevels[-1]}, {p1, p2, p3, p4})
     self.assertEqual(len([n.level for n in ver.uncomplevels[-1] if n.level == -1]), 2)
     self.assertEqual(len([n.level for n in ver.uncomplevels[-1] if n.level == 2]), 1)
     self.assertEqual(len([n.level for n in ver.uncomplevels[-1] if n.level == 3]), 1)
コード例 #2
0
ファイル: testsnt_verify.py プロジェクト: donsheehy/net-trees
 def testrelativescorrect(self):
     T = SNT(2, 1, 1, 4)
     p1 = Point([0], Euclidean())
     p2 = Point([2], Euclidean())
     p3 = Point([11], Euclidean())
     p4 = Point([28], Euclidean())
     T.setroot(p1)
     T.insert(p2, T.root)
     T.insert(p3, T.root)
     T.insert(p4, [ch for ch in T.root.getchild().ch if ch.point == p3][0])
     ver = SNTVerify(T, [p1, p2, p3, p4])
     ver.populate()
     self.assertTrue(ver.relativescorrect())
     [n for n in ver.uncomplevels[2] if n.point == p1][0].rel.discard([n for n in ver.uncomplevels[2] if n.point == p3][0])
     self.assertFalse(ver.relativescorrect())
コード例 #3
0
 def testinsert_onepointafterroot(self):
     T = SNT(4, 1, 1, 4)
     metric = Euclidean()
     T.setroot(Point([0, 0], metric))
     T.insert(Point([6, 0], metric), T.root)
     #  Check root got split below
     a = next(iter(T.root.ch))
     self.assertEqual(a.point, T.root.point)
     self.assertEqual(a.level, 2)
     self.assertEqual(len(a.ch), 2)
     b, c = tuple(child for child in a.ch)
     self.assertTrue(b.point is not c.point)
     self.assertEqual(b.level, 1)
     self.assertEqual(c.level, 1)
     self.assertEqual(b.getchild().level, float('-inf'))
     self.assertEqual(c.getchild().level, float('-inf'))
コード例 #4
0
ファイル: testsnt_verify.py プロジェクト: toggled/NetTrees
    def testissemicompressed(self):
        T = SNT(2, 1, 1, 4)
        p1 = Point([0], Euclidean())
        p2 = Point([2], Euclidean())
        p3 = Point([11], Euclidean())
        p4 = Point([28], Euclidean())
        T.setroot(p1)
        T.insert(p2, T.root)
        T.insert(p3, T.root)
        T.insert(p4, [ch for ch in T.root.getchild().ch if ch.point == p3][0])
        ver = SNTVerify(T, [p1, p2, p3, p4])
        ver.populate()
        self.assertTrue(ver.issemicompressed())
        n1 = [n for n in ver.uncomplevels[2] if n.point == p3][0]
        n2 = Node(p3, 1)
        n2.addch(n1.getchild())
        n1.addch(n2)
        ver.populate()
        self.assertFalse(ver.issemicompressed())

        p1 = Point([-9956], Euclidean())
        p2 = Point([1288], Euclidean())
        T = SNT(7, 1, 1, 14 / 3)
        T.setroot(p1)
        T.insert(p2, T.root)
        ver = SNTVerify(T, [p1, p2])
        ver.populate()
        self.assertTrue(ver.issemicompressed())
コード例 #5
0
ファイル: testsnt_verify.py プロジェクト: toggled/NetTrees
 def testfindminlevelrels(self):
     T = SNT(2, 1, 1, 4)
     p1 = Point([0], Euclidean())
     p2 = Point([2], Euclidean())
     p3 = Point([11], Euclidean())
     p4 = Point([28], Euclidean())
     T.setroot(p1)
     T.insert(p2, T.root)
     T.insert(p3, T.root)
     T.insert(p4, [ch for ch in T.root.getchild().ch if ch.point == p3][0])
     ver = SNTVerify(T, [p1, p2, p3, p4])
     ver.findminlevelrels()
     self.assertEqual(ver.minlevels[(p1, p1)], float('-inf'))
     self.assertEqual(ver.minlevels[(p2, p2)], float('-inf'))
     self.assertEqual(ver.minlevels[(p3, p3)], float('-inf'))
     self.assertEqual(ver.minlevels[(p4, p4)], float('-inf'))
     self.assertEqual(ver.minlevels[(p1, p2)], -1)
     self.assertEqual(ver.minlevels[(p1, p3)], 2)
     self.assertEqual(ver.minlevels[(p1, p4)], 3)
     self.assertEqual(ver.minlevels[(p2, p3)], 2)
     self.assertEqual(ver.minlevels[(p2, p4)], 3)
     self.assertEqual(ver.minlevels[(p3, p4)], 3)
コード例 #6
0
ファイル: testsnt_verify.py プロジェクト: toggled/NetTrees
 def testislocalnettree(self):
     T = SNT(2, 1, 1, 4)
     p1 = Point([0], Euclidean())
     p2 = Point([2], Euclidean())
     p3 = Point([11], Euclidean())
     p4 = Point([28], Euclidean())
     T.setroot(p1)
     T.insert(p2, T.root)
     T.insert(p3, T.root)
     T.insert(p4, [ch for ch in T.root.getchild().ch if ch.point == p3][0])
     ver = SNTVerify(T, [p1, p2, p3, p4])
     ver.populate()
     self.assertTrue(ver.islocalnettree())
     p3.coords = [8]
     self.assertFalse(ver.islocalnettree())
     p3.coords = [17]
     self.assertFalse(ver.islocalnettree())
     p3.coords = [11]
     self.assertTrue(ver.islocalnettree())
     n1 = [n for n in ver.uncomplevels[3] if n.point == p1][0]
     n1.point = Point([1], Euclidean())
     self.assertFalse(ver.islocalnettree())
コード例 #7
0
 def testinsert(self):
     T = SNT(2, 1, 1, 4)
     p1 = Point([0], Euclidean())
     p2 = Point([2], Euclidean())
     p3 = Point([11], Euclidean())
     p4 = Point([28], Euclidean())
     T.setroot(p1)
     T.insert(p2, T.root)
     T.insert(p3, T.root)
     T.insert(p4, [ch for ch in T.root.getchild().ch if ch.point == p3][0])
     self.assertEqual(T.root.getchild().point, p1)
     self.assertEqual(T.root.getchild().level, 5)
     n1 = [ch for ch in T.root.getchild().ch if ch.point == p1][0]
     n2 = [ch for ch in T.root.getchild().ch if ch.point == p4][0]
     self.assertTrue(n1.level == n2.level == 4)
     self.assertEqual(n2.getchild().point, p4)
     self.assertEqual(n2.getchild().level, 3)
     self.assertEqual(n2.getchild().getchild().level, float('-inf'))
     n3 = [ch for ch in n1.ch if ch.point == p1][0]
     n4 = [ch for ch in n1.ch if ch.point == p3][0]
     self.assertTrue(n3.level == n4.level == 3)
     self.assertEqual(n4.getchild().point, p3)
     self.assertEqual(n4.getchild().level, 2)
     self.assertEqual(n4.getchild().getchild().level, float('-inf'))
     self.assertEqual(n3.getchild().point, p1)
     self.assertEqual(n3.getchild().level, 2)
     self.assertEqual(n3.getchild().getchild().point, p1)
     self.assertEqual(n3.getchild().getchild().level, 1)
     n5 = [ch for ch in n3.getchild().getchild().ch if ch.point == p1][0]
     n6 = [ch for ch in n3.getchild().getchild().ch if ch.point == p2][0]
     self.assertTrue(n5.level == n6.level == 0)
     self.assertEqual(n5.getchild().point, p1)
     self.assertEqual(n5.getchild().level, -1)
     self.assertEqual(n6.getchild().point, p2)
     self.assertEqual(n6.getchild().level, -1)
     self.assertEqual(n5.getchild().getchild().level, float('-inf'))
     self.assertEqual(n6.getchild().getchild().level, float('-inf'))