def __construct_tree_dict(in_file, in_id, merge_tree_dict):
    in_fp = bp.FileParser(in_file)
    for in_items in in_fp.iter():
        in_fp.print_prog()
        cur_chr = in_items[0][3:]
        cur_pos = int(in_items[1])
        cur_tag = in_items[-1]
        if "V" in cur_tag:
            type_tag = "pc_ind" if "ind" in cur_tag else "pc_snv"
        elif "refhom" in cur_tag:
            type_tag = "nc_low"
        else:
            type_tag = "nc_ind" if "ind" in cur_tag else "nc_snv"
        af = round(float(in_items[5]), FLOAT_PREC)
        cur_info = f"{in_id}_{'_'.join(in_items[2:5])}_{af}_{'_'.join(in_items[6:8])}"
        if type_tag not in merge_tree_dict:
            merge_tree_dict[type_tag] = dict()
        if cur_chr not in merge_tree_dict[type_tag]:
            merge_tree_dict[type_tag][cur_chr] = tree.RBTree()
        prev_info = merge_tree_dict[type_tag][cur_chr].search(cur_pos)
        if prev_info:
            if prev_info.split(";")[0] != cur_tag:
                print("WARNING: Inconsistent tag for locus")
            cur_info = f"{prev_info};{cur_info}"
        else:
            cur_info = f"{cur_tag};{cur_info}"
        merge_tree_dict[type_tag][cur_chr].insert(cur_pos, cur_info)
    return
Example #2
0
 def test_delete_leaf(self):
     t = tree.RBTree()
     for i in range(10):
         t.insert(i)
     self.assertTrue(t.delete(9))
     ct = grow()
     ct.root.right.right.right.right = tree.Node(None,
                                                 ct.root.right.right.right)
     self.assertTrue(tree_compare(t.root, ct.root))
Example #3
0
 def test_delete_many(self):
     t = tree.RBTree()
     for i in range(10):
         t.insert(i)
     for i in range(5, 10):
         self.assertTrue(t.delete(i))
     ct = grow()
     ct.root.right = tree.Node(4, ct.root)
     self.assertTrue(tree_compare(t.root, ct.root))
Example #4
0
 def test_find_many(self):
     t = tree.RBTree()
     for i in range(0, 100, 3):
         t.insert(i)
     for i in range(1, 100, 3):
         t.insert(i)
     for i in range(2, 100, 3):
         t.insert(i)
     for i in range(10):
         self.assertTrue(t.find(i))
Example #5
0
 def test_delete_wonder2(self):
     t = tree.RBTree()
     random.seed(0)
     vals = [0] * 100
     for i in range(len(vals)):
         k = random.randint(0, 99)
         vals[k] = 1
         t.insert(k)
     for i in range(len(vals) - 1, -1, -1):
         if vals[i] == 1:
             self.assertTrue(t.delete(i))
Example #6
0
def grow():
    ct = tree.RBTree()
    ct.root = tree.Node(3)
    ct.root.left = tree.Node(1, ct.root)
    ct.root.right = tree.Node(5, ct.root)
    ct.root.left.left = tree.Node(0, ct.root.left)
    ct.root.left.right = tree.Node(2, ct.root.left)
    ct.root.right.left = tree.Node(4, ct.root.right)
    ct.root.right.right = tree.Node(7, ct.root.right)
    ct.root.right.right.left = tree.Node(6, ct.root.right.right)
    ct.root.right.right.right = tree.Node(8, ct.root.right.right)
    ct.root.right.right.right.right = tree.Node(9, ct.root.right.right.right)
    return ct
Example #7
0
 def test_find_many2(self):
     t = tree.RBTree()
     for i in range(10, 0, -1):
         t.insert(i)
     for i in range(1, 11):
         self.assertTrue(t.find(i))
Example #8
0
 def test_insert_many(self):
     t = tree.RBTree()
     for i in range(10):
         t.insert(i)
     ct = grow()
     self.assertTrue(tree_compare(t.root, ct.root))
Example #9
0
 def test_find_none_big(self):
     t = tree.RBTree()
     t.insert(2)
     self.assertFalse(t.find(3))
Example #10
0
 def test_find_none_small(self):
     t = tree.RBTree()
     t.insert(2)
     self.assertFalse(t.find(1))
Example #11
0
 def test_delete_not_exist_big(self):
     t = tree.RBTree()
     t.insert(1)
     self.assertFalse(t.delete(2))
Example #12
0
 def test_delete_root(self):
     t = tree.RBTree()
     t.insert(1)
     self.assertTrue(t.delete(1))
     self.assertEqual(t.root, None)
Example #13
0
 def test_insert_one(self):
     t = tree.RBTree()
     t.insert(2)
     self.assertEqual(t.root.key, 2)
Example #14
0
 def test_creation(self):
     t = tree.RBTree()
     self.assertNotEqual(t, None)
Example #15
0
 def test_delete_many3(self):
     t = tree.RBTree()
     for i in range(10):
         t.insert(i)
     self.assertTrue(t.delete(3))
     self.assertTrue(t.delete(4))
Example #16
0
 def test_delete_many2(self):
     t = tree.RBTree()
     for i in range(10):
         t.insert(i)
     for i in range(0, 6):
         self.assertTrue(t.delete(i))
Example #17
0
 def test_delete_none(self):
     t = tree.RBTree()
     self.assertFalse(t.delete(2))
Example #18
0
 def test_find_one(self):
     t = tree.RBTree()
     t.insert(2)
     self.assertTrue(t.find(2))
Example #19
0
 def test_find_none(self):
     t = tree.RBTree()
     self.assertFalse(t.find(2))
Example #20
0
 def test_delete_not_exist_small(self):
     t = tree.RBTree()
     t.insert(1)
     self.assertFalse(t.delete(-1))