Exemplo n.º 1
0
    def test_add_with_out_of_bound_region(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]
        regions_data = helpers.load_bed("hg18_out_of_bounds")
        _format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"]

        res = epidb.add_experiment("test_exp1", "hg19", "Methylation",
                                   sample_id, "tech1", "ENCODE", "desc1",
                                   regions_data, _format, None, self.admin_key)
        self.assertFailure(res)

        res = epidb.add_experiment("test_exp1", "hg19", "Methylation",
                                   sample_id, "tech1", "ENCODE", "desc1",
                                   regions_data, _format,
                                   {"__trim_to_chromosome_size__": True},
                                   self.admin_key)
        self.assertSuccess(res)

        res, q_exp = epidb.select_regions("test_exp1", "hg19", None, None,
                                          None, None, None, None, None,
                                          self.admin_key)
        res, req = epidb.get_regions(q_exp, _format, self.admin_key)

        data = self.get_regions_request(req)

        regions_data_okay = helpers.load_bed("hg18_out_of_bounds_okay")

        self.assertEqual(data, regions_data_okay)
  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)
Exemplo n.º 3
0
    def test_remove_technique(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]
        regions_data = helpers.load_bed("hg19_chr1_1")
        format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"]

        (res, add_technique_id) = epidb.add_technique(
            "Hypster Technique", "I knew this technique before everybody else",
            {}, self.admin_key)
        self.assertSuccess(res, add_technique_id)

        # adding two experiments with the same data should work
        res, eid = epidb.add_experiment("test_exp1", "hg19", "Methylation",
                                        sample_id, "Hypster Technique",
                                        "ENCODE", "desc1", regions_data,
                                        format, None, self.admin_key)
        self.assertSuccess(res)

        res = epidb.remove(add_technique_id, self.admin_key)
        self.assertFailure(res)

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

        res = epidb.remove(add_technique_id, self.admin_key)
        self.assertSuccess(res)
Exemplo n.º 4
0
    def test_remove_epigenetic_mark(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]
        regions_data = helpers.load_bed("hg19_chr1_1")
        format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"]

        (res, epigenetic_mark_id) = epidb.add_epigenetic_mark(
            "H3K666ac3", "acetil metal \,,,/",
            {"category": "heavy histone metal"}, self.admin_key)
        self.assertSuccess(res, epigenetic_mark_id)

        # adding two experiments with the same data should work
        res, eid = epidb.add_experiment("test_exp1", "hg19", "H3K666ac3",
                                        sample_id, "tech1", "ENCODE", "desc1",
                                        regions_data, format, None,
                                        self.admin_key)
        self.assertSuccess(res)

        res = epidb.remove(epigenetic_mark_id, self.admin_key)
        self.assertFailure(res)

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

        res = epidb.remove(epigenetic_mark_id, self.admin_key)
        self.assertSuccess(res)
Exemplo n.º 5
0
    def test_remove_project(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]
        regions_data = helpers.load_bed("hg19_chr1_1")
        format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"]

        res, projects = epidb.list_projects(self.admin_key)

        # adding two experiments with the same data should work
        res, eid = epidb.add_experiment("test_exp1", "hg19", "Methylation",
                                        sample_id, "tech1", projects[0][1],
                                        "desc1", regions_data, format, None,
                                        self.admin_key)
        self.assertSuccess(res, eid)

        res = epidb.remove(projects[0][0], self.admin_key)
        self.assertFailure(res)

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

        res = epidb.remove(projects[0][0], self.admin_key)
        self.assertSuccess(res)
