def test_list_techniques(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) res = epidb.add_technique("illumina 450k", "illumina system", {"price": "low"}, self.admin_key) self.assertSuccess(res) res = epidb.add_technique( "RRBS", "Reduced representation bisulfite sequencing", {}, self.admin_key) self.assertSuccess(res) res = epidb.add_technique("ChIP-seq", "ChIP-sequencing", {}, self.admin_key) self.assertSuccess(res) res, techniques = epidb.list_techniques(self.admin_key) self.assertSuccess(res, techniques) self.assertEqual(len(techniques), 3) technique_names = [x[1] for x in techniques] self.assertTrue("illumina 450k" in technique_names) self.assertTrue("RRBS" in technique_names) self.assertTrue("ChIP-seq" in technique_names)
def test_duplicate(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) res = epidb.add_technique("ChIP-seq", "ChIP-sequencing", {}, self.admin_key) self.assertSuccess(res) res = epidb.add_technique("ChIP-seq", "ChIP-sequencing", {}, self.admin_key) self.assertFailure(res)
def test_remove_technique(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sample_id = self.sample_ids[0] regions_data = helpers.load_bed("hg19_chr1_1") format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"] (res, add_technique_id) = epidb.add_technique( "Hypster Technique", "I knew this technique before everybody else", {}, self.admin_key) self.assertSuccess(res, add_technique_id) # adding two experiments with the same data should work res, eid = epidb.add_experiment("test_exp1", "hg19", "Methylation", sample_id, "Hypster Technique", "ENCODE", "desc1", regions_data, format, None, self.admin_key) self.assertSuccess(res) res = epidb.remove(add_technique_id, self.admin_key) self.assertFailure(res) res = epidb.remove(eid, self.admin_key) self.assertSuccess(res) res = epidb.remove(add_technique_id, self.admin_key) self.assertSuccess(res)
def test_add_techniques(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) res = epidb.add_technique("ChIP-seq", "ChIP-sequencing", {}, self.admin_key) self.assertSuccess(res) res, info = epidb.info(res[1], self.admin_key) self.assertSuccess(res, info) self.assertEquals(info[0]["name"], 'ChIP-seq') self.assertEquals(info[0]["description"], "ChIP-sequencing")
def test_list_similar_techniques(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) res = epidb.add_technique("ChIP-seq", "ChIP-sequencing", {}, self.admin_key) self.assertSuccess(res) res, similar_techniques = epidb.list_similar_techniques( "chipseq", self.admin_key) self.assertSuccess(res, similar_techniques) self.assertEquals(similar_techniques[0][1], 'ChIP-seq')
def test_empty_result(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) s, g1 = epidb.add_genome("hg19", "", "chr1 10000\nchr2 30000", self.admin_key) self.assertSuccess(s, g1) s, t1 = epidb.add_technique("chip-seq", "", None, self.admin_key) self.assertSuccess(s, t1) (s, q) = epidb.select_regions(None, "hg19", None, None, "chip-seq", None, None, 1000, 2000, self.admin_key) self.assertSuccess(s, q) (s, req) = epidb.get_regions(q, "CHROMOSOME,START,END", self.admin_key) self.assertSuccess(s, q) rs = self.get_regions_request(req) self.assertEquals(rs, "")
def test_enriochment_overlap(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/wgEncodeBroadHistoneH1hescH3k4me3StdPk.bed", 'r') as f: file_data = f.read() (res, exp) = epidb.add_experiment( "wgEncodeBroadHistoneH1hescH3k4me3StdPk.bed", "hg19", "H3k4me3", "s1", "ChIPseq", "ENCODE", "wgEncodeBroadHistoneH1hescH3k4me3StdPk.bed from ENCODE", file_data, broad_peak_format, None, self.admin_key) self.assertSuccess(res, exp) res, q_exp = epidb.select_experiments( "wgEncodeBroadHistoneH1hescH3k4me3StdPk.bed", "chr1", None, None, self.admin_key) self.assertSuccess(res, q_exp) ## Testting with all overlaps res, q_tiling = epidb.tiling_regions(10000, "hg19", None, self.admin_key) res, r_id = epidb.enrich_regions_overlap( q_exp, q_tiling, {"H3k4me3": ["wgEncodeBroadHistoneH1hescH3k4me3StdPk.bed"]}, "hg19", self.admin_key) result = self.get_regions_request(r_id) self.assertEquals(result['enrichment']['results'][0]['p_value_log'], float('Inf')) self.assertEquals( result, { 'enrichment': { 'count_query_regions': 3074, 'count_universe_regions': 313669, 'results': [{ 'c': 0, 'b': 30861, 'description': '', 'p_value_log': float('Inf'), 'experiment_size': 33270, 'database_name': 'H3k4me3', 'max_rank': 1, 'support_rank': 1, 'dataset': 'wgEncodeBroadHistoneH1hescH3k4me3StdPk.bed', 'biosource': 'K562', 'odd_rank': 1, 'odds_ratio': float('Inf'), 'epigenetic_mark': 'H3k4me3', 'mean_rank': 1.0, 'log_rank': 1, 'support': 3066, 'd': 279742, 'msg': '', 'error': False }] } }) ## Testting without any overlap _, q_input = epidb.input_regions("hg19", "chr1\t1\t2", self.admin_key) res, r_id = epidb.enrich_regions_overlap( q_input, q_tiling, {"H3k4me3": ["wgEncodeBroadHistoneH1hescH3k4me3StdPk.bed"]}, "hg19", self.admin_key) result = self.get_regions_request(r_id) self.assertEquals(result['enrichment']['results'][0]['p_value_log'], 0.0) self.assertEquals( { 'enrichment': { 'count_query_regions': 1, 'count_universe_regions': 313669, 'results': [{ 'c': 1, 'b': 33927, 'description': '', 'p_value_log': 0.0, 'experiment_size': 33270, 'database_name': 'H3k4me3', 'max_rank': 1, 'support_rank': 1, 'dataset': 'wgEncodeBroadHistoneH1hescH3k4me3StdPk.bed', 'biosource': 'K562', 'odd_rank': 1, 'odds_ratio': 0.0, 'epigenetic_mark': 'H3k4me3', 'mean_rank': 1.0, 'log_rank': 1, 'support': 0, 'd': 279741, 'error': False, 'msg': '' }] } }, result)
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)