Esempio n. 1
0
def test_writer(header_samples, tmpdir_factory):
    O = vcfpy.OrderedDict
    # open temporary file and setup the Writer with header
    path = tmpdir_factory.mktemp("write_header").join("out.vcf")
    header, _ = header_samples
    # construct record to write out from scratch
    r = record.Record(
        "20",
        100,
        [],
        "C",
        [record.Substitution(record.SNV, "T")],
        None,
        [],
        O(),
        ["GT"],
        [
            record.Call("NA00001", O(GT="0/1")),
            record.Call("NA00002", O(GT="0/0")),
            record.Call("NA00003", O(GT="1/1")),
        ],
    )
    # open writer
    with writer.Writer.from_path(path, header) as w:
        # write out the record
        w.write_record(r)
    # should be closed
    assert w.stream
    assert w.stream.closed
    # compare actual result with expected
    RESULT = path.read()
    LINE = "20\t100\t.\tC\tT\t.\t.\t.\tGT\t0/1\t0/0\t1/1\n"
    EXPECTED = MEDIUM_HEADER + LINE
    assert EXPECTED == RESULT
Esempio n. 2
0
def test_write_record_with_escaping(header_samples, tmpdir_factory):
    O = vcfpy.OrderedDict
    S = record.Substitution
    # open temporary file and setup the Writer with header
    path = tmpdir_factory.mktemp("write_header").join("out.vcf")
    header, _ = header_samples
    w = writer.Writer.from_path(path, header)
    # construct record to write out from scratch
    r = record.Record(
        "20",
        100,
        [],
        "C",
        [record.Substitution(record.SNV, "T")],
        None,
        [],
        O([("ANNO", ["Here,are%some chars", "%25"])]),
        ["GT", "FT"],
        [
            record.Call("NA00001", O(GT="0/1", FT=["%25", "FOO"])),
            record.Call("NA00002", O(GT="0/0", FT=[])),
            record.Call("NA00003", O(GT="1/1", FT=[])),
        ],
    )
    # write out the record, close file to ensure flushing to disk
    w.write_record(r)
    w.close()
    # compare actual result with expected
    RESULT = path.read()
    LINE = ("20\t100\t.\tC\tT\t.\t.\tANNO=Here%2Care%25some chars,"
            "%2525\tGT:FT\t0/1:%2525;FOO\t0/0:.\t1/1:.\n")
    EXPECTED = MEDIUM_HEADER + LINE
    assert EXPECTED == RESULT
Esempio n. 3
0
def test_write_annotated_record(header_samples, tmpdir_factory):
    O = vcfpy.OrderedDict
    S = record.Substitution
    # open temporary file and setup the Writer with header
    path = tmpdir_factory.mktemp("write_annotated_record").join("out.vcf")
    header, _ = header_samples
    w = writer.Writer.from_path(path, header)
    # construct record to write out from scratch
    r = record.Record(
        "20",
        100,
        ["rs333", "CSN42"],
        "C",
        [
            record.Substitution(record.SNV, "T"),
            record.Substitution(record.SNV, "G")
        ],
        50,
        ["PASS"],
        O([("DP", 93), ("AF", [0.3, 0.2]), ("DB", True)]),
        ["GT", "DP", "GQ", "HQ"],
        [
            record.Call("NA00001", O(GT="0/1", DP=30, GQ=40, HQ=[1, 2])),
            record.Call("NA00002", O(GT="0/2", DP=31, GQ=41, HQ=[3, 4])),
            record.Call("NA00003", O(GT="1/2", DP=32, GQ=42, HQ=[5, 6])),
        ],
    )
    # write out the record, close file to ensure flushing to disk
    w.write_record(r)
    w.close()
    # compare actual result with expected
    RESULT = path.read()
    LINE = "20\t100\trs333;CSN42\tC\tT,G\t50\tPASS\tDP=93;AF=0.3,0.2;DB\tGT:DP:GQ:HQ\t0/1:30:40:1,2\t0/2:31:41:3,4\t1/2:32:42:5,6\n"
    EXPECTED = MEDIUM_HEADER + LINE
    assert EXPECTED == RESULT
Esempio n. 4
0
def test_gt_type_het():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "0|1")]))
    assert call.gt_type == vcfpy.HET
Esempio n. 5
0
def test_gt_bases_0_2():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "0|2")]))
    build_rec([call])
    assert call.gt_bases == ("C", "A")
Esempio n. 6
0
def test_gt_bases_1_1():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "1|1")]))
    build_rec([call])
    assert call.gt_bases == ("T", "T")
Esempio n. 7
0
def test_gt_phase_char_slash():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "0/1")]))
    assert call.gt_phase_char == "/"
Esempio n. 8
0
def test_gt_phase_char_pipe():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "0|1")]))
    assert call.gt_phase_char == "|"
Esempio n. 9
0
def test_is_phased_false():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "0/1")]))
    assert call.is_phased is False
Esempio n. 10
0
def test_is_het_het():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "0|1")]))
    assert call.is_het
Esempio n. 11
0
def test_ploidy_two():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "1/1")]))
    assert call.ploidy == 2
Esempio n. 12
0
def test_gt_type_filtered_no_ft():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "1/1")]))
    assert not call.is_filtered()
Esempio n. 13
0
def test_is_variant_no_call():
    call1 = record.Call("sample", vcfpy.OrderedDict([("GT", ".")]))
    assert not call1.is_variant
    call2 = record.Call("sample", vcfpy.OrderedDict([("GT", "./.")]))
    assert not call2.is_variant
Esempio n. 14
0
def test_is_variant_hom_alt():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "1/1")]))
    assert call.is_variant
Esempio n. 15
0
def test_is_variant_hom_ref():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "0/0")]))
    assert not call.is_variant
Esempio n. 16
0
def test_gt_type_hom_ref():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "0/0")]))
    assert call.gt_type == vcfpy.HOM_REF
Esempio n. 17
0
def test_is_phased_mixed():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "0/1|2")]))
    assert call.is_phased is True
Esempio n. 18
0
def test_gt_type_filtered_pass():
    call = record.Call("sample",
                       vcfpy.OrderedDict([("GT", "1/1"), ("FT", ["PASS"])]))
    assert not call.is_filtered()
Esempio n. 19
0
def test_gt_type_hom_alt():
    call = record.Call("sample", vcfpy.OrderedDict([("GT", "1/1")]))
    assert call.gt_type == vcfpy.HOM_ALT