def _read_bam(bam_fn, precursors):
    """
    read bam file and perform realignment of hits
    """
    mode = "r" if bam_fn.endswith("sam") else "rb"
    handle = pysam.Samfile(bam_fn, mode)
    reads = defaultdict(realign)
    for line in handle:
        chrom = handle.getrname(line.reference_id)
        # print("%s %s %s %s" % (line.query_name, line.reference_start, line.query_sequence, chrom))
        query_name = line.query_name
        if query_name not in reads:
            reads[query_name].sequence = line.query_sequence
        iso = isomir()
        iso.align = line
        iso.start = line.reference_start
        iso.subs, iso.add = _realign(reads[query_name].sequence, precursors[chrom], line.reference_start)
        reads[query_name].set_precursor(chrom, iso)

    reads = _clean_hits(reads)
    return reads
def _read_bam ( bam_fn , precursors ) : mode = "r" if bam_fn . endswith ( "sam" ) else "rb" handle = pysam . Samfile ( bam_fn , mode ) reads = defaultdict ( realign ) for line in handle : chrom = handle . getrname ( line . reference_id ) query_name = line . query_name if query_name not in reads : reads [ query_name ] . sequence = line . query_sequence iso = isomir ( ) iso . align = line iso . start = line . reference_start iso . subs , iso . add = _realign ( reads [ query_name ] . sequence , precursors [ chrom ] , line . reference_start ) reads [ query_name ] . set_precursor ( chrom , iso ) reads = _clean_hits ( reads ) return reads
read bam file and perform realignment of hits