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_category_fail(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) sample_id = self.sample_ids[0] format = ",".join([ "CHROMOSOME", "START", "END", "NAME", "SCORE", "STRAND_X", "SIGNAL_VALUE", "P_VALUE", "Q_VALUE", "PEAK" ]) res = epidb.create_column_type_category("STRAND_X", "strand of the region", ["X", "-"], self.admin_key) self.assertSuccess(res) regions_data = helpers.load_bed("hg19_chr1_1") res, msg = epidb.add_experiment("test_exp_fail2", "hg19", "Methylation", sample_id, "tech1", "ENCODE", "desc1", regions_data, format, None, self.admin_key) self.assertFailure(res, msg) self.assertTrue("STRAND_X" in msg)
def init_base(self, epidb=None): if not epidb: epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) for genome in data.GENOMES: self.insert_genome(epidb, genome) for bsource in data.BIOSOURCES: self.insert_biosource(epidb, bsource) for tech in data.TECHNIQUES: self.insert_technique(epidb, tech) for epimark in data.EPIGENETIC_MARKS: self.insert_epigenetic_mark(epidb, epimark) for project in data.PROJECTS: self.insert_project(epidb, project) for sample in data.SAMPLES: self.insert_samples(epidb, sample) for column in data.COLUMNS: self.insert_column(epidb, column) res, cid = epidb.create_column_type_category("STRAND", "Region strand: +, -, .", ["+", "-", "."], self.admin_key) self.assertSuccess(res, cid)
def test_column_complex_types(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init(epidb) 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)
def test_empty_no_permission_column_type(self): epidb = DeepBlueClient(address="localhost", port=31415) self.init_base(epidb) res, cid = epidb.create_column_type_category("PLUS_MINUS_DOT", "Region strand: +, -, .", ["+", "-", "."], self.admin_key) s, (u_id, u_key) = epidb.add_user("user", "email", "institution", self.admin_key) self.assertSuccess(s) s = epidb.modify_user_admin(u_id, "permission_level", "NONE", self.admin_key) self.assertSuccess(s) info = epidb.info(cid, u_key) self.assertEqual(info, [ 'error', '100100:Insufficient permission. Permission LIST_COLLECTIONS is required.' ]) info_e1 = epidb.info("e1", u_key) self.assertEqual(info_e1, [ 'error', '100100:Insufficient permission. Permission LIST_COLLECTIONS is required.' ]) info_e2 = epidb.info("me", u_key) self.assertEqual(info_e2, [ 'okay', [{ 'name': 'user', 'institution': 'institution', 'id': 'u3', 'permission_level': 'NONE', 'type': 'user', 'email': 'email' }] ])
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_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)