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')
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')
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 \'-\'' )
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")