def collapseSAM(self, outfile=None,collevel=10):
'''At most collevel[default=10] identical reads will be retained in outputting SAM file
The original SAM file must be sorted before hand. if not, using linux command like "sort -k3,3 -k4,4n myfile.sam >myfile.sorted.sam" '''
if outfile is None:
outfile = self.fileName + ".collapsed.sam"
print >>sys.stderr, "Writing collapsed SAM file to\"",outfile,"\"... "
FO=open(outfile,'w')
flag=""
for line in self.f:
if line[0] == '@':continue #skip head lines
if ParseSAM._reExpr2.match(line):continue #skip blank lines
field=line.rstrip('\n').split()
if (string.atoi(field[1]) & 0x0004)!=0: continue #skip unmapped line
id=field[2] + field[3] + field[5]
if (id != flag):
FO.write(line)
flag=id
skipTrigger=0
else:
skipTrigger+=1
if skipTrigger < collevel:
FO.write(line)
else:continue
FO.close()
self.f.seek(0)
评论列表
文章目录