def MatchingBases(md, cigar, FromBeginning) :
if not FromBeginning :
md = md[::-1]
cigar = cigar[::-1]
i = 0 # md index
number = ''
mlen = len(md)
while i < mlen and md[i] in '0123456789' :
number += md[i]
i += 1
if not number : number = '0'
if FromBeginning : number = int(number)
else : number = int(number[::-1])
# Go through cigar to find possible inserts
clen = 0
for cigartype, cigarlength in cigar :
if cigartype in [1,3] :
break
elif cigartype == 5 :
pass
else :
clen += cigarlength
if number < clen :
number += AddClips(cigar, True) # cigar has been reversed here!
return min(number, clen)
# Takes flag as input and returns whether alignment is primary (True) or not (False).
# If additional input parameter is set to True, then also check whether read is properly
# paired (definition of properly paired depends on mapper).
评论列表
文章目录