Ejemplo n.º 1
0
    def test_calculated_math(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)
        sample_id = self.sample_ids[0]

        # adding two experiments with the same data should work
        res = 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)

        res, qid1 = epidb.select_regions("test_exp1", "hg19", None, None, None,
                                         None, None, None, None,
                                         self.admin_key)
        self.assertSuccess(res, qid1)

        res = epidb.create_column_type_calculated("calculated_error",
                                                  "description",
                                                  "return value_of('SCORE')",
                                                  self.admin_key)
        self.assertSuccess(res)
        (s, req) = epidb.get_regions(
            qid1, "CHROMOSOME,START,END,VALUE, calculated_error",
            self.admin_key)
        regions = self.get_regions_request(req)
        self.assertEqual(
            regions.split("\n")[0],
            "chr1\t0\t10\t8.1235\tInvalid column name SCORE")

        res = epidb.create_column_type_calculated(
            "calculated_dummy", "description",
            "return value_of('START') - value_of('END') * value_of('VALUE')",
            self.admin_key)
        self.assertSuccess(res)
        (s, req) = epidb.get_regions(
            qid1, "CHROMOSOME,START,END,VALUE, calculated_dummy",
            self.admin_key)
        regions = self.get_regions_request(req)
        r = regions.split("\n")[0].split("\t")[4]
        self.assertEqual(r, '-81.234570')

        res = epidb.create_column_type_calculated(
            "calculated_norm_by_length", "description",
            "return math.sqrt(value_of('VALUE') / (value_of('END') - value_of('START')))",
            self.admin_key)
        self.assertSuccess(res)
        (s, req) = epidb.get_regions(
            qid1, "CHROMOSOME,START,END,VALUE, calculated_norm_by_length",
            self.admin_key)
        regions = self.get_regions_request(req)
        r = regions.split("\n")[0].split("\t")[4]
        self.assertEqual(r, '0.901302')
Ejemplo n.º 2
0
    def test_calculated_metafield(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)
        sample_id = self.sample_ids[0]

        # adding two experiments with the same data should work
        res = 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)

        res, qid1 = epidb.select_regions("test_exp1", "hg19", None, None, None,
                                         None, None, None, None,
                                         self.admin_key)
        self.assertSuccess(res, qid1)

        res = epidb.create_column_type_calculated(
            "calculated", "description",
            "return 'EM and Name: - '.. value_of('@EPIGENETIC_MARK') .. ' - ' .. value_of('@NAME')",
            self.admin_key)
        self.assertSuccess(res)

        (s, req) = epidb.get_regions(qid1,
                                     "CHROMOSOME,START,END,VALUE, calculated",
                                     self.admin_key)
        self.assertSuccess(s, req)
        regions = self.get_regions_request(req)
        r = regions.split("\n")[0].split("\t")[4]

        self.assertEqual(r, 'EM and Name: - Methylation - test_exp1')
Ejemplo n.º 3
0
    def test_wrong_column_creation(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)
        sample_id = self.sample_ids[0]

        # adding two experiments with the same data should work
        res = 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)

        res, qid1 = epidb.select_regions("test_exp1", "hg19", None, None, None,
                                         None, None, None, None,
                                         self.admin_key)
        self.assertSuccess(res, qid1)

        # It is missing a '  before the EM
        res = epidb.create_column_type_calculated(
            "calculated", "description",
            "return EM and Name: - '.. value_of('@EPIGENETIC_MARK') .. ' - ' .. value_of('@NAME')",
            self.admin_key)
        self.assertFailure(res)
        self.assertEqual(
            res[1],
            '[string "function row_value()..."]:2: \'<name>\' expected near \'-\''
        )
Ejemplo n.º 4
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")