def parse(bamfile, minqual): bamhandle = AlignmentFile(bamfile, 'rb') positions = Positions() for read in bamhandle: if isclip(read) is False or read.mapping_quality < minqual: continue clip = ClipRead(read) pos = positions.getposition(bamhandle.get_reference_name(read.reference_id), \ clip.getclippos()) pos.addclipread(clip) bamhandle.close() return positions
if min_idy > 0.: assert r.has_tag('NM') if r.has_tag('NM'): #idy=identity(r.reference_length, r.get_tag('NM')) idy = identity(r.reference_length + insertion_cnt(r.cigartuples), r.get_tag('NM')) #idy=identity(r.query_alignment_length, r.get_tag('NM')) else: idy = 1. if idy < min_idy: continue if args.targets: if alignment.get_reference_name(r.reference_id) not in targets: continue init_length = r.infer_read_length() if not check_query_cov(r, init_length, alignment.lengths[r.reference_id]): continue if r.is_reverse: clipped_suffix, _ = hard_clipped(r.cigartuples) query_alignment_start = init_length - r.query_alignment_end - clipped_suffix query_alignment_end = init_length - r.query_alignment_start - clipped_suffix reference_start_str = "(%d" % r.reference_end reference_end_str = "%d]" % r.reference_start else: clipped_prefix, _ = hard_clipped(r.cigartuples) query_alignment_start = r.query_alignment_start + clipped_prefix