def merge_reads(bams, merged_output_dir):
"""
Merge bam files, can take odd numbers of reads.
"""
try:
os.mkdir(merged_output_dir)
except OSError:
pass
bam_list = get_bam_pairs(bams)
for sample_id, bams in bam_list.items():
header = get_header(bams[0])
bam_out = os.path.join(merged_output_dir, os.path.basename(sample_id)) + '.bam'
out = pysam.AlignmentFile(bam_out, 'wb', header=header)
for bam in bams:
sam = pysam.AlignmentFile(bam, 'rb')
for read in sam:
out.write(read)
out.close()
pysam.sort(bam_out, 'tmp')
os.rename('tmp.bam',bam_out)
pysam.index(bam_out)
评论列表
文章目录