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)
Ejemplo n.º 5
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': '+,-'})
Ejemplo n.º 8
0
    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")
Ejemplo n.º 9
0
    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")
Ejemplo n.º 10
0
    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)
Ejemplo n.º 11
0
    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.'
        )
Ejemplo n.º 12
0
    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)
Ejemplo n.º 13
0
    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'
            })