def test_pad_softclip_1(tmpdir): "it should memorize the result" make_bam(tmpdir.strpath, """ r1 + __.*....... r1 - .*.......__ """) o = Namespace(verbos=False, mismatch_limit=-1) sam = AlignmentFile(tmpdir.join("test.bam").strpath) a = pad_softclip(sam) b = pad_softclip(sam) assert a is b
def anno(line): line = line.rstrip().split('\t') chr, pos, _, ref, alt = line[:5] line[-3] += ':UDP' # format line[-2] += ':' # gdna line[-1] += ':' # cfdna for i, sam in enumerate((o.cfdna, o.gdna)): if sam != None: reads = get_reads(o, sam, chr, pos) unique_pairs, unique_single, *_ = aggregate_reads( o, reads, None if o.fast else pad_softclip(sam)) mor, mnr, msr, oor, onr, osr, moa, mna, msa, ooa, ona, osa, _ = count_different_type( o, unique_pairs, unique_single, alt, ref) if o.simple: line[-i - 1] += ','.join( map(str, (moa, mna + msa, ooa, ona + osa))) else: line[-i - 1] += ','.join( map(str, (mor, mnr, msr, oor, onr, osr, moa, mna, msa, ooa, ona, osa))) print(file=fout, sep='\t', *line)
def test_pad_softclip_3(tmpdir): "it should pad softclipped bases" make_bam( tmpdir.strpath, """ 123456789_123 r1 + __.*....... r1 - .*......... r2 - ...*....... r2 + .*.......__ """) o = Namespace(verbos=False, mismatch_limit=-1) sam = AlignmentFile(tmpdir.join("test.bam").strpath) adjusted_pos = pad_softclip(sam) assert adjusted_pos["r1"] == (0, 13) # 0-based position assert adjusted_pos["r2"] == (0, 13)
def test_pad_softclip_2(tmpdir): "it should ignore more than two reads which share the same name" make_bam( tmpdir.strpath, """ r1 + __.*....... r1 - .*.......__ r1 - .*.......__ r2 + .*.......__ r2 - .*.......__ """) o = Namespace(verbos=False, mismatch_limit=-1) sam = AlignmentFile(tmpdir.join("test.bam").strpath) adjusted_pos = pad_softclip(sam) assert sum(1 for startpos, length in adjusted_pos.values() if startpos != -1) == 1