def test_multiple_overlap(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sample_id = self.sample_ids[0] self.insert_experiment(epidb, "hg19_chr1_1", sample_id) self.insert_annotation(epidb, "Cpg Islands") res, qid_1 = epidb.select_annotations("Cpg Islands", "hg19", None, None, None, self.admin_key) self.assertSuccess(res, qid_1) res, req = epidb.count_regions(qid_1, self.admin_key) self.assertSuccess(res, req) count = self.count_request(req) self.assertEqual(count, 14) res, qid_2 = epidb.select_regions("hg19_chr1_1", "hg19", None, None, None, None, None, None, None, self.admin_key) self.assertEqual(res, "okay") res, req = epidb.count_regions(qid_2, self.admin_key) self.assertSuccess(res, req) count = self.count_request(req) self.assertEqual(count, 21) res, i_id = epidb.intersection(qid_1, qid_2, self.admin_key) self.assertEqual(res, "okay") res, req = epidb.count_regions(i_id, self.admin_key) self.assertSuccess(res, req) count = self.count_request(req) self.assertEqual(count, 3) res, i_id = epidb.intersection(qid_2, qid_2, self.admin_key) self.assertSuccess(res, i_id) res, req = epidb.count_regions(i_id, self.admin_key) self.assertSuccess(res, req) count = self.count_request(req) self.assertEqual(count, 21) res, i_id = epidb.intersection(qid_1, qid_1, self.admin_key) self.assertSuccess(res, i_id) res, req = epidb.count_regions(i_id, self.admin_key) self.assertSuccess(res, req) count = self.count_request(req) self.assertEqual(count, 14) res, i_id = epidb.intersection(i_id, i_id, self.admin_key) self.assertSuccess(res, i_id) res, req = epidb.count_regions(i_id, self.admin_key) self.assertSuccess(res, req) count = self.count_request(req) self.assertEqual(count, 14)
def test_load_bedgraph(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sample_id = self.sample_ids[0] regions_data = gzip.open("data/bedgraph/chr19.txt.gz").read() # adding two experiments with the same data should work res = epidb.add_experiment( "S0022IH2.ERX300681.H3K36me3.bwa.GRCh38.20150528.bedgraph", "hg19", "Methylation", sample_id, "tech1", "ENCODE", "desc1", regions_data, "bedgraph", {"md5sum": "afd4af5afd5afd4af5afd5afd4af5afd5"}, self.admin_key) self.assertSuccess(res) (status, query_id) = epidb.select_regions( "#afd4af5afd5afd4af5afd5afd4af5afd5", None, None, None, None, None, "chr19", 49388217, 49417994, self.admin_key) self.assertSuccess(status, query_id) (status, input) = epidb.input_regions("hg19", "chr19\t49388217\t49417994", self.admin_key) self.assertSuccess(status, input) (status, query_overlap) = epidb.intersection(query_id, input, self.admin_key) self.assertSuccess(status, query_overlap) (status, request_id) = epidb.get_regions(query_id, "CHROMOSOME,START,END,VALUE", self.admin_key) self.assertSuccess(status, request_id) (status, overlap_request_id) = epidb.get_regions(query_id, "CHROMOSOME,START,END,VALUE", self.admin_key) self.assertSuccess(status, overlap_request_id) by_select = self.get_regions_request(request_id) by_overlap = self.get_regions_request(overlap_request_id) self.assertEqual(by_overlap, by_select) self.assertTrue(len(by_select) > 0) (status, info) = epidb.info("#afd4af5afd5afd4af5afd5afd4af5afd5", self.admin_key) self.assertEquals(info[0]["_id"], "e1")
def test_intersect_tiling(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_full(epidb) res, qid1 = epidb.tiling_regions(1000, "hg19", "chr1", self.admin_key) self.assertSuccess(res, qid1) res, qid2 = epidb.select_regions("hg19_chr1_1", "hg19", None, None, None, None, None, None, None, self.admin_key) self.assertSuccess(res, qid2) res, qid3 = epidb.intersection(qid1, qid2, self.admin_key) self.assertSuccess(res, qid3) res, req = epidb.get_regions(qid3, "CHROMOSOME,START,END", self.admin_key) self.assertSuccess(res, req) regions = self.get_regions_request(req) expected_regions = helpers.get_result("intersect_tiling") self.assertEqual(regions, expected_regions)
def test_intersection_two_genomes(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_full(epidb) res, qid_1 = epidb.select_regions("hg19_chr1_1", ["hg19", "hg18"], None, None, None, None, None, None, None, self.admin_key) self.assertSuccess(res, qid_1) res, qid_2 = epidb.select_regions("hg18_chr1_1", ["hg18", "hg19"], None, None, None, None, None, None, None, self.admin_key) self.assertSuccess(res, qid_2) res, qid_3 = epidb.intersection(qid_1, qid_2, self.admin_key) self.assertSuccess(res, qid_3) res, req = epidb.get_regions(qid_3, "CHROMOSOME,START,END", self.admin_key) self.assertSuccess(res, req) regions = self.get_regions_request(req) expected_regions = helpers.get_result("intersection_multiple_genomes") self.assertEqual(regions, expected_regions)
def test_complex1(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_full(epidb) res, qid_1_1 = epidb.select_regions("hg19_chr1_1", "hg19", None, None, None, None, None, None, None, self.admin_key) #server.get_regions(qid_1_1, ) self.assertSuccess(res, qid_1_1) res, qid_1_2 = epidb.select_regions("hg19_chr1_2", "hg19", None, None, None, None, None, None, None, self.admin_key) self.assertSuccess(res, qid_1_2) res, qid_2 = epidb.merge_queries(qid_1_1, qid_1_2, self.admin_key) self.assertSuccess(res, qid_2) res, regions = epidb.get_regions(qid_2, "CHROMOSOME,START,END", self.admin_key) self.assertSuccess(res, regions) res, qid_1_3 = epidb.select_regions("hg19_chr1_3", "hg19", None, None, None, None, None, None, None, self.admin_key) self.assertSuccess(res, qid_1_3) res, qid_5 = epidb.intersection(qid_2, qid_1_3, self.admin_key) self.assertSuccess(res, qid_5) res, req = epidb.get_regions( qid_5, "CHROMOSOME,START,END,NAME,SCORE,STRAND,SIGNAL_VALUE,P_VALUE,Q_VALUE,PEAK", self.admin_key) self.assertSuccess(res, req) regions = self.get_regions_request(req) expected_regions = helpers.get_result("complex1") self.assertEqual( regions.split("\n").sort(), expected_regions.split("\n").sort())
def test_overlap_simple(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) # Test the intersect command data_one = "chr1\t3049996\t3050022\nchr1\t3050022\t3050040\nchr1\t3050040\t3050051\nchr1\t3050051\t3050126" region = "chr1\t3050022\t3050100" (s, q1) = epidb.input_regions("hg19", data_one, self.admin_key) self.assertSuccess(s, q1) (s, q_input) = epidb.input_regions("hg19", region, self.admin_key) self.assertSuccess(s, q_input) (s, q3) = epidb.intersection(q1, q_input, self.admin_key) self.assertSuccess(s, q3) (s, req) = epidb.get_regions(q3, "CHROMOSOME,START,END", self.admin_key) self.assertSuccess(s, req) regions = self.get_regions_request(req) self.assertEqual( regions, 'chr1\t3050022\t3050040\nchr1\t3050040\t3050051\nchr1\t3050051\t3050126' ) # Test the select annotation sample_id = self.sample_ids[0] res = epidb.add_annotation("exp1", "hg19", "desc1", data_one, "CHROMOSOME,START,END", None, self.admin_key) self.assertSuccess(res) (s, q1) = epidb.select_annotations("exp1", "hg19", "chr1", 3050022, 3050100, self.admin_key) self.assertSuccess(s, q1) (s, req) = epidb.get_regions(q1, "CHROMOSOME,START,END", self.admin_key) self.assertSuccess(s, req) regions = self.get_regions_request(req) self.assertEqual( regions, 'chr1\t3050022\t3050040\nchr1\t3050040\t3050051\nchr1\t3050051\t3050126' ) # Test the select experiment sample_id = self.sample_ids[0] res = epidb.add_experiment("exp1", "hg19", "Methylation", sample_id, "tech1", "ENCODE", "desc1", data_one, "CHROMOSOME,START,END", None, self.admin_key) self.assertSuccess(res) (s, q1) = epidb.select_experiments("exp1", "chr1", 3050022, 3050100, self.admin_key) self.assertSuccess(s, q1) (s, req) = epidb.get_regions(q1, "CHROMOSOME,START,END", self.admin_key) self.assertSuccess(s, req) regions = self.get_regions_request(req) self.assertEqual( regions, 'chr1\t3050022\t3050040\nchr1\t3050040\t3050051\nchr1\t3050051\t3050126' ) (s, q1) = epidb.select_experiments("exp1", "chr1", None, None, self.admin_key) self.assertSuccess(s, q1) (s, q2) = epidb.aggregate(q1, q_input, "START", self.admin_key) self.assertSuccess(s, q2) (s, req) = epidb.get_regions(q2, "@AGG.MIN,@AGG.MAX,@AGG.COUNT", self.admin_key) self.assertSuccess(s, req) regions = self.get_regions_request(req) self.assertEqual(regions, '3050022.0000\t3050051.0000\t3')
def test_complex2(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_full(epidb) self.insert_experiment(epidb, "hg19_big_1") self.insert_experiment(epidb, "hg19_big_2") res, qid_1_1 = epidb.select_regions("hg19_big_1", "hg19", None, None, None, None, None, 1000000, 3000000, self.admin_key) self.assertSuccess(res, qid_1_1) res, req = epidb.count_regions(qid_1_1, self.admin_key) self.assertSuccess(res, req) c = self.count_request(req) res, qid_1_2 = epidb.select_regions( "hg19_big_1", "hg19", None, None, None, None, ["chr1", "chr3", "chr11", "chrX", "chr9"], None, None, self.admin_key) self.assertSuccess(res, qid_1_2) res, req = epidb.count_regions(qid_1_2, self.admin_key) self.assertSuccess(res, req) c = self.count_request(req) # this gives us regions from 1,000,000 to 3,000,000 on chromosomes chr1, chr3, chr9, chr11, chrY res, qid_2_1 = epidb.intersection(qid_1_1, qid_1_2, self.admin_key) self.assertSuccess(res, qid_2_1) res, req = epidb.count_regions(qid_2_1, self.admin_key) self.assertSuccess(res, req) c = self.count_request(req) self.assertEqual(c, 247) res, qid_2_2 = epidb.tiling_regions(1000, "hg19", ["chr1", "chr2", "chr15", "chrX"], self.admin_key) self.assertSuccess(res, qid_2_2) res, req = epidb.count_regions(qid_2_2, self.admin_key) self.assertSuccess(res, req) c = self.count_request(req) res, qid_3_1 = epidb.merge_queries(qid_2_1, qid_2_2, self.admin_key) self.assertSuccess(res, qid_3_1) res, req = epidb.count_regions(qid_3_1, self.admin_key) self.assertSuccess(res, req) c = self.count_request(req) res, qid_4_1 = epidb.filter_regions(qid_3_1, "START", ">=", "2000000", "number", self.admin_key) self.assertSuccess(res, qid_4_1) res, req = epidb.count_regions(qid_4_1, self.admin_key) self.assertSuccess(res, req) c = self.count_request(req) res, qid_4_2 = epidb.select_regions("hg19_big_2", "hg19", None, None, None, None, ["chr1", "chrX"], None, None, self.admin_key) self.assertSuccess(res, qid_4_2) (res, qid_4_2_cached) = epidb.query_cache(qid_4_2, True, self.admin_key) res, req = epidb.count_regions(qid_4_2_cached, self.admin_key) self.assertSuccess(res, req) c = self.count_request(req) self.assertEqual(c, 8961) res, qid_5_1 = epidb.intersection(qid_4_1, qid_4_2_cached, self.admin_key) self.assertSuccess(res, qid_5_1) res, req = epidb.count_regions(qid_5_1, self.admin_key) self.assertSuccess(res, req) count = self.count_request(req) self.assertEqual(count, 14356) res, qid_6_1 = epidb.filter_regions(qid_5_1, "END", "<", "2200000", "number", self.admin_key) self.assertSuccess(res, qid_6_1) (res, qid_6_1_cached) = epidb.query_cache(qid_6_1, True, self.admin_key) res, req = epidb.count_regions(qid_6_1, self.admin_key) self.assertSuccess(res, req) count = self.count_request(req) self.assertEqual(count, 52) res, req = epidb.get_regions( qid_6_1, "CHROMOSOME,START,END,NAME,SCORE,STRAND,SIGNAL_VALUE,P_VALUE,Q_VALUE,PEAK,@NAME", self.admin_key) self.assertSuccess(res, req) regions = self.get_regions_request(req) expected_regions = helpers.get_result("complex2") self.assertEqual(regions, expected_regions)