Exemplo n.º 6
0
    def test_double_experiment_same_user_fail(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        uid, user_key = self.insert_user(epidb, "test_user")
        s, tmp_user = epidb.modify_user_admin(uid, "permission_level",
                                              "INCLUDE_EXPERIMENTS",
                                              self.admin_key)
        self.assertSuccess(s)

        sample_id = self.sample_ids[0]
        regions_data = helpers.load_bed("hg19_chr1_1")
        format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"]

        # adding the same experiments with different users should work
        exp = ("test_exp1", "hg19", "Methylation", sample_id, "tech1",
               "ENCODE", "desc1", regions_data, format, None)

        res = epidb.add_experiment(*(exp + (self.admin_key, )))
        self.assertSuccess(res)

        res = epidb.add_experiment(*(exp + (user_key, )))
        self.assertFailure(res)
        self.assertEqual(
            res[1],
            "102001:The experiment name 'test_exp1' is already being used.")
Exemplo n.º 7
0
    def test_add_with_invalid_epigenetic_mark(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]
        regions_data = helpers.load_bed("hg19_chr1_1")
        format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"]

        res = epidb.add_experiment("test_exp1", "hg19", "No Epigenetic ",
                                   sample_id, "tech1", "ENCODE", "desc1",
                                   regions_data, format, None, self.admin_key)
        self.assertFailure(res)
Exemplo n.º 8
0
    def test_experiments_pass(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]
        regions_data = helpers.load_bed("hg19_chr1_1")
        format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"]

        # adding two experiments with the same data should work
        res = epidb.add_experiment("test_exp1", "hg19", "Methylation",
                                   sample_id, "tech1", "ENCODE", "desc1",
                                   regions_data, format, None, self.admin_key)
        self.assertSuccess(res)

        res = epidb.add_experiment("test_exp2", "hg19", "Methylation",
                                   sample_id, "tech1", "ENCODE", "desc1",
                                   regions_data, format, None, self.admin_key)
        self.assertSuccess(res)

        res, experiments = epidb.list_experiments("hg19", "peaks", None,
                                                  "NO_BIOSOURCE", None, None,
                                                  None, self.admin_key)
        self.assertSuccess(res, experiments)
        self.assertEqual(len(experiments), 0)

        res, experiments = epidb.list_experiments(None, None, None, None, None,
                                                  None, None, self.admin_key)
        self.assertSuccess(res, experiments)
        self.assertEqual(len(experiments), 2)

        res, experiments = epidb.list_experiments("hg19", "peaks", None,
                                                  "K562", None, None, None,
                                                  self.admin_key)
        self.assertSuccess(res, experiments)
        self.assertEqual(len(experiments), 2)

        experiments_names = [x[1] for x in experiments]

        self.assertTrue("test_exp1" in experiments_names)
        self.assertTrue("test_exp2" in experiments_names)

        s, ids = epidb.name_to_id(['test_exp1'], 'experiments', self.admin_key)
        self.assertEqual(ids, [['e1', 'test_exp1']])
        s, ids = epidb.name_to_id(['test_exp1', 'test_exp2'], 'experiments',
                                  self.admin_key)
        self.assertEqual([['e1', 'test_exp1'], ['e2', 'test_exp2']], ids)
        s, ids = epidb.name_to_id('test_exp1', 'experiments', self.admin_key)
        self.assertEqual([['e1', 'test_exp1']], ids)
Exemplo n.º 9
0
    def test_double_experiment_fail(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]
        regions_data = helpers.load_bed("hg19_chr1_1")
        format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"]

        # adding the same experiment with the same user should fail
        exp = ("test_exp1", "hg19", "Methylation", sample_id, "tech1",
               "ENCODE", "desc1", regions_data, format, None)

        res = epidb.add_experiment(*(exp + (self.admin_key, )))
        self.assertSuccess(res)

        res = epidb.add_experiment(*(exp + (self.admin_key, )))
        self.assertFailure(res)
Exemplo n.º 10
0
    def test_experiments_preview(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]
        regions_data = helpers.load_bed("hg19_chr1_1")
        format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"]

        # adding two experiments with the same data should work
        res = epidb.add_experiment("test_exp1", "hg19", "Methylation",
                                   sample_id, "tech1", "ENCODE", "desc1",
                                   regions_data, format, None, self.admin_key)
        self.assertSuccess(res)

        status, preview = epidb.preview_experiment('test_exp1', self.admin_key)
        self.assertEqual(
            preview,
            'CHROMOSOME\tSTART\tEND\tNAME\tSCORE\tSTRAND\tSIGNAL_VALUE\tP_VALUE\tQ_VALUE\tPEAK\nchr1\t713240\t713390\t.\t0.0000\t+\t21.0000\t69.6000\t-1.0000\t-1\nchr1\t713520\t713670\t.\t0.0000\t-\t21.0000\t22.4866\t-1.0000\t-1\nchr1\t713900\t714050\t.\t0.0000\t+\t59.0000\t71.2352\t-1.0000\t-1\nchr1\t714160\t714310\t.\t0.0000\t+\t22.0000\t101.8740\t-1.0000\t-1\nchr1\t714540\t714690\t.\t0.0000\t+\t77.0000\t105.3120\t-1.0000\t-1'
        )
Exemplo n.º 11
0
    def test_list_recent(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]
        regions_data = helpers.load_bed("hg19_chr1_1")
        format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"]

        res, eid1 = epidb.add_experiment("test_exp1", "hg19", "Methylation",
                                         sample_id, "tech1", "ENCODE", "desc1",
                                         regions_data, format, None,
                                         self.admin_key)
        self.assertSuccess(res, eid1)

        # get some distance in insertion times
        time.sleep(5)

        res, eid2 = epidb.add_experiment("test_exp2", "hg19", "Methylation",
                                         sample_id, "tech1", "ENCODE", "desc1",
                                         regions_data, format, None,
                                         self.admin_key)
        self.assertEqual(res, "okay")

        time.sleep(3)
        ago = 1.0 / 24 / 60 / 60 * 5

        res, experiments = epidb.list_recent_experiments(
            ago, "hg19", None, None, None, None, self.admin_key)
        self.assertSuccess(res, experiments)

        experiments_names = [x[1] for x in experiments]

        self.assertTrue("test_exp1" not in experiments_names)
        self.assertTrue("test_exp2" in experiments_names)

        res, experiments = epidb.list_recent_experiments(
            1.0, "hg19", None, None, None, None, self.admin_key)
        self.assertSuccess(res, experiments)

        experiments_names = [x[1] for x in experiments]
        self.assertTrue("test_exp1" in experiments_names)
        self.assertTrue("test_exp2" in experiments_names)
Exemplo n.º 12
0
  def test_experiment_metadata(self):
    epidb = DeepBlueClient(address="localhost", port=31415)
    self.init_base(epidb)

    sample_id = self.sample_ids[0]
    regions_data = helpers.load_bed("hg19_chr1_1")
    format = data_info.EXPERIMENTS["hg19_chr1_1"]["format"]

    res, eid1 = epidb.add_experiment("test_exp1", "hg19", "Methylation", sample_id, "tech1",
              "ENCODE", "desc1", regions_data, format, {"source": "ncbi"}, self.admin_key)
    self.assertSuccess(res, eid1)

    res, eid2 = epidb.add_experiment("test_exp2", "hg19", "Methylation", sample_id, "tech1",
              "ENCODE", "desc1", regions_data, format, {"source":"encode"}, self.admin_key)
    self.assertSuccess(res, eid2)

    res, ids = epidb.search("ncbi", "Experiments", self.admin_key)
    self.assertSuccess(res, ids)
    self.assertEqual(ids[0][0], eid1)

    # Should be the first because the "encode" name appears twice (project and extra metadata)
    res, ids = epidb.search("encode", "experiments", self.admin_key)
    self.assertSuccess(res, ids)
    self.assertEqual(ids[0][0], eid2)