Mercurial > repos > artbio > mapping_quality_stats
comparison mapping_quality_stats.py @ 0:f00479673d47 draft
planemo upload for repository https://github.com/ARTbio/tools-artbio/tree/master/tools/mapping_quality_stats commit e4b37874b820a2ac48732667128a08e5755b7c4b
| author | artbio |
|---|---|
| date | Wed, 15 Jun 2022 10:43:07 +0000 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| -1:000000000000 | 0:f00479673d47 |
|---|---|
| 1 import argparse | |
| 2 from collections import defaultdict | |
| 3 | |
| 4 import pysam | |
| 5 | |
| 6 | |
| 7 def Parser(): | |
| 8 the_parser = argparse.ArgumentParser() | |
| 9 the_parser.add_argument('-bam', '--bam', dest='bam', required=True, | |
| 10 help='input BAM file') | |
| 11 the_parser.add_argument('-o', '--output', dest='distribution', | |
| 12 required=True, | |
| 13 help='tabular output for mapq distribution') | |
| 14 args = the_parser.parse_args() | |
| 15 return args | |
| 16 | |
| 17 | |
| 18 def collect_mapq(bam, out): | |
| 19 samfile = pysam.AlignmentFile(bam, "rb") | |
| 20 mapq_dict = defaultdict(int) | |
| 21 for read in samfile: | |
| 22 mapq_dict[read.mapping_quality] += 1 | |
| 23 with open(out, 'w') as out: | |
| 24 out.write('mapq\tnumber_of_alignments\n') | |
| 25 for quality in sorted(mapq_dict): | |
| 26 out.write(f"{quality}\t{mapq_dict[quality]}\n") | |
| 27 return mapq_dict | |
| 28 | |
| 29 | |
| 30 def main(bam, out): | |
| 31 collect_mapq(bam, out) | |
| 32 | |
| 33 | |
| 34 if __name__ == "__main__": | |
| 35 args = Parser() | |
| 36 main(args.bam, args.distribution) |
