Mercurial > repos > public-health-bioinformatics > screen_abricate_report
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) |