def test_include_invalid_regions(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) data = """chr1\t1\t100000000000000000 chr10\t666\t66610000 chrY\t12345\t1234567""" (s, a) = epidb.add_annotation("test annotation", "hg19", "testing", data, "CHROMOSOME,START,END", {"HI": "HOW ARE YOU?"}, self.admin_key) self.assertFailure(s, a) self.assertEquals( a, "Error while reading the BED file. Line: 0. - '100000000000000000 is not a valid end position'" ) data = """chr1\t2147483647\t2147483648""" (s, a) = epidb.add_annotation("test annotation", "hg19", "testing", data, "CHROMOSOME,START,END", {"HI": "HOW ARE YOU?"}, self.admin_key) self.assertFailure(s, a) self.assertEquals( a, "Invalid region: 2147483647 - 2147483648. It is beyond the length of the chromosome chr1 ." )
def test_annotation_shuffle(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) cpg_island = ",".join([ "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG", "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP" ]) file_data = None with open("data/cpgIslandExtFull.bed", 'r') as f: file_data = f.read() res = epidb.add_annotation( "Cpg Islands", "hg19", "CpG islands are associated ...", file_data, cpg_island, { "url": "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema" }, self.admin_key) self.assertSuccess(res) res, qid = epidb.select_annotations("Cpg Islands", "hg19", None, None, None, self.admin_key) self.assertSuccess(res, qid) res, req = epidb.get_regions(qid, "CHROMOSOME,START,END", self.admin_key) self.assertSuccess(res, req) regions = self.get_regions_request(req) # --- file_data = None with open("data/cpgIslandExtShuffle.bed", 'r') as f: file_data = f.read() res = epidb.add_annotation( "Cpg Islands Shuffle", "hg19", "CpG islands are associated ...", file_data, cpg_island, { "url": "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema" }, self.admin_key) self.assertSuccess(res) res, qid_shuffle = epidb.select_annotations("Cpg Islands Shuffle", "hg19", None, None, None, self.admin_key) self.assertSuccess(res, qid) res, req_shuffle = epidb.get_regions(qid_shuffle, "CHROMOSOME,START,END", self.admin_key) self.assertSuccess(res, req) regions_shuffle = self.get_regions_request(req_shuffle) self.assertEqual(regions_shuffle, regions) self.assertEqual(regions, regions_shuffle)
def test_list_annotations(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) genome_info = None with open("data/genomes/hg19", 'r') as f: genome_info = f.read().replace(",", "") file_data = None with open("data/cpgIslandExt.txt", 'r') as f: file_data = f.read() res = epidb.add_genome("hg19", "Human genome 19", genome_info, self.admin_key) self.assertSuccess(res) res = epidb.add_annotation( "Cpg Islands", "hg19", "CpG islands are associated ...", file_data, "", { "url": "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema" }, self.admin_key) self.assertSuccess(res) res = epidb.add_genome("hg19a", "Human genome 19a", genome_info, self.admin_key) self.assertSuccess(res) res = epidb.add_annotation( "Cpg Islands", "hg19a", "CpG islands are associated ...", file_data, "", { "url": "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema" }, self.admin_key) self.assertSuccess(res) res = epidb.add_genome("hg19b", "Human genome 19b", genome_info, self.admin_key) self.assertSuccess(res) res = epidb.add_annotation( "Cpg Islands", "hg19b", "CpG islands are associated ...", file_data, "", { "url": "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema" }, self.admin_key) self.assertSuccess(res) expected = [ 'okay', [['a1', 'Chromosomes size for hg19'], ['a2', 'Cpg Islands'], ['a3', 'Chromosomes size for hg19a'], ['a4', 'Cpg Islands'], ['a5', 'Chromosomes size for hg19b'], ['a6', 'Cpg Islands']] ] result = epidb.list_annotations("", self.admin_key) self.assertEqual(expected, result)
def test_annotation_full_cpg_islands(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) cpg_island = ",".join([ "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG", "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP" ]) with open("data/cpgIslandExtFull.txt", 'r') as f: file_data = f.read() regions_count = len(file_data.split("\n")) (res, a_1) = epidb.add_annotation("Cpg Islands", "hg19", "Complete CpG islands", file_data, cpg_island, None, self.admin_key) self.assertSuccess(res, a_1) res, qid_1 = epidb.select_annotations("Cpg Islands", "hg19", None, None, None, self.admin_key) self.assertSuccess(res, qid_1) (s, req) = epidb.count_regions(qid_1, self.admin_key) count = self.count_request(req) self.assertEqual(regions_count, count)
def test_long_sequence_content(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sequence = open("data/genomes/chromosomes/hg19.chr19").read() res = epidb.upload_chromosome("hg19", "chr19", sequence, self.admin_key) self.assertSuccess(res) join_seq = "".join(sequence.split("\n")) data = "chr19\t0\t59128983" ann_name = "Full chr19" (s, aid) = epidb.add_annotation(ann_name, "hg19", None, data, None, None, self.admin_key) (s, sid) = epidb.select_annotations(ann_name, "hg19", None, None, None, self.admin_key) fmt = "@SEQUENCE" (s, req) = epidb.get_regions(sid, fmt, self.admin_key) self.assertSuccess(res, req) regions = self.get_regions_request(req) self.assertEqual(len(regions), len(join_seq)) self.assertEqual(regions, join_seq)
def test_get_sequences(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sequence = open("data/genomes/chromosomes/chrM.fa").read() res = epidb.upload_chromosome("hg19", "chrM", sequence, self.admin_key) data = """chrM\t1\t30 chrM\t2\t31 chrM\t2340\t2377""" ann_name = "Interesting Regions at chrM" (s, aid) = epidb.add_annotation(ann_name, "hg19", None, data, None, None, self.admin_key) self.assertSuccess(s, aid) (s, sid) = epidb.select_annotations(ann_name, "hg19", None, None, None, self.admin_key) self.assertSuccess(s, sid) fmt = "CHROMOSOME,START,END,@NAME,@SEQUENCE,@LENGTH" (s, req) = epidb.get_regions(sid, fmt, self.admin_key) self.assertSuccess(res, req) regions = self.get_regions_request(req) expected = """chrM\t1\t30\tInteresting Regions at chrM\tATCACAGGTCTATCACCCTATTAACCACT\t29 chrM\t2\t31\tInteresting Regions at chrM\tTCACAGGTCTATCACCCTATTAACCACTC\t29 chrM\t2340\t2377\tInteresting Regions at chrM\tGCCTGCGTCAGATCAAAACACTGAACTGACAATTAAC\t37""" self.assertEqual(regions, expected)
def test_include_annotations(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) user_id, user_key = self.get_new_user(epidb) ann = helpers.data.ANNOTATIONS["Cpg Islands"] with open(ann["data_file"], 'r') as f: annotation_data = f.read() s = epidb.add_annotation("Cpg Islands", ann["genome"], ann["description"], annotation_data, ann["format"], ann["metadata"], user_key) self.assertFailure(s) self.modify_user_permission(epidb, user_id, "INCLUDE_ANNOTATIONS") s = epidb.add_annotation("Cpg Islands", ann["genome"], ann["description"], annotation_data, ann["format"], ann["metadata"], user_key) self.assertSuccess(s)
def test_big_file(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) f = gzip.open("data/bedgraph/bigwig.bg.gz") data = f.read() (status, a1) = epidb.add_annotation("exp_wig", "hg19", "bla", data, "bedgraph", None, self.admin_key) (status, q1) = epidb.select_annotations("exp_wig", "hg19", None, None, None, self.admin_key) status, r1 = epidb.binning(q1, "VALUE", 5, self.admin_key) binning = self.get_regions_request(r1) self.assertEqual( binning, { 'binning': { 'ranges': [ -1126.72, -726.6238, -326.5276, 73.5686, 473.6648, 873.761 ], 'counts': [8, 5, 3992582, 3489, 13] } }) to_filter_low = binning["binning"]["ranges"][2] status, filtered = epidb.filter_regions(q1, "VALUE", ">", str(to_filter_low), "number", self.admin_key) to_filter_high = binning["binning"]["ranges"][4] status, filtered = epidb.filter_regions(q1, "VALUE", "<", str(to_filter_high), "number", self.admin_key) status, r_filtered = epidb.binning(filtered, "VALUE", 10, self.admin_key) binning = self.get_regions_request(r_filtered) self.assertEqual( binning, { 'binning': { 'counts': [4, 4, 1, 2, 2, 17, 1, 3932813, 772, 119], 'ranges': [ -1126.72, -967.0013, -807.2826, -647.5638, -487.8452, -328.1265, -168.4077, -8.689, 151.0297, 310.7484, 470.4671 ] } })
def test_no_start_position(self): file_content = """1036\t1146\t43\t0\t18\tchr19\t59118819\t1000\t-10000\t+\t(TTAGGG)n\tSimple_repeat\tSimple_repeat\t5\t165\t0\t1\n585\t1080\t161\t1\t0\tchr19_gl000208_random\t0\t719\t-91970\t-\tALR/Alpha\tSatellite\tcentr\t-41\t719\t1\t4""" rmsk = [ "BIN", "swSCORE", "MILLI_DIV", "MILLI_DEL", "MILLI_INS", "NAME", "START", "END", "GENO_LEFT", "STRAND", "repNAME", "REP_CLASS", "REP_FAMILY", "REP_START", "REP_END", "REP_LEFT", "ID" ] format = ",".join(rmsk) epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) (r, a) = epidb.add_annotation("repeat_masker", "hg19", None, file_content, format, None, self.admin_key) self.assertFailure(r, a) self.assertEquals( a, "120002:The CHROMOSOME is missing in the format. Please, inform the CHROMOSOME column in the Format." ) rmsk2 = [ "BIN", "swSCORE", "MILLI_DIV", "MILLI_DEL", "MILLI_INS", "CHROMOSOME", "START", "END", "GENO_LEFT", "STRAND", "repNAME", "REP_CLASS", "REP_FAMILY", "REP_START", "REP_END", "REP_LEFT", "ID" ] format2 = ",".join(rmsk2) (r, a) = epidb.add_annotation("repeat_masker2", "hg19", None, file_content, format2, None, self.admin_key) self.assertSuccess(r, a)
def test_output_format(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) file_data = open("data/cpgIslandAllFields.txt").read() cpg_island = ",".join([ "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG", "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP" ]) res = epidb.add_annotation("Cpg Islands", "hg19", "CpG islands", file_data, cpg_island, None, self.admin_key) self.assertSuccess(res) res, qid_1 = epidb.select_annotations("Cpg Islands", "hg19", None, None, None, self.admin_key) self.assertSuccess(res, qid_1) self.assertEqual(qid_1, 'q1') res, req = epidb.count_regions(qid_1, self.admin_key) self.assertSuccess(res, req) count = self.count_request(req) self.assertEqual(10, count) res, req = epidb.get_regions( qid_1, "chr:start:end:name:length:cpgNum:gcNum:perCpg:perGc:obsExp", self.admin_key) self.assertEquals( req, "125000:Column name 'chr:start:end:name:length:cpgNum:gcNum:perCpg:perGc:obsExp' does not exist." ) res, req = epidb.get_regions( qid_1, "CHROMOSOME,START,END,NAME,LENGTH,NUM_CPG,NUM_GC,PER_CPG,PER_CG,OBS_EXP", self.admin_key) regions = self.get_regions_request(req) expected = 'chr1\t28735\t29810\tCpG: 116\t1075\t116\t787\t21.6000\t73.2000\t0.8300\nchr1\t135124\t135563\tCpG: 30\t439\t30\t295\t13.7000\t67.2000\t0.6400\nchr1\t327790\t328229\tCpG: 29\t439\t29\t295\t13.2000\t67.2000\t0.6200\nchr1\t437151\t438164\tCpG: 84\t1013\t84\t734\t16.6000\t72.5000\t0.6400\nchr1\t449273\t450544\tCpG: 99\t1271\t99\t777\t15.6000\t61.1000\t0.8400\nchr1\t533219\t534114\tCpG: 94\t895\t94\t570\t21.0000\t63.7000\t1.0400\nchr1\t544738\t546649\tCpG: 171\t1911\t171\t1405\t17.9000\t73.5000\t0.6700\nchr1\t713984\t714547\tCpG: 60\t563\t60\t385\t21.3000\t68.4000\t0.9200\nchr1\t762416\t763445\tCpG: 115\t1029\t115\t673\t22.4000\t65.4000\t1.0700\nchr1\t788863\t789211\tCpG: 28\t348\t28\t192\t16.1000\t55.2000\t1.0600' self.assertSuccess(res, regions) self.assertEquals(expected, regions)
def test_annotation_signal_bedgraph(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sample_id = self.sample_ids[0] files = ["test1"] for filename in files: wig_data = helpers.load_bedgraph(filename) res = epidb.add_annotation(filename, "hg19", "Test data", wig_data, "bedgraph", None, self.admin_key) self.assertSuccess(res) (s, q) = epidb.select_annotations(files, "hg19", None, None, None, self.admin_key) (s, req) = epidb.count_regions(q, self.admin_key) self.assertSuccess(s, req) count = self.count_request(req) self.assertEqual(1000, count) (s, q_filtered_down) = epidb.filter_regions(q, "VALUE", ">", "0.75", "number", self.admin_key) (s, q_filtered_up) = epidb.filter_regions(q_filtered_down, "VALUE", "<", "0.8", "number", self.admin_key) (s, q_chr_x) = epidb.filter_regions(q_filtered_up, "CHROMOSOME", "!=", "chrX", "string", self.admin_key) (s, q_chr_7) = epidb.filter_regions(q_chr_x, "CHROMOSOME", "!=", "chr7", "string", self.admin_key) (s, req) = epidb.get_regions( q_chr_7, "CHROMOSOME,START,END,VALUE,@NAME,@EPIGENETIC_MARK", self.admin_key) regions = self.get_regions_request(req) self.assertEqual( regions, 'chr1\t104372258\t104372293\t0.7767\ttest1\t\nchr10\t126498141\t126498176\t0.7695\ttest1\t\nchr11\t66110277\t66110312\t0.7613\ttest1\t\nchr15\t38653026\t38653061\t0.7720\ttest1\t\nchr15\t87725326\t87725361\t0.7727\ttest1\t\nchr16\t2119419\t2119454\t0.7696\ttest1\t\nchr16\t63360719\t63360754\t0.7740\ttest1\t\nchr19\t46369215\t46369250\t0.7727\ttest1\t\nchr8\t21923667\t21923702\t0.7930\ttest1\t' )
def test_annotation_info(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) aid = None with open("data/cpgIslandExt.txt") as f: res, aid = epidb.add_annotation("Cpg Islands", "hg19", "CpG islands are associated ...", f.read(), "", {"url":"genome.ucsc.edu...", "meta":"data"}, self.admin_key) self.assertSuccess(res, aid) res, data = epidb.info(aid, self.admin_key) self.assertEqual(res, 'okay') self.assertEqual(data[0]['name'], "Cpg Islands") self.assertEqual(data[0]['description'], "CpG islands are associated ...") self.assertEqual(data[0]['genome'], "hg19") self.assertEqual(data[0]['extra_metadata'], {"url":"genome.ucsc.edu...", "meta":"data"}) self.assertEqual(data[0]['upload_info']['user'], "test_admin") self.assertEqual(data[0]['format'], "CHROMOSOME,START,END") self.assertEqual(data[0]['_id'], aid)
def test_annotation(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) file_data = None with open("data/cpgIslandExt.txt", 'r') as f: file_data = f.read() res = epidb.add_annotation( "Cpg Islands", "hg19", "CpG islands are associated ...", file_data, "", { "url": "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema" }, self.admin_key) self.assertSuccess(res) res, annotations = epidb.list_annotations("hg19", self.admin_key) self.assertSuccess(res, annotations) self.assertEqual(len(annotations), 2) self.assertEqual(annotations[0][1], "Chromosomes size for hg19") self.assertEqual(annotations[1][1], "Cpg Islands") size = len(file_data.split("\n")) res, qid = epidb.select_annotations("Cpg Islands", "hg19", None, None, None, self.admin_key) self.assertSuccess(res, qid) res, req = epidb.count_regions(qid, self.admin_key) self.assertSuccess(res, req) count = self.count_request(req) self.assertEqual(size, count) res, req = epidb.get_regions(qid, "CHROMOSOME,START,END", self.admin_key) self.assertSuccess(res, req) regions = self.get_regions_request(req) self.assertEqual(regions, file_data)
def test_annotation_signal_wig(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sample_id = self.sample_ids[0] files = [ "scores1", "scores2", "scores3", "scores4", "scores5", "scores6", "scores7", "yeast_pol2", "yeast_rap1" ] for filename in files: wig_data = helpers.load_wig(filename) res = epidb.add_annotation(filename, "hg19", "Test data", wig_data, "wig", None, self.admin_key) self.assertSuccess(res) (s, r) = epidb.select_annotations(files, "hg19", None, None, None, self.admin_key) (s, req) = epidb.count_regions(r, self.admin_key) count = self.count_request(req) self.assertEqual(5667, count)
def test_wrong_chromosomes_usage(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) cpg_island = ",".join([ "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG", "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP" ]) file_data = None with open("data/cpgIslandExtFull.txt", 'r') as f: file_data = f.read() res = epidb.add_annotation("Cpg Islands", "hg19", "Complete CpG islands", file_data, cpg_island, None, self.admin_key) self.assertSuccess(res) size_total = len(file_data.split("\n")) (status, qid_cpg) = epidb.select_annotations("Cpg Islands", "hg19", "chr1", None, None, self.admin_key) (s, req) = epidb.count_regions(qid_cpg, self.admin_key) self.assertSuccess(s, req) c = self.count_request(req) self.assertEquals(2462, c) total = 0 (status, cq1) = epidb.select_annotations("Cpg Islands", "hg19", "chr1", None, None, self.admin_key) (s, req1) = epidb.count_regions(cq1, self.admin_key) c1 = self.count_request(req1) (status, cq2) = epidb.select_annotations("Cpg Islands", "hg19", "chr7", None, None, self.admin_key) (s, req2) = epidb.count_regions(cq2, self.admin_key) c2 = self.count_request(req2) (status, cq3) = epidb.select_annotations("Cpg Islands", "hg19", "chr18", None, None, self.admin_key) (s, req3) = epidb.count_regions(cq3, self.admin_key) c3 = self.count_request(req3) (status, cq4) = epidb.select_annotations("Cpg Islands", "hg19", "chrX", None, None, self.admin_key) (s, req4) = epidb.count_regions(cq4, self.admin_key) c4 = self.count_request(req4) total = int(c1) + int(c2) + int(c3) + int(c4) (status, qid_count) = epidb.select_annotations( "Cpg Islands", "hg19", ["chr1", "chr7", "chr18", "chrX"], None, None, self.admin_key) (s, req) = epidb.count_regions(qid_count, self.admin_key) c = self.count_request(req) self.assertEquals(c, total) cpg_island_chrs = """chr1 chr10 chr11 chr11_gl000202_random chr12 chr13 chr14 chr15 chr16 chr17 chr17_ctg5_hap1 chr17_gl000204_random chr17_gl000205_random chr18 chr19 chr1_gl000191_random chr1_gl000192_random chr2 chr20 chr21 chr22 chr3 chr4 chr4_ctg9_hap1 chr4_gl000193_random chr4_gl000194_random chr5 chr6 chr6_apd_hap1 chr6_cox_hap2 chr6_dbb_hap3 chr6_mann_hap4 chr6_mcf_hap5 chr6_qbl_hap6 chr6_ssto_hap7 chr7 chr8 chr8_gl000197_random chr9 chr9_gl000199_random chr9_gl000200_random chr9_gl000201_random chrUn_gl000211 chrUn_gl000212 chrUn_gl000213 chrUn_gl000214 chrUn_gl000215 chrUn_gl000216 chrUn_gl000217 chrUn_gl000218 chrUn_gl000219 chrUn_gl000220 chrUn_gl000221 chrUn_gl000222 chrUn_gl000223 chrUn_gl000224 chrUn_gl000225 chrUn_gl000228 chrUn_gl000229 chrUn_gl000231 chrUn_gl000235 chrUn_gl000236 chrUn_gl000237 chrUn_gl000240 chrUn_gl000241 chrUn_gl000242 chrUn_gl000243 chrX chrY""" (status, qid_count) = epidb.select_annotations("Cpg Islands", "hg19", cpg_island_chrs.split("\n"), None, None, self.admin_key) (s, req) = epidb.count_regions(qid_count, self.admin_key) c = self.count_request(req) self.assertEquals(size_total, c)
def test_aggregation(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sample_id = self.sample_ids[0] cpg_island = ",".join([ "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG", "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP" ]) with open("data/cpgIslandExtFull.txt", 'r') as f: file_data = f.read() (res, a_1) = epidb.add_annotation("Cpg Islands", "hg19", "Complete CpG islands", file_data, cpg_island, None, self.admin_key) self.assertSuccess(res, a_1) res, q_cgi = epidb.select_annotations("Cpg Islands", "hg19", None, None, None, self.admin_key) self.assertSuccess(res, q_cgi) res, qid_2 = epidb.tiling_regions(1000000, "hg19", None, self.admin_key) self.assertSuccess(res, qid_2) res, req = epidb.count_regions(qid_2, self.admin_key) self.assertSuccess(res, req) count = self.count_request(req) self.assertEquals(count, 3118) res, _qid_3 = epidb.aggregate(q_cgi, qid_2, "@LENGTH", self.admin_key) self.assertSuccess(res, _qid_3) res, qid_3 = epidb.query_cache(_qid_3, True, self.admin_key) self.assertSuccess(res, qid_3) res, qid_4 = epidb.filter_regions(qid_3, "@AGG.COUNT", ">", "0", "number", self.admin_key) res, req = epidb.count_regions(qid_4, self.admin_key) count = self.count_request(req) self.assertEquals(count, 2574) res, qid_4 = epidb.filter_regions(qid_2, "@AGG.COUNT", "<", "0", "number", self.admin_key) res, req = epidb.count_regions(qid_4, self.admin_key) count = self.count_request(req) self.assertEquals(count, 0) res, qid_4 = epidb.filter_regions(qid_3, "@AGG.COUNT", ">=", "100", "number", self.admin_key) (res, req) = epidb.get_regions( qid_4, "CHROMOSOME,START,END,@AGG.MIN,@AGG.MAX,@AGG.MEDIAN,@AGG.MEAN,@AGG.VAR,@AGG.SD,@AGG.COUNT,@AGG.SUM", self.admin_key) self.assertSuccess(res, req) regions = self.get_regions_request(req) expected = 'chr1\t1000000\t2000000\t201.0000\t5585.0000\t469.0000\t766.0082\t589695.4375\t767.9163\t122\t93453.0000\nchr16\t0\t1000000\t201.0000\t6377.0000\t484.0000\t746.6083\t674998.0625\t821.5826\t120\t89593.0000\nchr16\t1000000\t2000000\t201.0000\t5449.0000\t398.0000\t666.6393\t630197.3125\t793.8497\t122\t81330.0000\nchr16\t2000000\t3000000\t201.0000\t4843.0000\t533.0000\t780.4951\t559994.2500\t748.3276\t101\t78830.0000\nchr16\t88000000\t89000000\t202.0000\t3785.0000\t347.0000\t553.3461\t295400.6875\t543.5078\t104\t57548.0000\nchr19\t0\t1000000\t201.0000\t7814.0000\t424.0000\t776.2705\t944608.4375\t971.9097\t122\t94705.0000\nchr19\t1000000\t2000000\t201.0000\t6035.0000\t430.0000\t738.8853\t625527.1250\t790.9027\t183\t135216.0000\nchr19\t2000000\t3000000\t201.0000\t3978.0000\t395.0000\t673.9907\t444749.5000\t666.8954\t107\t72117.0000\nchr19\t3000000\t4000000\t201.0000\t2753.0000\t387.0000\t531.0648\t172512.1094\t415.3458\t108\t57355.0000\nchr20\t62000000\t63000000\t202.0000\t5019.0000\t501.0000\t716.2427\t427763.9375\t654.0366\t103\t73773.0000\nchr7\t0\t1000000\t201.0000\t6234.0000\t348.0000\t556.3500\t475220.5625\t689.3624\t100\t55635.0000\nchr9\t139000000\t140000000\t202.0000\t6342.0000\t406.0000\t777.3303\t817548.5625\t904.1839\t109\t84729.0000' self.assertEquals(regions, expected) (s, req) = epidb.count_regions(qid_4, self.admin_key) self.assertSuccess(s, req) count = self.count_request(req) self.assertEquals(count, 12)
def test_aggregation_bug_on_normalfields_better_data(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) res = epidb.add_technique("ChIP-seq", "ChIP-sequencing", {}, self.admin_key) self.assertSuccess(res) sample_id = self.sample_ids[0] broad_peak_format = ",".join([ "CHROMOSOME", "START", "END", "NAME", "SCORE", "STRAND", "SIGNAL_VALUE", "P_VALUE", "Q_VALUE", ]) with open("data/wgEncodeBroadHistoneH1hescH3k27me3StdPk.bed", 'r') as f: file_data = f.read() (res, a_1) = epidb.add_experiment( "wgEncodeBroadHistoneH1hescH3k27me3StdPk.bed", "hg19", "H3k4me3", "s1", "ChIPseq", "ENCODE", "wgEncodeBroadHistoneH1hescH3k27me3StdPk.bed from ENCODE", file_data, broad_peak_format, None, self.admin_key) self.assertSuccess(res, a_1) res, q_exp = epidb.select_experiments( "wgEncodeBroadHistoneH1hescH3k27me3StdPk.bed", "chr1", None, None, self.admin_key) self.assertSuccess(res, q_exp) # Insert annotation cpg_island = ",".join([ "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG", "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP" ]) with open("data/cpgIslandExtFull.txt", 'r') as f: file_data = f.read() (res, a_1) = epidb.add_annotation("Cpg Islands", "hg19", "Complete CpG islands", file_data, cpg_island, None, self.admin_key) self.assertSuccess(res, a_1) res, q_cgi = epidb.select_annotations("Cpg Islands", "hg19", None, None, None, self.admin_key) self.assertSuccess(res, q_cgi) res, qid_3 = epidb.aggregate(q_exp, q_cgi, "SCORE", self.admin_key) self.assertSuccess(res, qid_3) res, chr_sizes = epidb.select_annotations("Chromosomes size for hg19", "hg19", None, None, None, self.admin_key) res, qid_5 = epidb.aggregate(qid_3, chr_sizes, "@AGG.COUNT", self.admin_key) status, req = epidb.get_regions( qid_5, "CHROMOSOME,@AGG.MIN,@AGG.MAX,@AGG.MEDIAN,@AGG.MEAN,@AGG.VAR,@AGG.SD,@AGG.COUNT", self.admin_key) rs = self.get_regions_request(req) expected = 'chr1\t0.0000\t8.0000\t0.0000\t0.5142\t0.5301\t0.7281\t2462' self.assertEquals(rs, expected)
def test_coverage(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) file_data = None with open("data/cpgIslandExtFull.txt", 'r') as f: file_data = f.read() cpg_island = ",".join([ "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG", "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP" ]) res = epidb.add_annotation( "Cpg Islands", "hg19", "CpG islands are associated ...", file_data, cpg_island, { "url": "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema" }, self.admin_key) self.assertSuccess(res) res, qid = epidb.select_annotations("Cpg Islands", "hg19", None, None, None, self.admin_key) self.assertSuccess(res, qid) status, req = epidb.coverage(qid, "HG19", self.admin_key) coverage = self.get_regions_request(req) self.assertEqual( coverage, { 'coverages': { 'chr8_gl000197_random': { 'total': 3140, 'coverage': 8.4465, 'size': 37175 }, 'chrUn_gl000229': { 'total': 1962, 'coverage': 9.8529, 'size': 19913 }, 'chr6_apd_hap1': { 'total': 39175, 'coverage': 0.8475, 'size': 4622290 }, 'chrUn_gl000223': { 'total': 2949, 'coverage': 1.6342, 'size': 180455 }, 'chrUn_gl000236': { 'total': 1060, 'coverage': 2.5278, 'size': 41934 }, 'chr13': { 'total': 453125, 'coverage': 0.3934, 'size': 115169878 }, 'chr12': { 'total': 851919, 'coverage': 0.6365, 'size': 133851895 }, 'chr11': { 'total': 1036273, 'coverage': 0.7676, 'size': 135006516 }, 'chr10': { 'total': 966963, 'coverage': 0.7134, 'size': 135534747 }, 'chr17': { 'total': 1274581, 'coverage': 1.5698, 'size': 81195210 }, 'chr16': { 'total': 1081705, 'coverage': 1.1972, 'size': 90354753 }, 'chr15': { 'total': 665790, 'coverage': 0.6494, 'size': 102531392 }, 'chr14': { 'total': 622989, 'coverage': 0.5803, 'size': 107349540 }, 'chr19': { 'total': 1624580, 'coverage': 2.7475, 'size': 59128983 }, 'chr18': { 'total': 439689, 'coverage': 0.5631, 'size': 78077248 }, 'chrUn_gl000228': { 'total': 49978, 'coverage': 38.7066, 'size': 129120 }, 'chrUn_gl000243': { 'total': 296, 'coverage': 0.683, 'size': 43341 }, 'chr9_gl000200_random': { 'total': 223, 'coverage': 0.1192, 'size': 187035 }, 'chr6_mann_hap4': { 'total': 74514, 'coverage': 1.5911, 'size': 4683263 }, 'chrUn_gl000237': { 'total': 312, 'coverage': 0.6802, 'size': 45867 }, 'chrUn_gl000213': { 'total': 4465, 'coverage': 2.7186, 'size': 164239 }, 'chrUn_gl000235': { 'total': 406, 'coverage': 1.1777, 'size': 34474 }, 'chrUn_gl000211': { 'total': 1413, 'coverage': 0.8483, 'size': 166566 }, 'chr17_gl000204_random': { 'total': 2683, 'coverage': 3.2997, 'size': 81310 }, 'chrUn_gl000212': { 'total': 4931, 'coverage': 2.6389, 'size': 186858 }, 'chrUn_gl000215': { 'total': 5660, 'coverage': 3.2803, 'size': 172545 }, 'chrUn_gl000214': { 'total': 636, 'coverage': 0.4618, 'size': 137718 }, 'chrUn_gl000217': { 'total': 3354, 'coverage': 1.9483, 'size': 172149 }, 'chrUn_gl000216': { 'total': 1341, 'coverage': 0.7783, 'size': 172294 }, 'chr6_dbb_hap3': { 'total': 83010, 'coverage': 1.8005, 'size': 4610396 }, 'chrUn_gl000218': { 'total': 2063, 'coverage': 1.2802, 'size': 161147 }, 'chr6_cox_hap2': { 'total': 92751, 'coverage': 1.9342, 'size': 4795371 }, 'chrUn_gl000219': { 'total': 1778, 'coverage': 0.9922, 'size': 179198 }, 'chr7': { 'total': 1147864, 'coverage': 0.7213, 'size': 159138663 }, 'chr1_gl000191_random': { 'total': 1570, 'coverage': 1.4751, 'size': 106433 }, 'chr4_ctg9_hap1': { 'total': 617, 'coverage': 0.1045, 'size': 590426 }, 'chrUn_gl000222': { 'total': 4795, 'coverage': 2.5661, 'size': 186861 }, 'chr17_ctg5_hap1': { 'total': 30127, 'coverage': 1.7924, 'size': 1680828 }, 'chr11_gl000202_random': { 'total': 257, 'coverage': 0.6408, 'size': 40103 }, 'chr6_qbl_hap6': { 'total': 90147, 'coverage': 1.9546, 'size': 4611984 }, 'chr22': { 'total': 562123, 'coverage': 1.0957, 'size': 51304566 }, 'chrY': { 'total': 115810, 'coverage': 0.1951, 'size': 59373566 }, 'chr20': { 'total': 612174, 'coverage': 0.9713, 'size': 63025520 }, 'chr21': { 'total': 268220, 'coverage': 0.5573, 'size': 48129895 }, 'chr6_mcf_hap5': { 'total': 76009, 'coverage': 1.5726, 'size': 4833398 }, 'chr17_gl000205_random': { 'total': 301, 'coverage': 0.1724, 'size': 174588 }, 'chrX': { 'total': 732552, 'coverage': 0.4718, 'size': 155270560 }, 'chr2': { 'total': 1379397, 'coverage': 0.5672, 'size': 243199373 }, 'chr4_gl000193_random': { 'total': 602, 'coverage': 0.3172, 'size': 189789 }, 'chr6': { 'total': 942464, 'coverage': 0.5508, 'size': 171115067 }, 'chr5': { 'total': 966173, 'coverage': 0.534, 'size': 180915260 }, 'chr4': { 'total': 837951, 'coverage': 0.4384, 'size': 191154276 }, 'chr3': { 'total': 882783, 'coverage': 0.4458, 'size': 198022430 }, 'chr1': { 'total': 1881629, 'coverage': 0.7549, 'size': 249250621 }, 'chr1_gl000192_random': { 'total': 2945, 'coverage': 0.5379, 'size': 547496 }, 'chr9_gl000199_random': { 'total': 246, 'coverage': 0.1448, 'size': 169874 }, 'chrUn_gl000224': { 'total': 287, 'coverage': 0.1597, 'size': 179693 }, 'chr4_gl000194_random': { 'total': 1920, 'coverage': 1.0028, 'size': 191469 }, 'chr9_gl000201_random': { 'total': 1834, 'coverage': 5.0736, 'size': 36148 }, 'chrUn_gl000220': { 'total': 17252, 'coverage': 10.6624, 'size': 161802 }, 'chrUn_gl000221': { 'total': 303, 'coverage': 0.195, 'size': 155397 }, 'chr9': { 'total': 941315, 'coverage': 0.6666, 'size': 141213431 }, 'chr8': { 'total': 864319, 'coverage': 0.5905, 'size': 146364022 }, 'chrUn_gl000225': { 'total': 9599, 'coverage': 4.5456, 'size': 211173 }, 'chr6_ssto_hap7': { 'total': 70928, 'coverage': 1.4391, 'size': 4928567 }, 'chrUn_gl000242': { 'total': 257, 'coverage': 0.5905, 'size': 43523 }, 'chrUn_gl000231': { 'total': 1240, 'coverage': 4.5279, 'size': 27386 }, 'chrUn_gl000240': { 'total': 206, 'coverage': 0.4913, 'size': 41933 }, 'chrUn_gl000241': { 'total': 812, 'coverage': 1.9264, 'size': 42152 } } }) self.insert_experiment(epidb, "hg19_big_1") res, qid = epidb.select_experiments("hg19_big_1", None, None, None, self.admin_key) self.assertSuccess(res, qid) status, req = epidb.coverage(qid, "hg19", self.admin_key) coverage = self.get_regions_request(req) self.assertEqual( coverage, { 'coverages': { 'chrX': { 'total': 1483495, 'coverage': 0.9554, 'size': 155270560 }, 'chr13': { 'total': 1132457, 'coverage': 0.9833, 'size': 115169878 }, 'chr12': { 'total': 2964677, 'coverage': 2.2149, 'size': 133851895 }, 'chr11': { 'total': 2899893, 'coverage': 2.148, 'size': 135006516 }, 'chr10': { 'total': 2420026, 'coverage': 1.7855, 'size': 135534747 }, 'chr17': { 'total': 3111151, 'coverage': 3.8317, 'size': 81195210 }, 'chr16': { 'total': 2134123, 'coverage': 2.3619, 'size': 90354753 }, 'chr15': { 'total': 1820040, 'coverage': 1.7751, 'size': 102531392 }, 'chr14': { 'total': 1692055, 'coverage': 1.5762, 'size': 107349540 }, 'chr19': { 'total': 3237248, 'coverage': 5.4749, 'size': 59128983 }, 'chr18': { 'total': 1012202, 'coverage': 1.2964, 'size': 78077248 }, 'chr22': { 'total': 1204818, 'coverage': 2.3484, 'size': 51304566 }, 'chr20': { 'total': 1436177, 'coverage': 2.2787, 'size': 63025520 }, 'chr21': { 'total': 589069, 'coverage': 1.2239, 'size': 48129895 }, 'chr7': { 'total': 2623790, 'coverage': 1.6487, 'size': 159138663 }, 'chr6': { 'total': 3309649, 'coverage': 1.9342, 'size': 171115067 }, 'chr5': { 'total': 2737174, 'coverage': 1.513, 'size': 180915260 }, 'chr4': { 'total': 2204447, 'coverage': 1.1532, 'size': 191154276 }, 'chr3': { 'total': 3096812, 'coverage': 1.5639, 'size': 198022430 }, 'chr2': { 'total': 3900776, 'coverage': 1.6039, 'size': 243199373 }, 'chr1': { 'total': 5292444, 'coverage': 2.1233, 'size': 249250621 }, 'chr9': { 'total': 2336737, 'coverage': 1.6548, 'size': 141213431 }, 'chr8': { 'total': 2050838, 'coverage': 1.4012, 'size': 146364022 } } })
def test_cancel_aggregation(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sample_id = self.sample_ids[0] self.insert_experiment(epidb, "hg19_big_2", sample_id) cpg_island = ",".join([ "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG", "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP" ]) with open("data/cpgIslandExtFull.txt", 'r') as f: file_data = f.read() (res, a_1) = epidb.add_annotation("Cpg Islands", "hg19", "Complete CpG islands", file_data, cpg_island, None, self.admin_key) self.assertSuccess(res, a_1) res, q_cgi = epidb.select_annotations("Cpg Islands", "hg19", None, None, None, self.admin_key) self.assertSuccess(res, q_cgi) res, qid_2 = epidb.tiling_regions(1000000, "hg19", None, self.admin_key) self.assertSuccess(res, qid_2) res, req_count = epidb.count_regions(qid_2, self.admin_key) self.assertSuccess(res, req_count) count = self.count_request(req_count) self.assertEquals(count, 3118) res, qid_3 = epidb.aggregate(q_cgi, qid_2, "@LENGTH", self.admin_key) self.assertSuccess(res, qid_3) res, qid_4 = epidb.filter_regions(qid_3, "@AGG.COUNT", ">=", "100", "number", self.admin_key) (res, req_regions) = epidb.get_regions( qid_4, "CHROMOSOME,START,END,@AGG.MIN,@AGG.MAX,@AGG.MEDIAN,@AGG.MEAN,@AGG.VAR,@AGG.SD,@AGG.COUNT", self.admin_key) self.assertSuccess(res, req_regions) (s, user_two) = epidb.add_user("ANOTHER NAME", "ANOTHER EMAIL", "INSTITUTE", self.admin_key) s, tmp_user = epidb.modify_user_admin(user_two[0], "permission_level", "GET_DATA", self.admin_key) s, msg = epidb.cancel_request(req_regions, user_two[1]) self.assertEquals(msg, "130003:The request ID 'r2' is invalid.") s, msg = epidb.cancel_request(req_count, user_two[1]) self.assertEquals(msg, "130003:The request ID 'r1' is invalid.") (s, m) = epidb.cancel_request(req_regions, self.admin_key) self.assertSuccess(s, m) (s, m) = epidb.cancel_request(req_count, self.admin_key) self.assertSuccess(s, m) (s, user_ass) = epidb.add_user("ASS NAME", "ASS EMAIL", "INSTITUTE", self.admin_key) s, tmp_user = epidb.modify_user_admin(user_ass[0], "permission_level", "GET_DATA", self.admin_key) res, q_cgi_other = epidb.select_annotations("Cpg Islands", "hg19", None, None, None, user_two[1]) self.assertSuccess(res, q_cgi) (res, req_other) = epidb.get_regions(q_cgi_other, "CHROMOSOME,START,END", user_two[1]) self.assertSuccess(res, req_regions) (s, msg) = epidb.cancel_request(req_other, user_ass[1]) self.assertEquals(msg, "130003:The request ID 'r3' is invalid.") (s, m) = epidb.cancel_request(req_other, self.admin_key) self.assertSuccess(s, m) (s, ss) = epidb.info(req_other, self.admin_key) self.assertEquals(ss[0]['state'], 'canceled') (s, ss_count) = epidb.info(req_count, self.admin_key) self.assertEquals(ss_count[0]["state"], "removed") (s, ss_regions) = epidb.info(req_regions, self.admin_key) self.assertEquals(ss_regions[0]["state"], "canceled") s, e1 = epidb.get_request_data(req_count, self.admin_key) self.assertEqual( e1, "Request ID r1 was not finished. Please, check its status.") s, e2 = epidb.get_request_data(req_regions, self.admin_key) self.assertEqual( e2, "Request ID r2 was not finished. Please, check its status.")
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_remove_annotation(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) file_data = None with open("data/cpgIslandExt.txt", 'r') as f: file_data = f.read() res = epidb.add_annotation( "Cpg Islands", "hg19", "CpG islands are associated ...", file_data, "", { "url": "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema" }, self.admin_key) self.assertSuccess(res) annotation_id = res[1] res, user = epidb.add_user("user1", "*****@*****.**", "test", self.admin_key) self.assertSuccess(res, user) res = epidb.remove(annotation_id, user[1]) self.assertFailure(res) res = epidb.remove(annotation_id, self.admin_key) self.assertSuccess(res) res = epidb.add_annotation( "Cpg Islands", "hg19", "CpG islands are associated ...", file_data, "", { "url": "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema" }, self.admin_key) self.assertSuccess(res) annotation_id = res[1] res, genomes = epidb.search("hg19", "genomes", self.admin_key) res, anns = epidb.remove(genomes[0][0], self.admin_key) self.assertFailure(res, anns) self.assertEqual(anns, "This genome is being used by annotations.") res = epidb.add_annotation( "Cpg Islands", "hg19", "CpG islands are associated ...", file_data, "", { "url": "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema" }, self.admin_key) self.assertFailure(res) res = epidb.remove(annotation_id, self.admin_key) self.assertSuccess(res) res = epidb.add_annotation( "Cpg Islands", "hg19", "CpG islands are associated ...", file_data, "", { "url": "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema" }, self.admin_key) self.assertSuccess(res) res = epidb.remove(res[1], self.admin_key) self.assertSuccess(res) res, genomes = epidb.list_genomes(self.admin_key) for genome in genomes: res = epidb.remove(genome[0], self.admin_key) self.assertSuccess(res) res, anns = epidb.list_annotations("hg18", self.admin_key) self.assertSuccess(res, anns) self.assertEqual(len(anns), 0) res, anns = epidb.list_annotations("hg19", self.admin_key) self.assertSuccess(res, anns) self.assertEqual(len(anns), 0)