INNER CODE UNIT · Python

extract_repeats

BirolLab/straglr · extract_repeats.py:27

def extract_repeats(bam, support, flank_size=10):
    seqs = {}
    for locus in support:
        seqs[locus] = []
        chrom, start, end = re.split('[:-]', locus)
        for aln in bam.fetch(chrom, int(start), int(end)):
            if aln.query_name in support[locus] and not aln.query_name in seqs:
                rlen = aln.infer_read_length()
                if support[locus][aln.query_name][2] == '+':
                    start, end = support[locus][aln.query_name][0], support[locus][aln.query_name][0] + support[locus][aln.query_name][1]
                else:
                    start = rlen - (support[locus][aln.query_name][0] + support[locus][aln.query_name][1])
                    end = start + support[locus][aln.query_name][1]

                try:
                    repeat_seq = aln.query_sequence[start:end].lower()
                    left = max(0, start - flank_size), start
                    right = end, min(end + flank_size, rlen)

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…