示例#1
0
def test_merge():
    merged_pileup_elements = []
    """ :type: list[PileupElement] """
    pileups = []
    """ :type: list[Pileup] """
    reads = [my_read, my_read2, my_read3, my_read4]

    for k in range(0, 4):
        pile = Pileup.from_reads(reads, k)
        pileups.append(pile)
        merged_pileup_elements.append(pile.merge(max_qual=45, fraction_agree=0.75))

    # test that ties gives N
    assert merged_pileup_elements[0].base == 'N'  # tie, 2xA 2xG
    # test that majority vote works
    assert merged_pileup_elements[1].base == 'G'  # G wins from 3xG 1xA

    # test all 4 bases that were merged
    assert "".join([pe.base for pe in merged_pileup_elements]) == 'NGCT'
    # test that qualities were properly merged
    assert [pe.qual for pe in merged_pileup_elements] == [2, 45, 45, 45]
    # test that the size of each pileup works
    assert [len(p.bases()) for p in pileups] == [4, 4, 4, 3]

    assert ReadMerger.key(a) == ReadMerger.key(b)
    assert Pileup.from_reads([a, b], 0).merge(45, .75).base == 'N'
    assert Pileup.from_reads([a, b], 0).merge(45, .75).qual == 2
    assert Pileup.from_reads([a, b], 1).merge(45, .75).base == 'G'

    tmpfilename = tempfile.mkstemp('.bam')[1]
    outfile = pysam.AlignmentFile(tmpfilename, "wb", header=header)
    readmerger = ReadMerger([a, b], outfile, fraction_agree=0.75, max_qual=45, reads_between_logs=1)
    exitcode = readmerger.do_work()
    assert exitcode == 0
    metrics = readmerger.metrics.dict()
    assert 'L1' in metrics
    os.remove(tmpfilename)
示例#2
0
def test_key():
    expected_key = "0_32_250_True_L1"
    key = ReadMerger.key(my_read)
    assert key == expected_key