comparison screen_abricate_report.py @ 1:4f963b583186 draft

"planemo upload for repository https://github.com/public-health-bioinformatics/galaxy_tools/blob/master/tools/screen_abricate_report commit c27095ceaf23aa2c910e0ea866db9ec8d3e7816b"
author public-health-bioinformatics
date Tue, 12 Nov 2019 21:44:45 -0500
parents b2d56a44a872
children 2262e531c50b
comparison
equal deleted inserted replaced
0:b2d56a44a872 1:4f963b583186
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 2
3 from __future__ import print_function 3 from __future__ import print_function
4 4
5 import argparse 5 import argparse
6 import os 6 import csv
7 import re 7 import re
8 import sys 8
9 import csv
10 from pprint import pprint
11 9
12 def parse_screen_file(screen_file): 10 def parse_screen_file(screen_file):
13 screen = [] 11 screen = []
14 with open(screen_file) as f: 12 with open(screen_file) as f:
15 reader = csv.DictReader(f, delimiter="\t", quotechar='"') 13 reader = csv.DictReader(f, delimiter="\t", quotechar='"')
16 for row in reader: 14 for row in reader:
17 screen.append(row) 15 screen.append(row)
18 return screen 16 return screen
19 17
18
20 def get_fieldnames(input_file): 19 def get_fieldnames(input_file):
21 with open(input_file) as f: 20 with open(input_file) as f:
22 reader = csv.DictReader(f, delimiter="\t", quotechar='"') 21 reader = csv.DictReader(f, delimiter="\t", quotechar='"')
23 row = next(reader) 22 row = next(reader)
24 fieldnames = row.keys() 23 fieldnames = row.keys()
25 return fieldnames 24 return fieldnames
26 25
26
27 def main(args): 27 def main(args):
28 screen = parse_screen_file(args.screening_file) 28 screen = parse_screen_file(args.screening_file)
29 abricate_report_fieldnames = get_fieldnames(args.abricate_report)
30 gene_detection_status_fieldnames = ['gene_name', 'detected'] 29 gene_detection_status_fieldnames = ['gene_name', 'detected']
31 with open(args.abricate_report, 'r') as f1, open(args.screened_report, 'w') as f2, open(args.gene_detection_status, 'w') as f3: 30 with open(args.abricate_report, 'r') as f1, \
31 open(args.screened_report, 'w') as f2, \
32 open(args.gene_detection_status, 'w') as f3:
32 abricate_report_reader = csv.DictReader(f1, delimiter="\t", quotechar='"') 33 abricate_report_reader = csv.DictReader(f1, delimiter="\t", quotechar='"')
33 screened_report_writer = csv.DictWriter(f2, delimiter="\t", quotechar='"', fieldnames=abricate_report_reader.fieldnames) 34 screened_report_writer = csv.DictWriter(f2, delimiter="\t", quotechar='"',
34 gene_detection_status_writer = csv.DictWriter(f3, delimiter="\t", quotechar='"', fieldnames=gene_detection_status_fieldnames) 35 fieldnames=abricate_report_reader.fieldnames)
36 gene_detection_status_writer = csv.DictWriter(f3, delimiter="\t", quotechar='"',
37 fieldnames=gene_detection_status_fieldnames)
35 screened_report_writer.writeheader() 38 screened_report_writer.writeheader()
36 gene_detection_status_writer.writeheader() 39 gene_detection_status_writer.writeheader()
37 40
38 for gene in screen: 41 for gene in screen:
39 gene_detection_status = { 42 gene_detection_status = {
43 for abricate_report_row in abricate_report_reader: 46 for abricate_report_row in abricate_report_reader:
44 if re.search(gene['regex'], abricate_report_row['GENE']): 47 if re.search(gene['regex'], abricate_report_row['GENE']):
45 gene_detection_status['detected'] = True 48 gene_detection_status['detected'] = True
46 screened_report_writer.writerow(abricate_report_row) 49 screened_report_writer.writerow(abricate_report_row)
47 gene_detection_status_writer.writerow(gene_detection_status) 50 gene_detection_status_writer.writerow(gene_detection_status)
48 f1.seek(0) # return file pointer to start of abricate report 51 f1.seek(0) # return file pointer to start of abricate report
49 52
50 53
51 if __name__ == '__main__': 54 if __name__ == '__main__':
52 parser = argparse.ArgumentParser() 55 parser = argparse.ArgumentParser()
53 parser.add_argument("abricate_report", help="Input: Abricate report to screen (tsv)") 56 parser.add_argument("abricate_report", help="Input: Abricate report to screen (tsv)")
54 parser.add_argument("--screening_file", help="Input: List of genes to screen for (tsv)") 57 parser.add_argument("--screening_file", help="Input: List of genes to screen for (tsv)")
55 parser.add_argument("--screened_report", help="Output: Screened abricate report including only genes of interest (tsv)") 58 parser.add_argument("--screened_report", help=("Output: Screened abricate report ",
56 parser.add_argument("--gene_detection_status", help="Output: detection status for all genes listed in the screening file (tsv)") 59 "including only genes of interest (tsv)"))
60 parser.add_argument("--gene_detection_status", help=("Output: detection status for all genes ",
61 "listed in the screening file (tsv)"))
57 args = parser.parse_args() 62 args = parser.parse_args()
58 main(args) 63 main(args)