def test_list_column_types(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) res = epidb.create_column_type_simple("name", "description", "string", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_simple("string_column", "description", "string", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_simple("integer_column", "description", "integer", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_simple("double_column", "description", "double", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_range("score", "description", 0.0, 1.0, self.admin_key) self.assertSuccess(res) strand = ["+", "-"] res = epidb.create_column_type_category("STRAND", "description", strand, self.admin_key) self.assertSuccess(res) res, column_types = epidb.list_column_types(self.admin_key) self.assertSuccess(res, column_types) self.assertEqual(column_types[0][1], "column type name: 'CHROMOSOME' type: 'string'") self.assertEqual(column_types[1][1], "column type name: 'START' type: 'integer'") self.assertEqual(column_types[2][1], "column type name: 'END' type: 'integer'") self.assertEqual(column_types[3][1], "column type name: 'VALUE' type: 'double'") self.assertEqual(column_types[4][1], "column type name: 'GTF_SCORE' type: 'string'") self.assertEqual(column_types[5][1], "column type name: 'FEATURE' type: 'string'") self.assertEqual(column_types[6][1], "column type name: 'SOURCE' type: 'string'") self.assertEqual(column_types[7][1], "column type name: 'FRAME' type: 'string'") self.assertEqual(column_types[8][1], "column type name: 'GTF_ATTRIBUTES' type: 'string'") self.assertEqual(column_types[9][1], "column type name: 'TRACKING_ID' type: 'string'")
def test_duplicate_column_type(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) res = epidb.create_column_type_simple("name2", "description", "string", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_simple("name2", "description", "integer", self.admin_key) self.assertFailure(res)
def test_basic_column_types(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) res = epidb.create_column_type_simple("string_column", "description", "string", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_simple("integer_column", "description", "integer", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_simple("double_column", "description", "double", self.admin_key) self.assertSuccess(res)
def test_remove_column(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) res, u1 = epidb.add_user("user1", "*****@*****.**", "test", self.admin_key) self.assertSuccess(res, u1) user_key = u1[1] s, user_tmp = epidb.modify_user_admin(u1[0], "permission_level", "INCLUDE_COLLECTION_TERMS", self.admin_key) self.assertSuccess(s) res, c = epidb.create_column_type_simple("GENE_ID_ENTREZ", "rebimboca da parafuseta", "string", user_key) self.assertSuccess(res, c) res = epidb.remove(c, user_key) self.assertSuccess(res) res, s = epidb.search("GENE_ID_ENTREZ", None, user_key) self.assertSuccess(res, s) self.assertEqual(len(s), 0) res, s = epidb.search("rebimboca", None, user_key) self.assertSuccess(res, s) self.assertEqual(len(s), 0) res, s = epidb.search("parafuseta", None, user_key) self.assertSuccess(res, s) self.assertEqual(len(s), 0)
def test_chromosome_explicit(self): # regression test: chromosome was put in the first column no matter # what the format string specified epidb = DeepBlueClient(address="localhost", port=31415) self.init_base() self.insert_experiment(epidb, "hg19_chr1_1") (s, m) = epidb.create_column_type_simple("foobar", "", "string", self.admin_key) self.assertSuccess(s, m) full_experiment_regions = helpers.get_result("full_experiment_regions") res, qid = epidb.select_regions("hg19_chr1_1", "hg19", None, None, None, None, None, None, None, self.admin_key) self.assertSuccess(res, qid) fmt = "foobar,START,END,NAME,SCORE,STRAND,SIGNAL_VALUE,P_VALUE,Q_VALUE,PEAK" res, req = epidb.get_regions(qid, fmt, self.admin_key) self.assertSuccess(res, req) regions = self.get_regions_request(req) self.assertNotEqual(regions, full_experiment_regions) fmt = "START,START,END,NAME,SCORE,STRAND,SIGNAL_VALUE,P_VALUE,Q_VALUE,PEAK" res, req = epidb.get_regions(qid, fmt, self.admin_key) self.assertSuccess(res, req) regions = self.get_regions_request(req) self.assertNotEqual(regions, full_experiment_regions) # leave out chromosome entirely regions_wo_chr = helpers.get_result("full_experiment_regions_wo_chr") # Creating another column, named NAME, that in the experiment is name. # This column should return empty. (s, m) = epidb.create_column_type_simple("COISA", "", "string", self.admin_key) self.assertSuccess(s, m) fmt = "START,END,COISA,SCORE,STRAND,SIGNAL_VALUE,P_VALUE,Q_VALUE,PEAK" res, req = epidb.get_regions(qid, fmt, self.admin_key) regions = self.get_regions_request(req) self.assertSuccess(res, regions) self.assertEqual(regions, regions_wo_chr)
def test_no_ignore_if(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) res = epidb.create_column_type_simple("name", "description", "string", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_simple("string_column", "description", "string", self.admin_key) self.assertSuccess(res) res, column_types = epidb.list_column_types(self.admin_key) self.assertSuccess(res, column_types) self.assertEqual(column_types[0][1], "column type name: 'CHROMOSOME' type: 'string'") self.assertEqual(column_types[1][1], "column type name: 'START' type: 'integer'") self.assertEqual(column_types[2][1], "column type name: 'END' type: 'integer'") self.assertEqual(column_types[3][1], "column type name: 'VALUE' type: 'double'") self.assertEqual(column_types[4][1], "column type name: 'GTF_SCORE' type: 'string'") self.assertEqual(column_types[5][1], "column type name: 'FEATURE' type: 'string'")
def test_column_types_search(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) res = epidb.create_column_type_simple("name", "description", "string", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_simple("string_column", "description", "string", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_simple("integer_column", "description", "integer", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_simple("double_column", "description", "double", self.admin_key) self.assertSuccess(res) res = epidb.create_column_type_range("score", "description", 0.0, 1.0, self.admin_key) self.assertSuccess(res) strand = ["+", "-"] res = epidb.create_column_type_category("STRAND", "description", strand, self.admin_key) self.assertSuccess(res) (s, ss) = epidb.search("string_column", "column_types", self.admin_key) (s, info) = epidb.info(ss[0][0], self.admin_key) self.assertEqual(info[0], {'_id': 'ct31', 'description': 'description', 'type': 'column_type', 'name': 'string_column', 'column_type': 'string'}) (s, ss) = epidb.search("integer_column", "column_types", self.admin_key) (s, info) = epidb.info(ss[0][0], self.admin_key) self.assertEqual(info[0], {'_id': 'ct32', 'column_type': 'integer', 'description': 'description', 'type': 'column_type', 'name': 'integer_column'}) (s, ss) = epidb.search("double_column", "column_types", self.admin_key) (s, info) = epidb.info(ss[0][0], self.admin_key) self.assertEqual(info[0], {'_id': 'ct33', 'column_type': 'double', 'description': 'description', 'type': 'column_type', 'name': 'double_column'}) (s, ss) = epidb.search("score", "column_types", self.admin_key) (s, info) = epidb.info(ss[0][0], self.admin_key) self.assertEqual(info[0], {'_id': 'ct34','type': 'column_type', 'description': 'description', 'maximum': '1', 'minimum': '0', 'name': 'score', 'column_type': 'range'}) (s, ss) = epidb.search("STRAND", "column_types", self.admin_key) (s, info) = epidb.info(ss[0][0], self.admin_key) self.assertEqual(info[0], {'_id': 'ct35', 'type': 'column_type', 'description': 'description', 'name': 'STRAND', 'column_type': 'category', 'items': '+,-'})
def test_wig_clone_calculated(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sample_id = self.sample_ids[0] res, _id = epidb.add_experiment( "test_exp1", "hg19", "Methylation", sample_id, "tech1", "ENCODE", "desc1", "", "wig", {"__local_file__": "../tests/data/wig/scores1.wig"}, self.admin_key) self.assertSuccess(res, id) (s, m) = epidb.create_column_type_simple("METHYLATION_LEVEL", "", "double", self.admin_key) self.assertSuccess(s, m) res = epidb.create_column_type_calculated( "METHYLATION_LEVEL_SQRT", "Square root of the methylation level", "return math.sqrt(value_of('VALUE'))", self.admin_key) self.assertSuccess(res) (s, clone_id) = epidb.clone_dataset( _id, "New Wig File", "", "", "", "", "", "CHROMOSOME,START,END,METHYLATION_LEVEL_SQRT", None, self.admin_key) self.assertFailure(s, clone_id) self.assertEqual( clone_id, "The column 'METHYLATION_LEVEL_SQRT' (type: calculated) is incompatible with the original column 'VALUE' (type: double)" ) (s, clone_id) = epidb.clone_dataset( _id, "New Wig File", "", "", "", "", "", "CHROMOSOME,START,END,METHYLATION_LEVEL", None, self.admin_key) self.assertSuccess(s, clone_id) (status, wig_data) = epidb.select_regions('New Wig File', "hg19", None, None, None, None, None, None, None, self.admin_key) (s, req) = epidb.get_regions( wig_data, "CHROMOSOME,START,END,METHYLATION_LEVEL,METHYLATION_LEVEL_SQRT", self.admin_key) rs = self.get_regions_request(req) self.assertEqual(rs.split("\n")[0].split("\t")[3], "8.1235") self.assertEqual(rs.split("\n")[0].split("\t")[4], "2.850168") self.assertEqual(rs.split("\n")[6].split("\t")[3], "30.0000") self.assertEqual(rs.split("\n")[6].split("\t")[4], "5.477226")
def test_better_names(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) aid1 = self.insert_annotation(epidb, "Cpg Islands All Fields") (s, m) = epidb.create_column_type_simple("CPG_ISLAND_NAME", "", "string", self.admin_key) self.assertSuccess(s, m) (s, clone_id) = epidb.clone_dataset( aid1, "New CpG Islands", "", "", "", "", "", "CHROMOSOME,START,END,CPG_ISLAND_NAME,LENGTH,NUM_CPG,NUM_GC,PER_CPG,PER_CG,OBS_EXP", {"new": "true"}, self.admin_key) self.assertSuccess(s, clone_id) self.assertEqual(clone_id, "a4")
def test_wig_clone(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sample_id = self.sample_ids[0] res, _id = epidb.add_experiment( "test_exp1", "hg19", "Methylation", sample_id, "tech1", "ENCODE", "desc1", "", "wig", {"__local_file__": "../tests/data/wig/scores1.wig"}, self.admin_key) self.assertSuccess(res, id) (s, m) = epidb.create_column_type_simple("METHYLATION_LEVEL", "", "double", self.admin_key) self.assertSuccess(s, m) (s, clone_id) = epidb.clone_dataset( _id, "New Wig File", "", "", "", "", "", "CHROMOSOME,START,END,METHYLATION_LEVEL", None, self.admin_key) self.assertSuccess(s, clone_id) (status, wig_data) = epidb.select_regions('test_exp1', "hg19", None, None, None, None, None, None, None, self.admin_key) (s, req) = epidb.get_regions(wig_data, "CHROMOSOME,START,END,VALUE", self.admin_key) rs = self.get_regions_request(req) (status, wig_data) = epidb.select_regions('New Wig File', "hg19", None, None, None, None, None, None, None, self.admin_key) (s, req2) = epidb.get_regions(wig_data, "CHROMOSOME,START,END,METHYLATION_LEVEL", self.admin_key) rs2 = self.get_regions_request(req2) self.assertEqual(rs.split("\n")[0].split("\t")[3], "8.1235") self.assertEqual(rs, rs2)
def test_invalid_column(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) aid1 = self.insert_annotation(epidb, "Cpg Islands") (s, msg) = epidb.clone_dataset(aid1, "New CpG Islands", "", "", "", "", "", "CHROMOSOME,START,END,INVALID_COLUMN", {"new": "true"}, self.admin_key) self.assertEqual( msg, "125000:Column name 'INVALID_COLUMN' does not exist.") (s, m) = epidb.create_column_type_simple("NICE_COLUMN", "", "string", self.admin_key) self.assertSuccess(s, m) (s, msg) = epidb.clone_dataset(aid1, "New CpG Islands", "", "", "", "", "", "NICE_COLUMN,START,END,VALUE", {"new": "true"}, self.admin_key) self.assertEqual( msg, 'Column CHROMOSOME can not be renamed. Columns CHROMOSOME,START, and END are immutable.' )
def test_invalid_format_types(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) aid1 = self.insert_annotation(epidb, "Cpg Islands All Fields") (s, m) = epidb.create_column_type_simple("CPG_ISLAND_NAME", "", "string", self.admin_key) self.assertSuccess(s, m) (s, m) = epidb.create_column_type_simple("NUM_CPG_S", "", "string", self.admin_key) self.assertSuccess(s, m) (s, m) = epidb.create_column_type_simple("NUM_GC_S", "", "string", self.admin_key) self.assertSuccess(s, m) (s, m) = epidb.create_column_type_simple("PER_CG_S", "", "string", self.admin_key) self.assertSuccess(s, m) (s, m) = epidb.create_column_type_simple("OBS_EXP_S", "", "string", self.admin_key) self.assertSuccess(s, m) (s, m) = epidb.create_column_type_simple("PER_CPG_S", "", "string", self.admin_key) self.assertSuccess(s, m) (s, m) = epidb.create_column_type_simple("LENGTH_S", "", "string", self.admin_key) self.assertSuccess(s, m) (s, clone_id) = epidb.clone_dataset( aid1, "New CpG Islands", "", "", "", "", "", "CHROMOSOME,START,END,CPG_ISLAND_NAME,LENGTH_S,NUM_CPG_S,NUM_GC_S,PER_CPG_S,PER_CG_S,OBS_EXP_S", {"new": "true"}, self.admin_key) self.assertFailure(s, clone_id) self.assertEqual( clone_id, "The column 'LENGTH_S' (type: string) is incompatible with the original column 'LENGTH' (type: integer)" ) # -- (s, m) = epidb.create_column_type_simple("OBS_EXP_INT", "", "integer", self.admin_key) self.assertSuccess(s, m) (s, clone_id) = epidb.clone_dataset( aid1, "New CpG Islands", "", "", "", "", "", "CHROMOSOME,START,END,CPG_ISLAND_NAME,LENGTH,NUM_CPG,NUM_GC,PER_CPG,PER_CG,OBS_EXP_INT", {"new": "true"}, self.admin_key) self.assertFailure(s, clone_id) self.assertEqual( clone_id, "The column 'OBS_EXP_INT' (type: integer) is incompatible with the original column 'OBS_EXP' (type: double)" ) # -- (s, m) = epidb.create_column_type_range("OBS_EXP_RANGE", "", -1.0, 1.0, self.admin_key) self.assertSuccess(s, m) (s, clone_id) = epidb.clone_dataset( aid1, "New CpG Islands", "", "", "", "", "", "CHROMOSOME,START,END,CPG_ISLAND_NAME,LENGTH,NUM_CPG,NUM_GC,PER_CPG,PER_CG,OBS_EXP_RANGE", {"new": "true"}, self.admin_key) self.assertFailure(s, clone_id) self.assertEqual( clone_id, "The column 'OBS_EXP_RANGE' (type: range) is incompatible with the original column 'OBS_EXP' (type: double)" ) # -- (s, m) = epidb.create_column_type_category("OBS_EXP_CATEGORY", "", ["+", "-"], self.admin_key) self.assertSuccess(s, m) (s, clone_id) = epidb.clone_dataset( aid1, "New CpG Islands", "", "", "", "", "", "CHROMOSOME,START,END,CPG_ISLAND_NAME,LENGTH,NUM_CPG,NUM_GC,PER_CPG,PER_CG,OBS_EXP_CATEGORY", {"new": "true"}, self.admin_key) self.assertFailure(s, clone_id) self.assertEqual( clone_id, "The column 'OBS_EXP_CATEGORY' (type: category) is incompatible with the original column 'OBS_EXP' (type: double)" ) # -- (s, clone_id) = epidb.clone_dataset( aid1, "New CpG Islands", "", "", "", "", "", "CHROMOSOME,START,END,CPG_ISLAND_NAME,LENGTH,NUM_CPG,NUM_GC,PER_CPG,PER_CG,OBS_EXP", {"new": "true"}, self.admin_key) self.assertSuccess(s, clone_id)
def test_invalid_format_size(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) aid1 = self.insert_annotation(epidb, "Cpg Islands All Fields") (s, m) = epidb.create_column_type_simple("CPG_ISLAND_NAME", "", "string", self.admin_key) self.assertSuccess(s, m) (s, clone_id) = epidb.clone_dataset( aid1, "New CpG Islands", "", "", "", "", "", "CHROMOSOME,START,END,CPG_ISLAND_NAME,LENGTH,NUM_CPG,NUM_GC,PER_CPG,PER_CG,OBS_EXP", {"new": "true"}, self.admin_key) self.assertSuccess(s, clone_id) s, info = epidb.info(clone_id, self.admin_key) info[0]['upload_info']['upload_end'] = '0' info[0]['upload_info']['upload_start'] = '0' info[0]['upload_info']['total_size'] = '0' info[0]['upload_info']['client_address'] = '0' self.assertEqual( info[0], { 'description': 'CpG islands are associated ... (all fields)', 'format': 'CHROMOSOME,START,END,CPG_ISLAND_NAME,LENGTH,NUM_CPG,NUM_GC,PER_CPG,PER_CG,OBS_EXP', 'extra_metadata': { 'new': 'true' }, 'upload_info': { 'total_size': '0', 'content_format': 'peaks', 'done': 'true', 'user': '******', 'upload_end': '0', 'upload_start': '0', 'client_address': '0' }, 'genome': 'hg19', '_id': 'a4', 'type': 'annotation', 'columns': [{ 'name': 'CHROMOSOME', 'column_type': 'string' }, { 'name': 'START', 'column_type': 'integer' }, { 'name': 'END', 'column_type': 'integer' }, { 'name': 'CPG_ISLAND_NAME', 'column_type': 'string' }, { 'name': 'LENGTH', 'column_type': 'integer' }, { 'name': 'NUM_CPG', 'column_type': 'integer' }, { 'name': 'NUM_GC', 'column_type': 'integer' }, { 'name': 'PER_CPG', 'column_type': 'double' }, { 'name': 'PER_CG', 'column_type': 'double' }, { 'name': 'OBS_EXP', 'column_type': 'double' }], 'name': 'New CpG Islands' })