예제 #1
0
    def test_include_invalid_regions(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        data = """chr1\t1\t100000000000000000
chr10\t666\t66610000
chrY\t12345\t1234567"""
        (s, a) = epidb.add_annotation("test annotation", "hg19", "testing",
                                      data, "CHROMOSOME,START,END",
                                      {"HI": "HOW ARE YOU?"}, self.admin_key)
        self.assertFailure(s, a)
        self.assertEquals(
            a,
            "Error while reading the BED file. Line: 0. - '100000000000000000 is not a valid end position'"
        )

        data = """chr1\t2147483647\t2147483648"""
        (s, a) = epidb.add_annotation("test annotation", "hg19", "testing",
                                      data, "CHROMOSOME,START,END",
                                      {"HI": "HOW ARE YOU?"}, self.admin_key)
        self.assertFailure(s, a)
        self.assertEquals(
            a,
            "Invalid region: 2147483647 - 2147483648. It is beyond the length of the chromosome chr1 ."
        )
예제 #2
0
    def test_annotation_shuffle(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        cpg_island = ",".join([
            "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG",
            "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP"
        ])

        file_data = None
        with open("data/cpgIslandExtFull.bed", 'r') as f:
            file_data = f.read()

        res = epidb.add_annotation(
            "Cpg Islands", "hg19", "CpG islands are associated ...", file_data,
            cpg_island, {
                "url":
                "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema"
            }, self.admin_key)
        self.assertSuccess(res)

        res, qid = epidb.select_annotations("Cpg Islands", "hg19", None, None,
                                            None, self.admin_key)
        self.assertSuccess(res, qid)

        res, req = epidb.get_regions(qid, "CHROMOSOME,START,END",
                                     self.admin_key)
        self.assertSuccess(res, req)
        regions = self.get_regions_request(req)

        # ---

        file_data = None
        with open("data/cpgIslandExtShuffle.bed", 'r') as f:
            file_data = f.read()

        res = epidb.add_annotation(
            "Cpg Islands Shuffle", "hg19", "CpG islands are associated ...",
            file_data, cpg_island, {
                "url":
                "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema"
            }, self.admin_key)
        self.assertSuccess(res)

        res, qid_shuffle = epidb.select_annotations("Cpg Islands Shuffle",
                                                    "hg19", None, None, None,
                                                    self.admin_key)
        self.assertSuccess(res, qid)

        res, req_shuffle = epidb.get_regions(qid_shuffle,
                                             "CHROMOSOME,START,END",
                                             self.admin_key)
        self.assertSuccess(res, req)
        regions_shuffle = self.get_regions_request(req_shuffle)
        self.assertEqual(regions_shuffle, regions)

        self.assertEqual(regions, regions_shuffle)
예제 #3
0
    def test_list_annotations(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init(epidb)

        genome_info = None
        with open("data/genomes/hg19", 'r') as f:
            genome_info = f.read().replace(",", "")

        file_data = None
        with open("data/cpgIslandExt.txt", 'r') as f:
            file_data = f.read()

        res = epidb.add_genome("hg19", "Human genome 19", genome_info,
                               self.admin_key)
        self.assertSuccess(res)
        res = epidb.add_annotation(
            "Cpg Islands", "hg19", "CpG islands are associated ...", file_data,
            "", {
                "url":
                "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema"
            }, self.admin_key)
        self.assertSuccess(res)

        res = epidb.add_genome("hg19a", "Human genome 19a", genome_info,
                               self.admin_key)
        self.assertSuccess(res)
        res = epidb.add_annotation(
            "Cpg Islands", "hg19a", "CpG islands are associated ...",
            file_data, "", {
                "url":
                "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema"
            }, self.admin_key)
        self.assertSuccess(res)

        res = epidb.add_genome("hg19b", "Human genome 19b", genome_info,
                               self.admin_key)
        self.assertSuccess(res)
        res = epidb.add_annotation(
            "Cpg Islands", "hg19b", "CpG islands are associated ...",
            file_data, "", {
                "url":
                "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema"
            }, self.admin_key)
        self.assertSuccess(res)

        expected = [
            'okay',
            [['a1', 'Chromosomes size for hg19'], ['a2', 'Cpg Islands'],
             ['a3', 'Chromosomes size for hg19a'], ['a4', 'Cpg Islands'],
             ['a5', 'Chromosomes size for hg19b'], ['a6', 'Cpg Islands']]
        ]
        result = epidb.list_annotations("", self.admin_key)

        self.assertEqual(expected, result)
예제 #4
0
    def test_annotation_full_cpg_islands(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        cpg_island = ",".join([
            "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG",
            "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP"
        ])

        with open("data/cpgIslandExtFull.txt", 'r') as f:
            file_data = f.read()
            regions_count = len(file_data.split("\n"))
            (res, a_1) = epidb.add_annotation("Cpg Islands", "hg19",
                                              "Complete CpG islands",
                                              file_data, cpg_island, None,
                                              self.admin_key)
            self.assertSuccess(res, a_1)
            res, qid_1 = epidb.select_annotations("Cpg Islands", "hg19", None,
                                                  None, None, self.admin_key)
            self.assertSuccess(res, qid_1)

            (s, req) = epidb.count_regions(qid_1, self.admin_key)
            count = self.count_request(req)

            self.assertEqual(regions_count, count)
예제 #5
0
    def test_long_sequence_content(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sequence = open("data/genomes/chromosomes/hg19.chr19").read()
        res = epidb.upload_chromosome("hg19", "chr19", sequence,
                                      self.admin_key)
        self.assertSuccess(res)

        join_seq = "".join(sequence.split("\n"))

        data = "chr19\t0\t59128983"
        ann_name = "Full chr19"
        (s, aid) = epidb.add_annotation(ann_name, "hg19", None, data, None,
                                        None, self.admin_key)
        (s, sid) = epidb.select_annotations(ann_name, "hg19", None, None, None,
                                            self.admin_key)

        fmt = "@SEQUENCE"
        (s, req) = epidb.get_regions(sid, fmt, self.admin_key)
        self.assertSuccess(res, req)
        regions = self.get_regions_request(req)

        self.assertEqual(len(regions), len(join_seq))
        self.assertEqual(regions, join_seq)
예제 #6
0
    def test_get_sequences(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sequence = open("data/genomes/chromosomes/chrM.fa").read()
        res = epidb.upload_chromosome("hg19", "chrM", sequence, self.admin_key)

        data = """chrM\t1\t30
chrM\t2\t31
chrM\t2340\t2377"""
        ann_name = "Interesting Regions at chrM"
        (s, aid) = epidb.add_annotation(ann_name, "hg19", None, data, None,
                                        None, self.admin_key)
        self.assertSuccess(s, aid)
        (s, sid) = epidb.select_annotations(ann_name, "hg19", None, None, None,
                                            self.admin_key)
        self.assertSuccess(s, sid)

        fmt = "CHROMOSOME,START,END,@NAME,@SEQUENCE,@LENGTH"
        (s, req) = epidb.get_regions(sid, fmt, self.admin_key)
        self.assertSuccess(res, req)
        regions = self.get_regions_request(req)

        expected = """chrM\t1\t30\tInteresting Regions at chrM\tATCACAGGTCTATCACCCTATTAACCACT\t29
chrM\t2\t31\tInteresting Regions at chrM\tTCACAGGTCTATCACCCTATTAACCACTC\t29
chrM\t2340\t2377\tInteresting Regions at chrM\tGCCTGCGTCAGATCAAAACACTGAACTGACAATTAAC\t37"""
        self.assertEqual(regions, expected)
예제 #7
0
    def test_include_annotations(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        user_id, user_key = self.get_new_user(epidb)

        ann = helpers.data.ANNOTATIONS["Cpg Islands"]
        with open(ann["data_file"], 'r') as f:
            annotation_data = f.read()

        s = epidb.add_annotation("Cpg Islands", ann["genome"],
                                 ann["description"], annotation_data,
                                 ann["format"], ann["metadata"], user_key)
        self.assertFailure(s)

        self.modify_user_permission(epidb, user_id, "INCLUDE_ANNOTATIONS")

        s = epidb.add_annotation("Cpg Islands", ann["genome"],
                                 ann["description"], annotation_data,
                                 ann["format"], ann["metadata"], user_key)
        self.assertSuccess(s)
    def test_big_file(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        f = gzip.open("data/bedgraph/bigwig.bg.gz")
        data = f.read()
        (status, a1) = epidb.add_annotation("exp_wig", "hg19", "bla", data,
                                            "bedgraph", None, self.admin_key)

        (status, q1) = epidb.select_annotations("exp_wig", "hg19", None, None,
                                                None, self.admin_key)

        status, r1 = epidb.binning(q1, "VALUE", 5, self.admin_key)
        binning = self.get_regions_request(r1)
        self.assertEqual(
            binning, {
                'binning': {
                    'ranges': [
                        -1126.72, -726.6238, -326.5276, 73.5686, 473.6648,
                        873.761
                    ],
                    'counts': [8, 5, 3992582, 3489, 13]
                }
            })

        to_filter_low = binning["binning"]["ranges"][2]
        status, filtered = epidb.filter_regions(q1, "VALUE", ">",
                                                str(to_filter_low), "number",
                                                self.admin_key)

        to_filter_high = binning["binning"]["ranges"][4]
        status, filtered = epidb.filter_regions(q1, "VALUE", "<",
                                                str(to_filter_high), "number",
                                                self.admin_key)

        status, r_filtered = epidb.binning(filtered, "VALUE", 10,
                                           self.admin_key)
        binning = self.get_regions_request(r_filtered)
        self.assertEqual(
            binning, {
                'binning': {
                    'counts': [4, 4, 1, 2, 2, 17, 1, 3932813, 772, 119],
                    'ranges': [
                        -1126.72, -967.0013, -807.2826, -647.5638, -487.8452,
                        -328.1265, -168.4077, -8.689, 151.0297, 310.7484,
                        470.4671
                    ]
                }
            })
예제 #9
0
    def test_no_start_position(self):
        file_content = """1036\t1146\t43\t0\t18\tchr19\t59118819\t1000\t-10000\t+\t(TTAGGG)n\tSimple_repeat\tSimple_repeat\t5\t165\t0\t1\n585\t1080\t161\t1\t0\tchr19_gl000208_random\t0\t719\t-91970\t-\tALR/Alpha\tSatellite\tcentr\t-41\t719\t1\t4"""

        rmsk = [
            "BIN", "swSCORE", "MILLI_DIV", "MILLI_DEL", "MILLI_INS", "NAME",
            "START", "END", "GENO_LEFT", "STRAND", "repNAME", "REP_CLASS",
            "REP_FAMILY", "REP_START", "REP_END", "REP_LEFT", "ID"
        ]
        format = ",".join(rmsk)

        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        (r, a) = epidb.add_annotation("repeat_masker", "hg19", None,
                                      file_content, format, None,
                                      self.admin_key)

        self.assertFailure(r, a)

        self.assertEquals(
            a,
            "120002:The CHROMOSOME is missing in the format. Please, inform the CHROMOSOME column in the Format."
        )

        rmsk2 = [
            "BIN", "swSCORE", "MILLI_DIV", "MILLI_DEL", "MILLI_INS",
            "CHROMOSOME", "START", "END", "GENO_LEFT", "STRAND", "repNAME",
            "REP_CLASS", "REP_FAMILY", "REP_START", "REP_END", "REP_LEFT", "ID"
        ]
        format2 = ",".join(rmsk2)

        (r, a) = epidb.add_annotation("repeat_masker2", "hg19", None,
                                      file_content, format2, None,
                                      self.admin_key)

        self.assertSuccess(r, a)
    def test_output_format(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        file_data = open("data/cpgIslandAllFields.txt").read()

        cpg_island = ",".join([
            "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG",
            "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP"
        ])

        res = epidb.add_annotation("Cpg Islands", "hg19", "CpG islands",
                                   file_data, cpg_island, None, self.admin_key)
        self.assertSuccess(res)

        res, qid_1 = epidb.select_annotations("Cpg Islands", "hg19", None,
                                              None, None, self.admin_key)
        self.assertSuccess(res, qid_1)
        self.assertEqual(qid_1, 'q1')

        res, req = epidb.count_regions(qid_1, self.admin_key)
        self.assertSuccess(res, req)
        count = self.count_request(req)
        self.assertEqual(10, count)

        res, req = epidb.get_regions(
            qid_1,
            "chr:start:end:name:length:cpgNum:gcNum:perCpg:perGc:obsExp",
            self.admin_key)
        self.assertEquals(
            req,
            "125000:Column name 'chr:start:end:name:length:cpgNum:gcNum:perCpg:perGc:obsExp' does not exist."
        )

        res, req = epidb.get_regions(
            qid_1,
            "CHROMOSOME,START,END,NAME,LENGTH,NUM_CPG,NUM_GC,PER_CPG,PER_CG,OBS_EXP",
            self.admin_key)
        regions = self.get_regions_request(req)

        expected = 'chr1\t28735\t29810\tCpG: 116\t1075\t116\t787\t21.6000\t73.2000\t0.8300\nchr1\t135124\t135563\tCpG: 30\t439\t30\t295\t13.7000\t67.2000\t0.6400\nchr1\t327790\t328229\tCpG: 29\t439\t29\t295\t13.2000\t67.2000\t0.6200\nchr1\t437151\t438164\tCpG: 84\t1013\t84\t734\t16.6000\t72.5000\t0.6400\nchr1\t449273\t450544\tCpG: 99\t1271\t99\t777\t15.6000\t61.1000\t0.8400\nchr1\t533219\t534114\tCpG: 94\t895\t94\t570\t21.0000\t63.7000\t1.0400\nchr1\t544738\t546649\tCpG: 171\t1911\t171\t1405\t17.9000\t73.5000\t0.6700\nchr1\t713984\t714547\tCpG: 60\t563\t60\t385\t21.3000\t68.4000\t0.9200\nchr1\t762416\t763445\tCpG: 115\t1029\t115\t673\t22.4000\t65.4000\t1.0700\nchr1\t788863\t789211\tCpG: 28\t348\t28\t192\t16.1000\t55.2000\t1.0600'

        self.assertSuccess(res, regions)
        self.assertEquals(expected, regions)
예제 #11
0
    def test_annotation_signal_bedgraph(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]

        files = ["test1"]

        for filename in files:
            wig_data = helpers.load_bedgraph(filename)
            res = epidb.add_annotation(filename, "hg19", "Test data", wig_data,
                                       "bedgraph", None, self.admin_key)
            self.assertSuccess(res)

        (s, q) = epidb.select_annotations(files, "hg19", None, None, None,
                                          self.admin_key)

        (s, req) = epidb.count_regions(q, self.admin_key)
        self.assertSuccess(s, req)
        count = self.count_request(req)

        self.assertEqual(1000, count)

        (s, q_filtered_down) = epidb.filter_regions(q, "VALUE", ">", "0.75",
                                                    "number", self.admin_key)
        (s, q_filtered_up) = epidb.filter_regions(q_filtered_down, "VALUE",
                                                  "<", "0.8", "number",
                                                  self.admin_key)
        (s, q_chr_x) = epidb.filter_regions(q_filtered_up, "CHROMOSOME", "!=",
                                            "chrX", "string", self.admin_key)
        (s, q_chr_7) = epidb.filter_regions(q_chr_x, "CHROMOSOME", "!=",
                                            "chr7", "string", self.admin_key)

        (s, req) = epidb.get_regions(
            q_chr_7, "CHROMOSOME,START,END,VALUE,@NAME,@EPIGENETIC_MARK",
            self.admin_key)
        regions = self.get_regions_request(req)

        self.assertEqual(
            regions,
            'chr1\t104372258\t104372293\t0.7767\ttest1\t\nchr10\t126498141\t126498176\t0.7695\ttest1\t\nchr11\t66110277\t66110312\t0.7613\ttest1\t\nchr15\t38653026\t38653061\t0.7720\ttest1\t\nchr15\t87725326\t87725361\t0.7727\ttest1\t\nchr16\t2119419\t2119454\t0.7696\ttest1\t\nchr16\t63360719\t63360754\t0.7740\ttest1\t\nchr19\t46369215\t46369250\t0.7727\ttest1\t\nchr8\t21923667\t21923702\t0.7930\ttest1\t'
        )
예제 #12
0
  def test_annotation_info(self):
    epidb = DeepBlueClient(address="localhost", port=31415)
    self.init_base(epidb)

    aid = None
    with open("data/cpgIslandExt.txt") as f:
      res, aid = epidb.add_annotation("Cpg Islands", "hg19", "CpG islands are associated ...",
                                      f.read(), "", {"url":"genome.ucsc.edu...", "meta":"data"},
                                      self.admin_key)
      self.assertSuccess(res, aid)

    res, data = epidb.info(aid, self.admin_key)
    self.assertEqual(res, 'okay')
    self.assertEqual(data[0]['name'], "Cpg Islands")
    self.assertEqual(data[0]['description'], "CpG islands are associated ...")
    self.assertEqual(data[0]['genome'], "hg19")
    self.assertEqual(data[0]['extra_metadata'], {"url":"genome.ucsc.edu...", "meta":"data"})
    self.assertEqual(data[0]['upload_info']['user'], "test_admin")
    self.assertEqual(data[0]['format'], "CHROMOSOME,START,END")
    self.assertEqual(data[0]['_id'], aid)
예제 #13
0
    def test_annotation(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        file_data = None
        with open("data/cpgIslandExt.txt", 'r') as f:
            file_data = f.read()

        res = epidb.add_annotation(
            "Cpg Islands", "hg19", "CpG islands are associated ...", file_data,
            "", {
                "url":
                "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema"
            }, self.admin_key)
        self.assertSuccess(res)

        res, annotations = epidb.list_annotations("hg19", self.admin_key)
        self.assertSuccess(res, annotations)
        self.assertEqual(len(annotations), 2)

        self.assertEqual(annotations[0][1], "Chromosomes size for hg19")
        self.assertEqual(annotations[1][1], "Cpg Islands")

        size = len(file_data.split("\n"))

        res, qid = epidb.select_annotations("Cpg Islands", "hg19", None, None,
                                            None, self.admin_key)
        self.assertSuccess(res, qid)

        res, req = epidb.count_regions(qid, self.admin_key)
        self.assertSuccess(res, req)

        count = self.count_request(req)

        self.assertEqual(size, count)

        res, req = epidb.get_regions(qid, "CHROMOSOME,START,END",
                                     self.admin_key)
        self.assertSuccess(res, req)
        regions = self.get_regions_request(req)
        self.assertEqual(regions, file_data)
예제 #14
0
    def test_annotation_signal_wig(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]

        files = [
            "scores1", "scores2", "scores3", "scores4", "scores5", "scores6",
            "scores7", "yeast_pol2", "yeast_rap1"
        ]

        for filename in files:
            wig_data = helpers.load_wig(filename)
            res = epidb.add_annotation(filename, "hg19", "Test data", wig_data,
                                       "wig", None, self.admin_key)
            self.assertSuccess(res)

        (s, r) = epidb.select_annotations(files, "hg19", None, None, None,
                                          self.admin_key)

        (s, req) = epidb.count_regions(r, self.admin_key)
        count = self.count_request(req)
        self.assertEqual(5667, count)
예제 #15
0
    def test_wrong_chromosomes_usage(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        cpg_island = ",".join([
            "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG",
            "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP"
        ])

        file_data = None
        with open("data/cpgIslandExtFull.txt", 'r') as f:
            file_data = f.read()

            res = epidb.add_annotation("Cpg Islands", "hg19",
                                       "Complete CpG islands", file_data,
                                       cpg_island, None, self.admin_key)
            self.assertSuccess(res)

        size_total = len(file_data.split("\n"))

        (status, qid_cpg) = epidb.select_annotations("Cpg Islands", "hg19",
                                                     "chr1", None, None,
                                                     self.admin_key)

        (s, req) = epidb.count_regions(qid_cpg, self.admin_key)
        self.assertSuccess(s, req)
        c = self.count_request(req)

        self.assertEquals(2462, c)

        total = 0
        (status, cq1) = epidb.select_annotations("Cpg Islands", "hg19", "chr1",
                                                 None, None, self.admin_key)
        (s, req1) = epidb.count_regions(cq1, self.admin_key)
        c1 = self.count_request(req1)

        (status, cq2) = epidb.select_annotations("Cpg Islands", "hg19", "chr7",
                                                 None, None, self.admin_key)
        (s, req2) = epidb.count_regions(cq2, self.admin_key)
        c2 = self.count_request(req2)

        (status, cq3) = epidb.select_annotations("Cpg Islands", "hg19",
                                                 "chr18", None, None,
                                                 self.admin_key)
        (s, req3) = epidb.count_regions(cq3, self.admin_key)
        c3 = self.count_request(req3)

        (status, cq4) = epidb.select_annotations("Cpg Islands", "hg19", "chrX",
                                                 None, None, self.admin_key)
        (s, req4) = epidb.count_regions(cq4, self.admin_key)
        c4 = self.count_request(req4)

        total = int(c1) + int(c2) + int(c3) + int(c4)

        (status, qid_count) = epidb.select_annotations(
            "Cpg Islands", "hg19", ["chr1", "chr7", "chr18", "chrX"], None,
            None, self.admin_key)
        (s, req) = epidb.count_regions(qid_count, self.admin_key)
        c = self.count_request(req)
        self.assertEquals(c, total)

        cpg_island_chrs = """chr1
chr10
chr11
chr11_gl000202_random
chr12
chr13
chr14
chr15
chr16
chr17
chr17_ctg5_hap1
chr17_gl000204_random
chr17_gl000205_random
chr18
chr19
chr1_gl000191_random
chr1_gl000192_random
chr2
chr20
chr21
chr22
chr3
chr4
chr4_ctg9_hap1
chr4_gl000193_random
chr4_gl000194_random
chr5
chr6
chr6_apd_hap1
chr6_cox_hap2
chr6_dbb_hap3
chr6_mann_hap4
chr6_mcf_hap5
chr6_qbl_hap6
chr6_ssto_hap7
chr7
chr8
chr8_gl000197_random
chr9
chr9_gl000199_random
chr9_gl000200_random
chr9_gl000201_random
chrUn_gl000211
chrUn_gl000212
chrUn_gl000213
chrUn_gl000214
chrUn_gl000215
chrUn_gl000216
chrUn_gl000217
chrUn_gl000218
chrUn_gl000219
chrUn_gl000220
chrUn_gl000221
chrUn_gl000222
chrUn_gl000223
chrUn_gl000224
chrUn_gl000225
chrUn_gl000228
chrUn_gl000229
chrUn_gl000231
chrUn_gl000235
chrUn_gl000236
chrUn_gl000237
chrUn_gl000240
chrUn_gl000241
chrUn_gl000242
chrUn_gl000243
chrX
chrY"""

        (status,
         qid_count) = epidb.select_annotations("Cpg Islands", "hg19",
                                               cpg_island_chrs.split("\n"),
                                               None, None, self.admin_key)
        (s, req) = epidb.count_regions(qid_count, self.admin_key)
        c = self.count_request(req)
        self.assertEquals(size_total, c)
예제 #16
0
    def test_aggregation(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]

        cpg_island = ",".join([
            "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG",
            "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP"
        ])

        with open("data/cpgIslandExtFull.txt", 'r') as f:
            file_data = f.read()
            (res, a_1) = epidb.add_annotation("Cpg Islands", "hg19",
                                              "Complete CpG islands",
                                              file_data, cpg_island, None,
                                              self.admin_key)
            self.assertSuccess(res, a_1)
            res, q_cgi = epidb.select_annotations("Cpg Islands", "hg19", None,
                                                  None, None, self.admin_key)
            self.assertSuccess(res, q_cgi)

        res, qid_2 = epidb.tiling_regions(1000000, "hg19", None,
                                          self.admin_key)
        self.assertSuccess(res, qid_2)
        res, req = epidb.count_regions(qid_2, self.admin_key)
        self.assertSuccess(res, req)
        count = self.count_request(req)
        self.assertEquals(count, 3118)

        res, _qid_3 = epidb.aggregate(q_cgi, qid_2, "@LENGTH", self.admin_key)
        self.assertSuccess(res, _qid_3)

        res, qid_3 = epidb.query_cache(_qid_3, True, self.admin_key)
        self.assertSuccess(res, qid_3)

        res, qid_4 = epidb.filter_regions(qid_3, "@AGG.COUNT", ">", "0",
                                          "number", self.admin_key)
        res, req = epidb.count_regions(qid_4, self.admin_key)
        count = self.count_request(req)
        self.assertEquals(count, 2574)

        res, qid_4 = epidb.filter_regions(qid_2, "@AGG.COUNT", "<", "0",
                                          "number", self.admin_key)
        res, req = epidb.count_regions(qid_4, self.admin_key)
        count = self.count_request(req)
        self.assertEquals(count, 0)

        res, qid_4 = epidb.filter_regions(qid_3, "@AGG.COUNT", ">=", "100",
                                          "number", self.admin_key)
        (res, req) = epidb.get_regions(
            qid_4,
            "CHROMOSOME,START,END,@AGG.MIN,@AGG.MAX,@AGG.MEDIAN,@AGG.MEAN,@AGG.VAR,@AGG.SD,@AGG.COUNT,@AGG.SUM",
            self.admin_key)
        self.assertSuccess(res, req)
        regions = self.get_regions_request(req)

        expected = 'chr1\t1000000\t2000000\t201.0000\t5585.0000\t469.0000\t766.0082\t589695.4375\t767.9163\t122\t93453.0000\nchr16\t0\t1000000\t201.0000\t6377.0000\t484.0000\t746.6083\t674998.0625\t821.5826\t120\t89593.0000\nchr16\t1000000\t2000000\t201.0000\t5449.0000\t398.0000\t666.6393\t630197.3125\t793.8497\t122\t81330.0000\nchr16\t2000000\t3000000\t201.0000\t4843.0000\t533.0000\t780.4951\t559994.2500\t748.3276\t101\t78830.0000\nchr16\t88000000\t89000000\t202.0000\t3785.0000\t347.0000\t553.3461\t295400.6875\t543.5078\t104\t57548.0000\nchr19\t0\t1000000\t201.0000\t7814.0000\t424.0000\t776.2705\t944608.4375\t971.9097\t122\t94705.0000\nchr19\t1000000\t2000000\t201.0000\t6035.0000\t430.0000\t738.8853\t625527.1250\t790.9027\t183\t135216.0000\nchr19\t2000000\t3000000\t201.0000\t3978.0000\t395.0000\t673.9907\t444749.5000\t666.8954\t107\t72117.0000\nchr19\t3000000\t4000000\t201.0000\t2753.0000\t387.0000\t531.0648\t172512.1094\t415.3458\t108\t57355.0000\nchr20\t62000000\t63000000\t202.0000\t5019.0000\t501.0000\t716.2427\t427763.9375\t654.0366\t103\t73773.0000\nchr7\t0\t1000000\t201.0000\t6234.0000\t348.0000\t556.3500\t475220.5625\t689.3624\t100\t55635.0000\nchr9\t139000000\t140000000\t202.0000\t6342.0000\t406.0000\t777.3303\t817548.5625\t904.1839\t109\t84729.0000'

        self.assertEquals(regions, expected)
        (s, req) = epidb.count_regions(qid_4, self.admin_key)
        self.assertSuccess(s, req)
        count = self.count_request(req)
        self.assertEquals(count, 12)
예제 #17
0
    def test_aggregation_bug_on_normalfields_better_data(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        res = epidb.add_technique("ChIP-seq", "ChIP-sequencing", {},
                                  self.admin_key)
        self.assertSuccess(res)

        sample_id = self.sample_ids[0]

        broad_peak_format = ",".join([
            "CHROMOSOME",
            "START",
            "END",
            "NAME",
            "SCORE",
            "STRAND",
            "SIGNAL_VALUE",
            "P_VALUE",
            "Q_VALUE",
        ])

        with open("data/wgEncodeBroadHistoneH1hescH3k27me3StdPk.bed",
                  'r') as f:
            file_data = f.read()
            (res, a_1) = epidb.add_experiment(
                "wgEncodeBroadHistoneH1hescH3k27me3StdPk.bed", "hg19",
                "H3k4me3", "s1", "ChIPseq", "ENCODE",
                "wgEncodeBroadHistoneH1hescH3k27me3StdPk.bed from ENCODE",
                file_data, broad_peak_format, None, self.admin_key)
            self.assertSuccess(res, a_1)
            res, q_exp = epidb.select_experiments(
                "wgEncodeBroadHistoneH1hescH3k27me3StdPk.bed", "chr1", None,
                None, self.admin_key)
            self.assertSuccess(res, q_exp)

        # Insert annotation
        cpg_island = ",".join([
            "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG",
            "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP"
        ])

        with open("data/cpgIslandExtFull.txt", 'r') as f:
            file_data = f.read()
            (res, a_1) = epidb.add_annotation("Cpg Islands", "hg19",
                                              "Complete CpG islands",
                                              file_data, cpg_island, None,
                                              self.admin_key)
            self.assertSuccess(res, a_1)
            res, q_cgi = epidb.select_annotations("Cpg Islands", "hg19", None,
                                                  None, None, self.admin_key)
            self.assertSuccess(res, q_cgi)

        res, qid_3 = epidb.aggregate(q_exp, q_cgi, "SCORE", self.admin_key)
        self.assertSuccess(res, qid_3)

        res, chr_sizes = epidb.select_annotations("Chromosomes size for hg19",
                                                  "hg19", None, None, None,
                                                  self.admin_key)
        res, qid_5 = epidb.aggregate(qid_3, chr_sizes, "@AGG.COUNT",
                                     self.admin_key)

        status, req = epidb.get_regions(
            qid_5,
            "CHROMOSOME,@AGG.MIN,@AGG.MAX,@AGG.MEDIAN,@AGG.MEAN,@AGG.VAR,@AGG.SD,@AGG.COUNT",
            self.admin_key)
        rs = self.get_regions_request(req)

        expected = 'chr1\t0.0000\t8.0000\t0.0000\t0.5142\t0.5301\t0.7281\t2462'
        self.assertEquals(rs, expected)
    def test_coverage(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        file_data = None
        with open("data/cpgIslandExtFull.txt", 'r') as f:
            file_data = f.read()

        cpg_island = ",".join([
            "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG",
            "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP"
        ])

        res = epidb.add_annotation(
            "Cpg Islands", "hg19", "CpG islands are associated ...", file_data,
            cpg_island, {
                "url":
                "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema"
            }, self.admin_key)
        self.assertSuccess(res)

        res, qid = epidb.select_annotations("Cpg Islands", "hg19", None, None,
                                            None, self.admin_key)
        self.assertSuccess(res, qid)
        status, req = epidb.coverage(qid, "HG19", self.admin_key)
        coverage = self.get_regions_request(req)
        self.assertEqual(
            coverage, {
                'coverages': {
                    'chr8_gl000197_random': {
                        'total': 3140,
                        'coverage': 8.4465,
                        'size': 37175
                    },
                    'chrUn_gl000229': {
                        'total': 1962,
                        'coverage': 9.8529,
                        'size': 19913
                    },
                    'chr6_apd_hap1': {
                        'total': 39175,
                        'coverage': 0.8475,
                        'size': 4622290
                    },
                    'chrUn_gl000223': {
                        'total': 2949,
                        'coverage': 1.6342,
                        'size': 180455
                    },
                    'chrUn_gl000236': {
                        'total': 1060,
                        'coverage': 2.5278,
                        'size': 41934
                    },
                    'chr13': {
                        'total': 453125,
                        'coverage': 0.3934,
                        'size': 115169878
                    },
                    'chr12': {
                        'total': 851919,
                        'coverage': 0.6365,
                        'size': 133851895
                    },
                    'chr11': {
                        'total': 1036273,
                        'coverage': 0.7676,
                        'size': 135006516
                    },
                    'chr10': {
                        'total': 966963,
                        'coverage': 0.7134,
                        'size': 135534747
                    },
                    'chr17': {
                        'total': 1274581,
                        'coverage': 1.5698,
                        'size': 81195210
                    },
                    'chr16': {
                        'total': 1081705,
                        'coverage': 1.1972,
                        'size': 90354753
                    },
                    'chr15': {
                        'total': 665790,
                        'coverage': 0.6494,
                        'size': 102531392
                    },
                    'chr14': {
                        'total': 622989,
                        'coverage': 0.5803,
                        'size': 107349540
                    },
                    'chr19': {
                        'total': 1624580,
                        'coverage': 2.7475,
                        'size': 59128983
                    },
                    'chr18': {
                        'total': 439689,
                        'coverage': 0.5631,
                        'size': 78077248
                    },
                    'chrUn_gl000228': {
                        'total': 49978,
                        'coverage': 38.7066,
                        'size': 129120
                    },
                    'chrUn_gl000243': {
                        'total': 296,
                        'coverage': 0.683,
                        'size': 43341
                    },
                    'chr9_gl000200_random': {
                        'total': 223,
                        'coverage': 0.1192,
                        'size': 187035
                    },
                    'chr6_mann_hap4': {
                        'total': 74514,
                        'coverage': 1.5911,
                        'size': 4683263
                    },
                    'chrUn_gl000237': {
                        'total': 312,
                        'coverage': 0.6802,
                        'size': 45867
                    },
                    'chrUn_gl000213': {
                        'total': 4465,
                        'coverage': 2.7186,
                        'size': 164239
                    },
                    'chrUn_gl000235': {
                        'total': 406,
                        'coverage': 1.1777,
                        'size': 34474
                    },
                    'chrUn_gl000211': {
                        'total': 1413,
                        'coverage': 0.8483,
                        'size': 166566
                    },
                    'chr17_gl000204_random': {
                        'total': 2683,
                        'coverage': 3.2997,
                        'size': 81310
                    },
                    'chrUn_gl000212': {
                        'total': 4931,
                        'coverage': 2.6389,
                        'size': 186858
                    },
                    'chrUn_gl000215': {
                        'total': 5660,
                        'coverage': 3.2803,
                        'size': 172545
                    },
                    'chrUn_gl000214': {
                        'total': 636,
                        'coverage': 0.4618,
                        'size': 137718
                    },
                    'chrUn_gl000217': {
                        'total': 3354,
                        'coverage': 1.9483,
                        'size': 172149
                    },
                    'chrUn_gl000216': {
                        'total': 1341,
                        'coverage': 0.7783,
                        'size': 172294
                    },
                    'chr6_dbb_hap3': {
                        'total': 83010,
                        'coverage': 1.8005,
                        'size': 4610396
                    },
                    'chrUn_gl000218': {
                        'total': 2063,
                        'coverage': 1.2802,
                        'size': 161147
                    },
                    'chr6_cox_hap2': {
                        'total': 92751,
                        'coverage': 1.9342,
                        'size': 4795371
                    },
                    'chrUn_gl000219': {
                        'total': 1778,
                        'coverage': 0.9922,
                        'size': 179198
                    },
                    'chr7': {
                        'total': 1147864,
                        'coverage': 0.7213,
                        'size': 159138663
                    },
                    'chr1_gl000191_random': {
                        'total': 1570,
                        'coverage': 1.4751,
                        'size': 106433
                    },
                    'chr4_ctg9_hap1': {
                        'total': 617,
                        'coverage': 0.1045,
                        'size': 590426
                    },
                    'chrUn_gl000222': {
                        'total': 4795,
                        'coverage': 2.5661,
                        'size': 186861
                    },
                    'chr17_ctg5_hap1': {
                        'total': 30127,
                        'coverage': 1.7924,
                        'size': 1680828
                    },
                    'chr11_gl000202_random': {
                        'total': 257,
                        'coverage': 0.6408,
                        'size': 40103
                    },
                    'chr6_qbl_hap6': {
                        'total': 90147,
                        'coverage': 1.9546,
                        'size': 4611984
                    },
                    'chr22': {
                        'total': 562123,
                        'coverage': 1.0957,
                        'size': 51304566
                    },
                    'chrY': {
                        'total': 115810,
                        'coverage': 0.1951,
                        'size': 59373566
                    },
                    'chr20': {
                        'total': 612174,
                        'coverage': 0.9713,
                        'size': 63025520
                    },
                    'chr21': {
                        'total': 268220,
                        'coverage': 0.5573,
                        'size': 48129895
                    },
                    'chr6_mcf_hap5': {
                        'total': 76009,
                        'coverage': 1.5726,
                        'size': 4833398
                    },
                    'chr17_gl000205_random': {
                        'total': 301,
                        'coverage': 0.1724,
                        'size': 174588
                    },
                    'chrX': {
                        'total': 732552,
                        'coverage': 0.4718,
                        'size': 155270560
                    },
                    'chr2': {
                        'total': 1379397,
                        'coverage': 0.5672,
                        'size': 243199373
                    },
                    'chr4_gl000193_random': {
                        'total': 602,
                        'coverage': 0.3172,
                        'size': 189789
                    },
                    'chr6': {
                        'total': 942464,
                        'coverage': 0.5508,
                        'size': 171115067
                    },
                    'chr5': {
                        'total': 966173,
                        'coverage': 0.534,
                        'size': 180915260
                    },
                    'chr4': {
                        'total': 837951,
                        'coverage': 0.4384,
                        'size': 191154276
                    },
                    'chr3': {
                        'total': 882783,
                        'coverage': 0.4458,
                        'size': 198022430
                    },
                    'chr1': {
                        'total': 1881629,
                        'coverage': 0.7549,
                        'size': 249250621
                    },
                    'chr1_gl000192_random': {
                        'total': 2945,
                        'coverage': 0.5379,
                        'size': 547496
                    },
                    'chr9_gl000199_random': {
                        'total': 246,
                        'coverage': 0.1448,
                        'size': 169874
                    },
                    'chrUn_gl000224': {
                        'total': 287,
                        'coverage': 0.1597,
                        'size': 179693
                    },
                    'chr4_gl000194_random': {
                        'total': 1920,
                        'coverage': 1.0028,
                        'size': 191469
                    },
                    'chr9_gl000201_random': {
                        'total': 1834,
                        'coverage': 5.0736,
                        'size': 36148
                    },
                    'chrUn_gl000220': {
                        'total': 17252,
                        'coverage': 10.6624,
                        'size': 161802
                    },
                    'chrUn_gl000221': {
                        'total': 303,
                        'coverage': 0.195,
                        'size': 155397
                    },
                    'chr9': {
                        'total': 941315,
                        'coverage': 0.6666,
                        'size': 141213431
                    },
                    'chr8': {
                        'total': 864319,
                        'coverage': 0.5905,
                        'size': 146364022
                    },
                    'chrUn_gl000225': {
                        'total': 9599,
                        'coverage': 4.5456,
                        'size': 211173
                    },
                    'chr6_ssto_hap7': {
                        'total': 70928,
                        'coverage': 1.4391,
                        'size': 4928567
                    },
                    'chrUn_gl000242': {
                        'total': 257,
                        'coverage': 0.5905,
                        'size': 43523
                    },
                    'chrUn_gl000231': {
                        'total': 1240,
                        'coverage': 4.5279,
                        'size': 27386
                    },
                    'chrUn_gl000240': {
                        'total': 206,
                        'coverage': 0.4913,
                        'size': 41933
                    },
                    'chrUn_gl000241': {
                        'total': 812,
                        'coverage': 1.9264,
                        'size': 42152
                    }
                }
            })

        self.insert_experiment(epidb, "hg19_big_1")

        res, qid = epidb.select_experiments("hg19_big_1", None, None, None,
                                            self.admin_key)
        self.assertSuccess(res, qid)
        status, req = epidb.coverage(qid, "hg19", self.admin_key)
        coverage = self.get_regions_request(req)
        self.assertEqual(
            coverage, {
                'coverages': {
                    'chrX': {
                        'total': 1483495,
                        'coverage': 0.9554,
                        'size': 155270560
                    },
                    'chr13': {
                        'total': 1132457,
                        'coverage': 0.9833,
                        'size': 115169878
                    },
                    'chr12': {
                        'total': 2964677,
                        'coverage': 2.2149,
                        'size': 133851895
                    },
                    'chr11': {
                        'total': 2899893,
                        'coverage': 2.148,
                        'size': 135006516
                    },
                    'chr10': {
                        'total': 2420026,
                        'coverage': 1.7855,
                        'size': 135534747
                    },
                    'chr17': {
                        'total': 3111151,
                        'coverage': 3.8317,
                        'size': 81195210
                    },
                    'chr16': {
                        'total': 2134123,
                        'coverage': 2.3619,
                        'size': 90354753
                    },
                    'chr15': {
                        'total': 1820040,
                        'coverage': 1.7751,
                        'size': 102531392
                    },
                    'chr14': {
                        'total': 1692055,
                        'coverage': 1.5762,
                        'size': 107349540
                    },
                    'chr19': {
                        'total': 3237248,
                        'coverage': 5.4749,
                        'size': 59128983
                    },
                    'chr18': {
                        'total': 1012202,
                        'coverage': 1.2964,
                        'size': 78077248
                    },
                    'chr22': {
                        'total': 1204818,
                        'coverage': 2.3484,
                        'size': 51304566
                    },
                    'chr20': {
                        'total': 1436177,
                        'coverage': 2.2787,
                        'size': 63025520
                    },
                    'chr21': {
                        'total': 589069,
                        'coverage': 1.2239,
                        'size': 48129895
                    },
                    'chr7': {
                        'total': 2623790,
                        'coverage': 1.6487,
                        'size': 159138663
                    },
                    'chr6': {
                        'total': 3309649,
                        'coverage': 1.9342,
                        'size': 171115067
                    },
                    'chr5': {
                        'total': 2737174,
                        'coverage': 1.513,
                        'size': 180915260
                    },
                    'chr4': {
                        'total': 2204447,
                        'coverage': 1.1532,
                        'size': 191154276
                    },
                    'chr3': {
                        'total': 3096812,
                        'coverage': 1.5639,
                        'size': 198022430
                    },
                    'chr2': {
                        'total': 3900776,
                        'coverage': 1.6039,
                        'size': 243199373
                    },
                    'chr1': {
                        'total': 5292444,
                        'coverage': 2.1233,
                        'size': 249250621
                    },
                    'chr9': {
                        'total': 2336737,
                        'coverage': 1.6548,
                        'size': 141213431
                    },
                    'chr8': {
                        'total': 2050838,
                        'coverage': 1.4012,
                        'size': 146364022
                    }
                }
            })
예제 #19
0
    def test_cancel_aggregation(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        sample_id = self.sample_ids[0]

        self.insert_experiment(epidb, "hg19_big_2", sample_id)

        cpg_island = ",".join([
            "CHROMOSOME", "START", "END", "NAME", "LENGTH", "NUM_CPG",
            "NUM_GC", "PER_CPG", "PER_CG", "OBS_EXP"
        ])

        with open("data/cpgIslandExtFull.txt", 'r') as f:
            file_data = f.read()
            (res, a_1) = epidb.add_annotation("Cpg Islands", "hg19",
                                              "Complete CpG islands",
                                              file_data, cpg_island, None,
                                              self.admin_key)
            self.assertSuccess(res, a_1)
            res, q_cgi = epidb.select_annotations("Cpg Islands", "hg19", None,
                                                  None, None, self.admin_key)
            self.assertSuccess(res, q_cgi)

        res, qid_2 = epidb.tiling_regions(1000000, "hg19", None,
                                          self.admin_key)
        self.assertSuccess(res, qid_2)
        res, req_count = epidb.count_regions(qid_2, self.admin_key)
        self.assertSuccess(res, req_count)
        count = self.count_request(req_count)
        self.assertEquals(count, 3118)

        res, qid_3 = epidb.aggregate(q_cgi, qid_2, "@LENGTH", self.admin_key)
        self.assertSuccess(res, qid_3)

        res, qid_4 = epidb.filter_regions(qid_3, "@AGG.COUNT", ">=", "100",
                                          "number", self.admin_key)
        (res, req_regions) = epidb.get_regions(
            qid_4,
            "CHROMOSOME,START,END,@AGG.MIN,@AGG.MAX,@AGG.MEDIAN,@AGG.MEAN,@AGG.VAR,@AGG.SD,@AGG.COUNT",
            self.admin_key)
        self.assertSuccess(res, req_regions)

        (s, user_two) = epidb.add_user("ANOTHER NAME", "ANOTHER EMAIL",
                                       "INSTITUTE", self.admin_key)
        s, tmp_user = epidb.modify_user_admin(user_two[0], "permission_level",
                                              "GET_DATA", self.admin_key)
        s, msg = epidb.cancel_request(req_regions, user_two[1])
        self.assertEquals(msg, "130003:The request ID 'r2' is invalid.")
        s, msg = epidb.cancel_request(req_count, user_two[1])
        self.assertEquals(msg, "130003:The request ID 'r1' is invalid.")

        (s, m) = epidb.cancel_request(req_regions, self.admin_key)
        self.assertSuccess(s, m)
        (s, m) = epidb.cancel_request(req_count, self.admin_key)
        self.assertSuccess(s, m)

        (s, user_ass) = epidb.add_user("ASS NAME", "ASS EMAIL", "INSTITUTE",
                                       self.admin_key)
        s, tmp_user = epidb.modify_user_admin(user_ass[0], "permission_level",
                                              "GET_DATA", self.admin_key)

        res, q_cgi_other = epidb.select_annotations("Cpg Islands", "hg19",
                                                    None, None, None,
                                                    user_two[1])
        self.assertSuccess(res, q_cgi)
        (res, req_other) = epidb.get_regions(q_cgi_other,
                                             "CHROMOSOME,START,END",
                                             user_two[1])
        self.assertSuccess(res, req_regions)

        (s, msg) = epidb.cancel_request(req_other, user_ass[1])
        self.assertEquals(msg, "130003:The request ID 'r3' is invalid.")
        (s, m) = epidb.cancel_request(req_other, self.admin_key)
        self.assertSuccess(s, m)
        (s, ss) = epidb.info(req_other, self.admin_key)
        self.assertEquals(ss[0]['state'], 'canceled')

        (s, ss_count) = epidb.info(req_count, self.admin_key)
        self.assertEquals(ss_count[0]["state"], "removed")
        (s, ss_regions) = epidb.info(req_regions, self.admin_key)
        self.assertEquals(ss_regions[0]["state"], "canceled")

        s, e1 = epidb.get_request_data(req_count, self.admin_key)
        self.assertEqual(
            e1, "Request ID r1 was not finished. Please, check its status.")
        s, e2 = epidb.get_request_data(req_regions, self.admin_key)
        self.assertEqual(
            e2, "Request ID r2 was not finished. Please, check its status.")
예제 #20
0
    def test_overlap_simple(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        # Test the intersect command
        data_one = "chr1\t3049996\t3050022\nchr1\t3050022\t3050040\nchr1\t3050040\t3050051\nchr1\t3050051\t3050126"
        region = "chr1\t3050022\t3050100"

        (s, q1) = epidb.input_regions("hg19", data_one, self.admin_key)
        self.assertSuccess(s, q1)

        (s, q_input) = epidb.input_regions("hg19", region, self.admin_key)
        self.assertSuccess(s, q_input)

        (s, q3) = epidb.intersection(q1, q_input, self.admin_key)
        self.assertSuccess(s, q3)

        (s, req) = epidb.get_regions(q3, "CHROMOSOME,START,END",
                                     self.admin_key)
        self.assertSuccess(s, req)
        regions = self.get_regions_request(req)
        self.assertEqual(
            regions,
            'chr1\t3050022\t3050040\nchr1\t3050040\t3050051\nchr1\t3050051\t3050126'
        )

        # Test the select annotation
        sample_id = self.sample_ids[0]
        res = epidb.add_annotation("exp1", "hg19", "desc1", data_one,
                                   "CHROMOSOME,START,END", None,
                                   self.admin_key)
        self.assertSuccess(res)
        (s, q1) = epidb.select_annotations("exp1", "hg19", "chr1", 3050022,
                                           3050100, self.admin_key)
        self.assertSuccess(s, q1)
        (s, req) = epidb.get_regions(q1, "CHROMOSOME,START,END",
                                     self.admin_key)
        self.assertSuccess(s, req)
        regions = self.get_regions_request(req)
        self.assertEqual(
            regions,
            'chr1\t3050022\t3050040\nchr1\t3050040\t3050051\nchr1\t3050051\t3050126'
        )

        # Test the select experiment
        sample_id = self.sample_ids[0]
        res = epidb.add_experiment("exp1", "hg19", "Methylation", sample_id,
                                   "tech1", "ENCODE", "desc1", data_one,
                                   "CHROMOSOME,START,END", None,
                                   self.admin_key)
        self.assertSuccess(res)

        (s, q1) = epidb.select_experiments("exp1", "chr1", 3050022, 3050100,
                                           self.admin_key)
        self.assertSuccess(s, q1)
        (s, req) = epidb.get_regions(q1, "CHROMOSOME,START,END",
                                     self.admin_key)
        self.assertSuccess(s, req)
        regions = self.get_regions_request(req)
        self.assertEqual(
            regions,
            'chr1\t3050022\t3050040\nchr1\t3050040\t3050051\nchr1\t3050051\t3050126'
        )

        (s, q1) = epidb.select_experiments("exp1", "chr1", None, None,
                                           self.admin_key)
        self.assertSuccess(s, q1)
        (s, q2) = epidb.aggregate(q1, q_input, "START", self.admin_key)
        self.assertSuccess(s, q2)
        (s, req) = epidb.get_regions(q2, "@AGG.MIN,@AGG.MAX,@AGG.COUNT",
                                     self.admin_key)
        self.assertSuccess(s, req)
        regions = self.get_regions_request(req)
        self.assertEqual(regions, '3050022.0000\t3050051.0000\t3')
예제 #21
0
    def test_remove_annotation(self):
        epidb = DeepBlueClient(address="localhost", port=31415)
        self.init_base(epidb)

        file_data = None
        with open("data/cpgIslandExt.txt", 'r') as f:
            file_data = f.read()

        res = epidb.add_annotation(
            "Cpg Islands", "hg19", "CpG islands are associated ...", file_data,
            "", {
                "url":
                "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema"
            }, self.admin_key)
        self.assertSuccess(res)

        annotation_id = res[1]
        res, user = epidb.add_user("user1", "*****@*****.**", "test",
                                   self.admin_key)
        self.assertSuccess(res, user)
        res = epidb.remove(annotation_id, user[1])
        self.assertFailure(res)

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

        res = epidb.add_annotation(
            "Cpg Islands", "hg19", "CpG islands are associated ...", file_data,
            "", {
                "url":
                "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema"
            }, self.admin_key)
        self.assertSuccess(res)
        annotation_id = res[1]

        res, genomes = epidb.search("hg19", "genomes", self.admin_key)
        res, anns = epidb.remove(genomes[0][0], self.admin_key)
        self.assertFailure(res, anns)
        self.assertEqual(anns, "This genome is being used by annotations.")

        res = epidb.add_annotation(
            "Cpg Islands", "hg19", "CpG islands are associated ...", file_data,
            "", {
                "url":
                "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema"
            }, self.admin_key)
        self.assertFailure(res)

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

        res = epidb.add_annotation(
            "Cpg Islands", "hg19", "CpG islands are associated ...", file_data,
            "", {
                "url":
                "genome.ucsc.edu/cgi-bin/hgTables?db=hg19&hgta_group=regulation&hgta_track=cpgIslandExt&hgta_table=cpgIslandExt&hgta_doSchema=describe+table+schema"
            }, self.admin_key)
        self.assertSuccess(res)

        res = epidb.remove(res[1], self.admin_key)
        self.assertSuccess(res)

        res, genomes = epidb.list_genomes(self.admin_key)

        for genome in genomes:
            res = epidb.remove(genome[0], self.admin_key)
            self.assertSuccess(res)

        res, anns = epidb.list_annotations("hg18", self.admin_key)
        self.assertSuccess(res, anns)
        self.assertEqual(len(anns), 0)

        res, anns = epidb.list_annotations("hg19", self.admin_key)
        self.assertSuccess(res, anns)
        self.assertEqual(len(anns), 0)