コード例 #1
0
  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'")
コード例 #2
0
  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)
コード例 #3
0
  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)
コード例 #4
0
  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)
コード例 #5
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'
            }]
        ])
コード例 #6
0
  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': '+,-'})
コード例 #7
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)