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)
def test_key(): expected_key = "0_32_250_True_L1" key = ReadMerger.key(my_read) assert key == expected_key