Ejemplo n.º 1
0
    def test_unequal_keys(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init(epidb)
        # Note: this test has not 100% hit chance since the problem only
        # occured when two keys were generated within one second.
        # Though 3 users give a high chance for this to happen.

        res, u1 = epidb.add_user("user1", "*****@*****.**", "test",
                                 self.admin_key)
        self.assertSuccess(res, u1)
        res, u2 = epidb.add_user("user2", "*****@*****.**", "test",
                                 self.admin_key)
        self.assertSuccess(res, u2)
        res, u3 = epidb.add_user("user3", "*****@*****.**", "test",
                                 self.admin_key)
        self.assertSuccess(res, u3)

        self.assertTrue(u1[1] != u2[1])  # ensure different user keys
        self.assertTrue(u1[1] != u3[1])
        self.assertTrue(u2[1] != u3[1])

        res, users = epidb.list_users(self.admin_key)
        self.assertSuccess(res, users)

        user_names = epidb.extract_names(users)[1]

        self.assertEqual(len(users), 5)
        self.assertTrue(EPIDB_TEST_ADMIN[0] in user_names)
        self.assertTrue("user1" in user_names)
        self.assertTrue("user2" in user_names)
        self.assertTrue("user3" in user_names)
        self.assertTrue("anonymous" in user_names)
    def test_set_project_public_by_user_no_permission(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        (s, user) = epidb.add_user("NAME", "EMAIL", "INSTITUTE",
                                   self.admin_key)
        (s, user_ass) = epidb.add_user("NAME ASS", "EMAIL ASS", "INSTITUTE",
                                       self.admin_key)

        s, tmp_user = epidb.modify_user_admin(user[0], "permission_level",
                                              "INCLUDE_EXPERIMENTS",
                                              self.admin_key)
        s, tmp_user = epidb.modify_user_admin(user_ass[0], "permission_level",
                                              "INCLUDE_EXPERIMENTS",
                                              self.admin_key)

        s, project = epidb.add_project("USER's PROJECT", "COOL", user[1])
        (s, (user_add,
             project_add)) = epidb.add_user_to_project(user_ass[0], project,
                                                       True, user[1])
        self.assertSuccess(s, (user, project))
        self.assertEqual(user_add, user_ass[0])
        self.assertEqual(project, project_add)

        (s, user_two) = epidb.add_user("ANOTHER NAME", "ANOTHER EMAIL",
                                       "INSTITUTE", self.admin_key)

        (s, status) = epidb.add_user_to_project(user_two[0], project, True,
                                                user_ass[1])
        self.assertEqual(
            status,
            "107100:You are not the project 'p3' owner and neither an administrator."
        )
Ejemplo n.º 3
0
    def test_add_user_by_non_admin(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init(epidb)

        res, u1 = epidb.add_user("user1", "*****@*****.**", "test",
                                 self.admin_key)
        self.assertSuccess(res, u1)

        res, msg = epidb.add_user("user2", "*****@*****.**", "test", u1[1])
        self.assertFailure(res, msg)
Ejemplo n.º 4
0
    def test_admin(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        s = epidb.add_user("user", "email", "institution", self.admin_key)
        self.assertSuccess(s)

        self.modify_user_permission(epidb, "u1", "INCLUDE_COLLECTION_TERMS")

        s = epidb.add_user("user2", "email2", "institution", self.admin_key)
        self.assertFailure(s)
Ejemplo n.º 5
0
    def test_info_on_user_queries(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        res, user_one = epidb.add_user("user1", "*****@*****.**", "test",
                                       self.admin_key)
        self.assertSuccess(res, user_one)
        s, tmp_user = epidb.modify_user_admin(user_one[0], "permission_level",
                                              "GET_DATA", self.admin_key)
        self.assertSuccess(s)

        res, user_two = epidb.add_user("user2", "*****@*****.**", "test",
                                       self.admin_key)
        self.assertSuccess(res, user_two)
        s, tmp_user = epidb.modify_user_admin(user_two[0], "permission_level",
                                              "GET_DATA", self.admin_key)
        self.assertSuccess(s)

        (s, t1) = epidb.tiling_regions(100, "hg19", "chr1", user_one[1])
        s = epidb.info(t1, user_one[1])
        self.assertEquals(s, [
            'okay',
            [{
                '_id': 'q1',
                'type': 'tiling',
                'user': '******',
                'args': {
                    "genome": "hg19",
                    "size": 100,
                    "chromosomes": ["chr1"]
                }
            }]
        ])
        s = epidb.info(t1, user_two[1])
        self.assertEquals(s, [
            'error',
            "111003:You are not the query ID 'q1' owner and neither an administrator."
        ])
        s = epidb.info(t1, self.admin_key)
        self.assertEquals(s, [
            'okay',
            [{
                '_id': 'q1',
                'type': 'tiling',
                'user': '******',
                'args': {
                    "genome": "hg19",
                    "size": 100,
                    "chromosomes": ["chr1"]
                }
            }]
        ])
Ejemplo n.º 6
0
    def test_change_extra_metadata(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        user_id, user_key = self.get_new_user(epidb)
        self.modify_user_permission(epidb, user_id, "INCLUDE_COLLECTION_TERMS")

        s, id = epidb.add_biosource("lsdjf", "sdf", {
            "a": "b",
            "c": "d"
        }, user_key)

        s = epidb.change_extra_metadata(id, "a", "f", user_key)
        self.assertSuccess(s)

        s = epidb.change_extra_metadata(id, "c", "g", self.admin_key)
        self.assertSuccess(s)

        s, user = epidb.add_user("user2", "email2", "institution2",
                                 self.admin_key)
        self.assertSuccess(s)
        user_id2, user_key2 = user
        self.modify_user_permission(epidb, user_id2,
                                    "INCLUDE_COLLECTION_TERMS")

        s = epidb.change_extra_metadata(id, "c", "g", user_key2)
        self.assertFailure(s)
Ejemplo n.º 7
0
    def test_uninitialized_system(self):
        epidb = DeepBlueClient(address="localhost", port=31415)

        # uninitialized system should fail
        res, msg = epidb.add_user("user1", "*****@*****.**", "test",
                                  "somekey")
        self.assertFailure(res, msg)
  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_set_project_public(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init(epidb)
        s, user = epidb.add_user("user", "email", "institution",
                                 self.admin_key)
        (user_id, user_key) = user
        self.assertSuccess(s)

        s, info = epidb.info("me", user_key)
        self.assertSuccess(s, info)
        (s, uid) = epidb.modify_user_admin(user_id, "permission_level",
                                           "INCLUDE_EXPERIMENTS",
                                           self.admin_key)

        res = epidb.add_project("Other", "Some other project", user_key)
        self.assertSuccess(res)

        res = epidb.set_project_public("Other", True, user_key)
        self.assertSuccess(res)

        res = epidb.add_project("Other2", "Some other project2", user_key)
        self.assertSuccess(res)

        res = epidb.set_project_public("Other2", True, self.admin_key)
        self.assertSuccess(res)
Ejemplo n.º 10
0
    def test_init_system(self):
        epidb = DeepBlueClient(address="localhost", port=31415)

        res, admin_key = epidb.init_system(*EPIDB_TEST_ADMIN)
        self.assertSuccess(res, admin_key)

        # check if system is able to receive commands
        res, key = epidb.add_user("user1", "*****@*****.**", "test",
                                  admin_key)
        self.assertSuccess(res, key)
    def test_set_project_public_no_permisson(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        (s, user) = epidb.add_user("NAME", "EMAIL", "INSTITUTE",
                                   self.admin_key)

        s, project = epidb.add_project("USER's PROJECT", "COOL", user[1])
        self.assertEqual(
            project,
            "100100:Insufficient permission. Permission INCLUDE_EXPERIMENTS is required."
        )
Ejemplo n.º 12
0
    def test_anonymous(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init(epidb)

        res, user = epidb.add_user("anonymous", "*****@*****.**", "test",
                                   self.admin_key)
        self.assertSuccess(res, user)

        res, msg = epidb.modify_user("password", "123456", user[1])
        self.assertFailure(res, msg)
        self.assertEquals(
            msg,
            'It is not allowed to change the attributes of the anonymous user')
    def test_set_project_public(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        (s, user) = epidb.add_user("NAME", "EMAIL", "INSTITUTE",
                                   self.admin_key)

        s, tmp_user = epidb.modify_user_admin(user[0], "permission_level",
                                              "INCLUDE_EXPERIMENTS",
                                              self.admin_key)

        s, project = epidb.add_project("USER's PROJECT", "COOL", user[1])

        (s, user_two) = epidb.add_user("ANOTHER NAME", "ANOTHER EMAIL",
                                       "INSTITUTE", self.admin_key)

        (s, (user_add,
             project_add)) = epidb.add_user_to_project(user_two[0], project,
                                                       True, self.admin_key)
        self.assertSuccess(s, (user, project))
        self.assertEqual(user_add, user_two[0])
        self.assertEqual(project, project_add)
Ejemplo n.º 14
0
    def test_users(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init(epidb)

        res, user = epidb.add_user("user1", "*****@*****.**", "test",
                                   self.admin_key)
        self.assertSuccess(res, user)

        res, users = epidb.list_users(self.admin_key)
        self.assertSuccess(res, users)

        user_names = epidb.extract_names(users)[1]
        self.assertEqual(len(users), 3)  # the admin and the newly created user
        self.assertTrue(EPIDB_TEST_ADMIN[0] in user_names)
        self.assertTrue("user1" in user_names)
        self.assertTrue("anonymous" in user_names)
Ejemplo n.º 15
0
    def test_remove_genome(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(",", "")

        res = epidb.add_genome("A1", "ANGELICA", genome_info, self.admin_key)
        self.assertSuccess(res)
        genome_id = res[1]

        res, user = epidb.add_user("user1", "*****@*****.**", "test",
                                   self.admin_key)
        self.assertSuccess(res, user)
        res = epidb.remove(genome_id, user[1])
        self.assertFailure(res)

        res = epidb.add_genome("A1", "XUXA", genome_info, self.admin_key)
        self.assertFailure(res)

        (res, genomes) = epidb.list_genomes(self.admin_key)
        self.assertEqual(len(genomes), 1)
        self.assertEqual(genomes[0][0], genome_id)
        self.assertEqual(genomes[0][1], "A1")

        res = epidb.remove(genome_id, self.admin_key)
        self.assertSuccess(res)

        res = epidb.add_genome("A1", "XUXA", genome_info, self.admin_key)
        self.assertSuccess(res)

        status, found = epidb.search("XUXA", "", self.admin_key)
        self.assertEqual(len(found), 2)

        status, found = epidb.search("ANGELICA", "", self.admin_key)
        self.assertEqual(len(found), 0)

        status, genomes = epidb.list_genomes(self.admin_key)
        self.assertSuccess(status, genomes)

        for genome in genomes:
            res = epidb.remove(genome[0], self.admin_key)
            self.assertSuccess(res)
            res, anns = epidb.list_annotations(genome[1], self.admin_key)
            self.assertEqual(len(anns), 0)
Ejemplo n.º 16
0
    def test_success(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        s = epidb.modify_user("password", "password123", self.admin_key)
        self.assertSuccess(s)
        s, key = epidb.user_auth(settings.EPIDB_TEST_ADMIN[1], "password123")
        self.assertSuccess(s)
        self.assertEquals(key, self.admin_key)

        s, user_info = epidb.add_user("user1", "*****@*****.**",
                                      "institution", self.admin_key)
        user_id, user_key = user_info
        self.assertSuccess(s)
        s = epidb.modify_user("password", "password567", user_key)
        self.assertSuccess(s)
        s, key = epidb.user_auth("*****@*****.**", "password567")
        self.assertSuccess(s)
        self.assertEquals(key, user_key)
Ejemplo n.º 17
0
    def removeest_remove_experiment(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        eid1 = self.insert_experiment(epidb, "hg18_chr1_1")

        (s, q) = epidb.select_regions("hg18_chr1_1", "hg18", None, None, None,
                                      None, None, None, None, self.admin_key)
        self.assertSuccess(s, q)

        (s, regions) = epidb.get_regions(q, "CHROMOSOME,START,END",
                                         self.admin_key)
        self.assertSuccess(s, regions)

        (s, id_clone_plus) = epidb.clone_dataset(
            eid1, "novo experimen", "getting only the default values", "", {
                "new data": "true",
                "cool": "a lot"
            }, user[1])
        self.assertSuccess(s, id_clone_plus)

        res, user = epidb.add_user("user1", "*****@*****.**", "test",
                                   self.admin_key)
        self.assertSuccess(res, user)
        res = epidb.remove(eid1, user[1])
        self.assertFailure(res)
        (s, id_removed) = epidb.remove(eid1, self.admin_key)
        self.assertSuccess(s, id_removed)
        self.assertEqual(id_removed, eid1)

        (s, q2) = epidb.select_regions("novo experimen", "hg18", None, None,
                                       None, None, None, None, None,
                                       self.admin_key)
        self.assertSuccess(s, q)

        (s, regions2) = epidb.get_regions(q2, "CHROMOSOME,START,END",
                                          self.admin_key)
        self.assertSuccess(s, regions)

        (s, id_removed) = epidb.remove(id_clone_plus, user[1])
        self.assertSuccess(s, id_removed)
        self.assertEqual(id_removed, id_clone_plus)
    def test_set_project_public(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        res = epidb.add_project("Other", "Some other project", self.admin_key)
        self.assertSuccess(res)

        s, user = epidb.add_user("user", "email", "institution",
                                 self.admin_key)
        (user_id, user_key) = user
        self.assertSuccess(s)

        status, projects = epidb.list_projects(self.admin_key)
        self.assertEqual(
            projects,
            [['p1', 'ENCODE'], ['p2', 'Mouse ENCODE'], ['p3', 'Other']])

        status, projects = epidb.list_projects(user_key)
        self.assertEqual(projects, [])

        epidb.set_project_public("ENCODE", True, self.admin_key)

        status, projects = epidb.list_projects(user_key)
        self.assertEqual(projects, [["p1", "ENCODE"]])

        epidb.set_project_public("ENCODE", False, self.admin_key)

        status, projects = epidb.list_projects(user_key)
        self.assertEqual(projects, [])

        epidb.set_project_public("Mouse ENCODE", True, self.admin_key)
        epidb.set_project_public("ENCODE", True, self.admin_key)

        status, projects = epidb.list_projects(user_key)
        self.assertEqual(projects, [['p1', 'ENCODE'], ['p2', 'Mouse ENCODE']])

        epidb.set_project_public("Other", True, self.admin_key)

        status, projects = epidb.list_projects(user_key)
        self.assertEqual(
            projects,
            [['p1', 'ENCODE'], ['p2', 'Mouse ENCODE'], ['p3', 'Other']])
Ejemplo n.º 19
0
  def test_request_info_permission(self):
    epidb = DeepBlueClient(address="localhost", port=31415)
    self.init_full(epidb)

    s, user = epidb.add_user("user1", "*****@*****.**", "test", self.admin_key)
    id, user_key = user
    s, _id = epidb.modify_user_admin(id, "permission_level", "INCLUDE_COLLECTION_TERMS", self.admin_key)
    self.assertSuccess(s, _id)

    s, id = epidb.add_epigenetic_mark("DNA Methylation", "", {}, user_key)
    self.assertSuccess(s, id)
    s, query_id = epidb.select_regions(None, "hg19", "DNA Methylation", None, None, None, "chr1", None, None, user_key)
    self.assertSuccess(s, query_id)

    s, request_id = epidb.get_regions(query_id, "CHROMOSOME,START,END", user_key)

    s, info = epidb.info(request_id, user_key)
    self.assertSuccess(s, info)
    s, info = epidb.info(request_id, self.admin_key)
    self.assertSuccess(s, info)
Ejemplo n.º 20
0
    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_gene_expression(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        (s, project) = epidb.add_project("DEEP", "Deutsche Epigenom",
                                         self.admin_key)
        self.assertSuccess(s, project)

        data = gzip.open("data/fpkm/small_1.fpkm_tracking.gz").read()
        (s, gene_expression) = epidb.add_expression("gene", "s2", 1, data,
                                                    "cufflinks", "DEEP", None,
                                                    self.admin_key)
        self.assertSuccess(s, gene_expression)

        data = gzip.open("data/fpkm/small_2.fpkm_tracking.gz").read()
        (s, gene_expression) = epidb.add_expression("gene", "s2", 2, data,
                                                    "cufflinks", "DEEP", None,
                                                    self.admin_key)
        self.assertSuccess(s, gene_expression)

        data = gzip.open("data/fpkm/small_3.fpkm_tracking.gz").read()
        (s, gene_expression) = epidb.add_expression("gene", "s2", 44, data,
                                                    "cufflinks", "DEEP", None,
                                                    self.admin_key)
        self.assertSuccess(s, gene_expression)

        (s, gex) = epidb.list_expressions("gene", "s1", None, None,
                                          self.admin_key)
        self.assertEquals(gex, [])

        (s, gex) = epidb.list_expressions("gene", "s2", None, None,
                                          self.admin_key)
        self.assertEquals(gex, [['gx1', ''], ['gx2', ''], ['gx3', '']])

        (s, gex) = epidb.list_expressions("gene", "s2", [1, 2], None,
                                          self.admin_key)
        self.assertEquals(gex, [['gx1', ''], ['gx2', '']])

        (s, gex) = epidb.list_expressions("gene", "s2", 44, None,
                                          self.admin_key)
        self.assertEquals(gex, [['gx3', '']])

        (s, gex) = epidb.list_expressions("gene", None, 1, "DEEP",
                                          self.admin_key)
        self.assertEquals(gex, [['gx1', '']])

        data = gzip.open(
            "data/fpkm/51_Hf03_BlTN_Ct_mRNA_M_1.LXPv1.20150708_genes.fpkm_tracking.gz"
        ).read()
        (s, gene_expression) = epidb.add_expression("gene", "s1", 1, data,
                                                    "cufflinks", "ENCODE",
                                                    None, self.admin_key)
        self.assertSuccess(s, gene_expression)

        (s, gex) = epidb.list_expressions("gene", None, None, None,
                                          self.admin_key)
        self.assertEquals(gex,
                          [['gx1', ''], ['gx2', ''], ['gx3', ''], ['gx4', '']])
        (s, gex) = epidb.list_expressions("gene", "s1", 1, None,
                                          self.admin_key)
        self.assertEquals(gex, [['gx4', '']])
        (s, gex) = epidb.list_expressions("gene", None, None, "ENCODE",
                                          self.admin_key)
        self.assertEquals(gex, [['gx4', '']])

        (s, gex) = epidb.list_expressions("gene", ["s1", "s2"], 1, None,
                                          self.admin_key)
        self.assertEquals(gex, [['gx1', ''], ['gx4', '']])

        (s, gex) = epidb.list_expressions("gene", ["s1", "s2"], 2, None,
                                          self.admin_key)
        self.assertEquals(gex, [['gx2', '']])

        (s, gex) = epidb.list_expressions("gene", None, 1, "ENCODE",
                                          self.admin_key)
        self.assertEquals(gex, [['gx4', '']])

        s, user = epidb.add_user("user", "email", "institution",
                                 self.admin_key)
        (user_id, user_key) = user
        self.assertSuccess(s)
        (s, ss) = epidb.modify_user_admin(user_id, "permission_level",
                                          "GET_DATA", self.admin_key)
        self.assertSuccess(s, ss)

        (s, gex) = epidb.list_expressions("gene", None, None, None, user_key)
        self.assertEquals(gex, [])
        (s, gex) = epidb.list_expressions("gene", "s1", 1, None, user_key)
        self.assertEquals(gex, [])
        (s, gex) = epidb.list_expressions("gene", None, None, "ENCODE",
                                          user_key)
        self.assertEquals(gex, "107000:Project 'ENCODE' does not exist.")

        (s, info) = epidb.info(gene_expression, self.admin_key)

        self.assertEquals(
            info[0], {
                'format':
                'TRACKING_ID,GENE_ID,GENE_SHORT_NAME,FPKM,FPKM_CONF_LO,FPKM_CONF_HI,FPKM_STATUS',
                'sample_info': {
                    'biosource_name': 'K562',
                    'karyotype': 'cancer',
                    'sex': 'F'
                },
                'content_format':
                'cufflinks',
                'total_genes':
                57910,
                'replica':
                1,
                'sample_id':
                's1',
                '_id':
                'gx4',
                'extra_metadata': {},
                'columns': [{
                    'name': 'TRACKING_ID',
                    'column_type': 'string'
                }, {
                    'name': 'GENE_ID',
                    'column_type': 'string'
                }, {
                    'name': 'GENE_SHORT_NAME',
                    'column_type': 'string'
                }, {
                    'name': 'FPKM',
                    'column_type': 'double'
                }, {
                    'name': 'FPKM_CONF_LO',
                    'column_type': 'double'
                }, {
                    'name': 'FPKM_CONF_HI',
                    'column_type': 'double'
                }, {
                    'name': 'FPKM_STATUS',
                    'column_type': 'string'
                }]
            })

        data = gzip.open(
            "data/grape2/SP8-TH91.gene_quantification.rsem_grape2_crg.GRCh38.20150622.results.txt.gz"
        ).read()
        (s, gene_expression) = epidb.add_expression("gene", "s1", 1, data,
                                                    "grape2", "ENCODE", None,
                                                    self.admin_key)
        self.assertEquals(
            gene_expression,
            "131001:A Expression of the type 'gene' with sample_id 's1' and replica '1' already exists."
        )

        (s, gene_expression) = epidb.add_expression("gene", "s1", 2, data,
                                                    "grape2", "ENCODE", None,
                                                    self.admin_key)
        self.assertSuccess(s, gene_expression)

        data = gzip.open(
            "data/gtf/gencode.v19.annotation.ONLY_GENES.gtf.gz").read()
        (s, ss) = epidb.add_gene_model("gencode v19", "hg19",
                                       "Test One Description", data, "GTF", {},
                                       self.admin_key)
        self.assertSuccess(s, ss)

        (status, gx_query) = epidb.select_expressions("gene", "s1", 2,
                                                      "ENSG00000000003.13",
                                                      "ENCODE", "gencode v19",
                                                      self.admin_key)
        self.assertSuccess(status, gx_query)
        status, info = epidb.info(gx_query, user_key)
        (status, r_id) = epidb.get_regions(
            gx_query,
            "CHROMOSOME,START,END,@STRAND,GENE_ID,TRANSCRIPT_IDS,LENGTH,EFFECTIVE_LENGTH,EXPECTED_COUNT,TPM,FPKM,POSTERIOR_MEAN_COUNT,POSTERIOR_STANDARD_DEVIATION_OF_COUNT,PME_TPM,PME_FPKM,TPM_CI_LOWER_BOUND,TPM_CI_UPPER_BOUND,FPKM_CI_LOWER_BOUND,FPKM_CI_UPPER_BOUND",
            self.admin_key)
        self.assertSuccess(status, r_id)
        regions = self.get_regions_request(r_id)
        self.assertEquals(
            regions,
            "chrX\t99883667\t99894988\t-\tENSG00000000003.13\tENSG00000000003.13\t2025\t1855.4301\t161.0000\t1.0000\t2.1300\t161.0000\t0.0000\t1.0500\t2.2700\t0.8742\t1.2451\t1.8882\t2.6879"
        )

        (status, gx_query) = epidb.select_expressions("gene", "s1", 2,
                                                      "ENSG00000000003.13",
                                                      "ENCODE", "gencode v19",
                                                      self.admin_key)
        self.assertSuccess(status, gx_query)
        status, info = epidb.info(gx_query, user_key)
        (status, r_id) = epidb.get_regions(
            gx_query,
            "GENE_ID,TRANSCRIPT_IDS,LENGTH,EFFECTIVE_LENGTH,EXPECTED_COUNT,TPM,FPKM,POSTERIOR_MEAN_COUNT,POSTERIOR_STANDARD_DEVIATION_OF_COUNT,PME_TPM,PME_FPKM,TPM_CI_LOWER_BOUND,TPM_CI_UPPER_BOUND,FPKM_CI_LOWER_BOUND,FPKM_CI_UPPER_BOUND",
            self.admin_key)
        self.assertSuccess(status, r_id)
        regions = self.get_regions_request(r_id)
        self.assertEquals(
            regions,
            "ENSG00000000003.13\tENSG00000000003.13\t2025\t1855.4301\t161.0000\t1.0000\t2.1300\t161.0000\t0.0000\t1.0500\t2.2700\t0.8742\t1.2451\t1.8882\t2.6879"
        )

        (status, gx_query) = epidb.select_expressions("gene", "s1", 1,
                                                      "OR4G11P", "ENCODE",
                                                      "gencode v19",
                                                      self.admin_key)
        self.assertSuccess(status, gx_query)
        status, info = epidb.info("gx1", user_key)
        (status, r_id) = epidb.get_regions(gx_query, info[0]["format"],
                                           self.admin_key)
        self.assertSuccess(status, r_id)
        regions = self.get_regions_request(r_id)
        self.assertEquals(
            regions,
            "ENSG00000240361.1\tENSG00000240361.1\tOR4G11P\t0.0000\t0.0000\t0.0000\tOK"
        )

        (status, gx_query) = epidb.select_expressions(
            "gene", "s1", 1,
            ['CCR1', 'CD164', 'CD1D', 'CD2', 'CD34', 'CD3G', 'CD44'], "ENCODE",
            "gencode v19", self.admin_key)
        self.assertSuccess(status, gx_query)
        status, info = epidb.info("gx1", user_key)
        (status, r_id) = epidb.get_regions(gx_query, info[0]["format"],
                                           self.admin_key)
        self.assertSuccess(status, r_id)
        regions_a = self.get_regions_request(r_id)

        excepted = "ENSG00000135535.10\tENSG00000135535.10\tCD164\t101.3820\t98.8947\t103.8680\tOK\nENSG00000026508.12\tENSG00000026508.12\tCD44\t193.4920\t189.4020\t197.5830\tOK\nENSG00000160654.5\tENSG00000160654.5\tCD3G\t53.0051\t51.4405\t54.5696\tOK\nENSG00000163823.3\tENSG00000163823.3\tCCR1\t0.0201\t0.0000\t0.0433\tOK\nENSG00000116824.4\tENSG00000116824.4\tCD2\t90.0146\t87.9630\t92.0661\tOK\nENSG00000158473.6\tENSG00000158473.6\tCD1D\t0.0241\t0.0000\t0.0519\tOK\nENSG00000174059.12\tENSG00000174059.12\tCD34\t0.0000\t0.0000\t0.0000\tOK"

        lexp = excepted.split("\n")

        lresult = regions_a.split("\n")

        self.assertEquals(len(lresult), len(lexp))
        for l in lresult:
            self.assertTrue(l in lexp)

        (status, gx_query) = epidb.select_expressions("gene", "s1", 1, 'CCR1',
                                                      "ENCODE", "gencode v19",
                                                      self.admin_key)
        self.assertSuccess(status, gx_query)
        status, info = epidb.info("gx1", user_key)
        (status, r_id) = epidb.get_regions(gx_query, info[0]["format"],
                                           self.admin_key)
        self.assertSuccess(status, r_id)
        regions = self.get_regions_request(r_id)
        self.assertEquals(
            regions,
            "ENSG00000163823.3\tENSG00000163823.3\tCCR1\t0.0201\t0.0000\t0.0433\tOK"
        )

        q1 = gx_query

        (status, gx_query) = epidb.select_expressions("gene", "s1", 1, 'CD164',
                                                      "ENCODE", "gencode v19",
                                                      self.admin_key)
        self.assertSuccess(status, gx_query)
        status, info = epidb.info("gx1", user_key)
        (status, r_id) = epidb.get_regions(gx_query, info[0]["format"],
                                           self.admin_key)
        self.assertSuccess(status, r_id)
        regions = self.get_regions_request(r_id)
        self.assertEquals(
            regions,
            "ENSG00000135535.10\tENSG00000135535.10\tCD164\t101.3820\t98.8947\t103.8680\tOK"
        )

        self.assertTrue(q1 != gx_query)

        (s, info) = epidb.info(ss, self.admin_key)

        self.assertEquals(
            info[0], {
                'total_genes': 57820,
                '_id': 'gs1',
                'genome': 'hg19',
                'description': 'Test One Description',
                'format': 'GTF',
                'name': 'gencode v19'
            })

        (status, gene_info) = epidb.info("gn1", self.admin_key)
        self.assertEquals(
            gene_info[0], {
                'transcript_status': 'KNOWN',
                'gene_name': 'DDX11L1',
                'gene_type': 'pseudogene',
                'end': 14412,
                'source': 'HAVANA',
                'frame': '.',
                'level': '2',
                'gene_id': 'ENSG00000223972.4',
                'start': 11869,
                'transcript_id': 'ENSG00000223972.4',
                'score': 0.0,
                'strand': '+',
                'havana_gene': 'OTTHUMG00000000961.2',
                'transcript_name': 'DDX11L1',
                '_id': 'gn1',
                'gene_status': 'KNOWN',
                'transcript_type': 'pseudogene',
                'chromosome': 'chr1'
            })

        (status, query) = epidb.select_expressions("gene", "s1",
                                                   [1, 5, 10, 122], None,
                                                   "ENCODE", "gencode v19",
                                                   self.admin_key)
        query_one = query

        self.assertSuccess(status, query)
        (status, filtered) = epidb.filter_regions(query, "FPKM_STATUS", "!=",
                                                  "OK", "string",
                                                  self.admin_key)
        self.assertSuccess(status, filtered)
        (status, filtered_chr) = epidb.filter_regions(filtered, "CHROMOSOME",
                                                      "==", "chr21", "string",
                                                      self.admin_key)
        self.assertSuccess(status, filtered_chr)
        (status, r_id) = epidb.get_regions(
            filtered_chr, "GENE_ID,FPKM_STATUS,@SAMPLE_ID,@BIOSOURCE",
            self.admin_key)
        self.assertSuccess(status, r_id)

        regions = self.get_regions_request(r_id)

        self.assertEquals(
            regions,
            "ENSG00000240755.1\tLOWDATA\ts1\tK562\nENSG00000256386.1\tLOWDATA\ts1\tK562\nENSG00000198743.5\tLOWDATA\ts1\tK562\nENSG00000267937.1\tLOWDATA\ts1\tK562\nENSG00000238556.1\tLOWDATA\ts1\tK562\nENSG00000255902.1\tLOWDATA\ts1\tK562\nENSG00000266692.1\tLOWDATA\ts1\tK562"
        )

        (status, query) = epidb.select_expressions("gene", "s1",
                                                   [1, 5, 10, 122], None, "",
                                                   "gencode v19", user_key)

        self.assertSuccess(status, query)
        (status, filtered) = epidb.filter_regions(query, "FPKM_STATUS", "!=",
                                                  "OK", "string", user_key)
        self.assertSuccess(status, filtered)
        (status, filtered_chr) = epidb.filter_regions(filtered, "CHROMOSOME",
                                                      "==", "chr21", "string",
                                                      user_key)
        self.assertSuccess(status, filtered_chr)
        (status,
         req) = epidb.get_regions(filtered_chr,
                                  "GENE_ID,FPKM_STATUS,@SAMPLE_ID,@BIOSOURCE",
                                  user_key)
        self.assertSuccess(status, r_id)

        (s, ss) = epidb.info(req, user_key)
        while ss[0]["state"] != "done":
            time.sleep(1)
            (s, ss) = epidb.info(req, user_key)

        s, regions = epidb.get_request_data(req, user_key)

        self.assertEquals(
            regions,
            "ENSG00000240755.1\tLOWDATA\ts1\tK562\nENSG00000256386.1\tLOWDATA\ts1\tK562\nENSG00000198743.5\tLOWDATA\ts1\tK562\nENSG00000267937.1\tLOWDATA\ts1\tK562\nENSG00000238556.1\tLOWDATA\ts1\tK562\nENSG00000255902.1\tLOWDATA\ts1\tK562\nENSG00000266692.1\tLOWDATA\ts1\tK562"
        )
Ejemplo n.º 22
0
    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.")
Ejemplo n.º 23
0
    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)