INNER CODE UNIT · Python
filter_bam
nf-core/eager · bin/filter_bam_fragment_length.py:55
def filter_bam(infile, outfile, fraglen, allreads):
"""Write bam to file
Args:
infile (stream): pysam stream
outfile (str): Path to output bam
fraglen(int): Minimum fragment length to keep
allreads(bool): Apply on all reads, not only mapped
"""
bamfile = pysam.AlignmentFile(infile, "rb")
bamwrite = pysam.AlignmentFile(outfile + ".filtered.bam", "wb", template=bamfile)
for read in bamfile.fetch(until_eof=True):
if allreads:
if read.query_length >= fraglen:
bamwrite.write(read)
else:
if read.is_unmapped == False and read.query_length >= fraglen: