Example #1
0
    def test_add_tag_values_raisesNotImplementedError(self):
        class FakeTag(common_tags.AbstractJacquardTag):
            def __init__(self):
                pass

        tag = FakeTag()
        self.assertRaises(NotImplementedError, tag.add_tag_values,
                          VcfRecord("1", "42", "A", "C"))
Example #2
0
    def test_empty_record(self):
        sample_names = ["SampleA"]
        base = VcfRecord.parse_record(
            self.entab("chr2|1|ID|A|C|QUAL|FILTER|INFO|F|S\n"), sample_names)

        empty_record = base.get_empty_record()

        expected_record = VcfRecord(chrom="chr2", pos="1", ref="A", alt="C")
        self.assertEquals(expected_record.text(), empty_record.text())
Example #3
0
 def test_asTextExpandsEmptyTrailingFormatField(self):
     sampleA = OrderedDict([('a', '1'), ('b', '2')])
     sampleB = OrderedDict([('a', '10')])
     sample_tag_values = OrderedDict([("SampleA", sampleA),
                                      ("SampleB", sampleB)])
     record = VcfRecord("CHROM", "POS", "REF", "ALT", "ID", "QUAL",
                        "FILTER", "INFO", sample_tag_values)
     expected = self.entab(
         "CHROM|POS|ID|REF|ALT|QUAL|FILTER|INFO|a:b|1:2|10:.\n")
     self.assertEquals(expected, record.text())
Example #4
0
 def test_asTextWhenEmptyFormatField(self):
     sampleA = OrderedDict({})
     sampleB = OrderedDict({})
     sample_tag_values = OrderedDict({
         "SampleA": sampleA,
         "SampleB": sampleB
     })
     record = VcfRecord("CHROM", "POS", "REF", "ALT", "ID", "QUAL",
                        "FILTER", "INFO", sample_tag_values)
     expected = self.entab("CHROM|POS|ID|REF|ALT|QUAL|FILTER|INFO|.|.|.\n")
     self.assertEquals(expected, record.text())
Example #5
0
    def test_sample_field_whenInconsistentTags(self):
        # FYI this should never happen in the wild, but I wanted to test the exception formatting.
        sampleA = OrderedDict([('a', '1'), ('b', '2')])
        sampleB = OrderedDict([('a', '10')])
        sample_tag_values = OrderedDict([("SampleA", sampleA),
                                         ("SampleB", sampleB)])
        record = VcfRecord("CHROM", "POS", "REF", "ALT", "ID", "QUAL",
                           "FILTER", "INFO", sample_tag_values)

        self.assertRaisesRegexp(
            ValueError,
            r'CHROM:POS:REF:ALT|sample format tags are not consistent: requested tags \[a\] but sample has has tags \[a=1, b=2\] leaving behind \[b\]',
            record._sample_field, ['a'], 'SampleA')
Example #6
0
 def test_text(self):
     sampleA = OrderedDict(
         sorted({
             "F1": "SA.1",
             "F2": "SA.2",
             "F3": "SA.3"
         }.items()))
     sampleB = OrderedDict(
         sorted({
             "F1": "SB.1",
             "F2": "SB.2",
             "F3": "SB.3"
         }.items()))
     sample_tag_values = OrderedDict(
         sorted({
             "SampleA": sampleA,
             "SampleB": sampleB
         }.items()))
     record = VcfRecord("CHROM", "POS", "REF", "ALT", "ID", "QUAL",
                        "FILTER", "INFO", sample_tag_values)
     expected = self.entab(
         "CHROM|POS|ID|REF|ALT|QUAL|FILTER|INFO|F1:F2:F3|SA.1:SA.2:SA.3|SB.1:SB.2:SB.3\n"
     )
     self.assertEquals(expected, record.text())
Example #7
0
 def test_add_or_replace_filter_filtersOnlyAppendsUnique(self):
     record = VcfRecord("chr1", "42", "XYZ", "C", vcf_filter="indelError")
     record.add_or_replace_filter("JQ_EXCLUDE")
     record.add_or_replace_filter("JQ_EXCLUDE")
     self.assertEquals("indelError;JQ_EXCLUDE", record.filter)
Example #8
0
 def test_add_or_replace_filter_duplicateFilterNotAdded(self):
     record = VcfRecord("chr1", "42", "XYZ", "C", vcf_filter="JQ_EXCLUDE")
     record.add_or_replace_filter("JQ_EXCLUDE")
     self.assertEquals("JQ_EXCLUDE", record.filter)
Example #9
0
 def test_add_or_replace_filter_filterReplacesEmptyFilter(self):
     record = VcfRecord("chr1", "42", "X", "C", vcf_filter="")
     record.add_or_replace_filter("JQ_EXCLUDE")
     self.assertEquals("JQ_EXCLUDE", record.filter)
Example #10
0
 def test_join_info_fields_orderedCorrectly(self):
     vcf_record = VcfRecord("chr1", "2", "A", "G", info="FOO;BAR;BAZ")
     vcf_record._join_info_fields()
     self.assertEquals("FOO;BAR;BAZ", vcf_record.info)
Example #11
0
 def test_get_info_dict_null(self):
     vcf_record = VcfRecord("chr1", "42", "A", "C", info=".")
     self.assertEquals({}, vcf_record.info_dict)