Esempio n. 1
0
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
Esempio n. 2
0
        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)
Esempio n. 3
0
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)
Esempio n. 4
0
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