Mercurial > repos > dfornika > screen_abricate_report
annotate screen_abricate_report.py @ 1:40003338a8e8 draft
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
author | dfornika |
---|---|
date | Fri, 27 Sep 2019 13:31:43 -0400 |
parents | 2ffd23634c1e |
children | 1c1c680c70a0 |
rev | line source |
---|---|
0
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
1 #!/usr/bin/env python |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
2 |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
3 from __future__ import print_function |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
4 |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
5 import argparse |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
6 import os |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
7 import re |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
8 import sys |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
9 import csv |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
10 from pprint import pprint |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
11 |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
12 def parse_screen_file(screen_file): |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
13 screen = [] |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
14 with open(screen_file) as f: |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
15 reader = csv.DictReader(f, delimiter="\t", quotechar='"') |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
16 for row in reader: |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
17 screen.append(row) |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
18 return screen |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
19 |
1
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
20 def get_fieldnames(input_file): |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
21 with open(input_file) as f: |
0
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
22 reader = csv.DictReader(f, delimiter="\t", quotechar='"') |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
23 row = next(reader) |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
24 fieldnames = row.keys() |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
25 return fieldnames |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
26 |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
27 def main(args): |
1
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
28 screen = parse_screen_file(args.screening_file) |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
29 abricate_report_fieldnames = get_fieldnames(args.abricate_report) |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
30 gene_detection_status_fieldnames = ['gene_name', 'detected'] |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
31 with open(args.abricate_report, 'r') as f1, open(args.screened_report, 'w') as f2, open(args.gene_detection_status, 'w') as f3: |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
32 abricate_report_reader = csv.DictReader(f1, delimiter="\t", quotechar='"') |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
33 screened_report_writer = csv.DictWriter(f2, delimiter="\t", quotechar='"', fieldnames=abricate_report_fieldnames) |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
34 gene_detection_status_writer = csv.DictWriter(f3, delimiter="\t", quotechar='"', fieldnames=gene_detection_status_fieldnames) |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
35 screened_report_writer.writeheader() |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
36 gene_detection_status_writer.writeheader() |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
37 |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
38 for gene in screen: |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
39 gene_detection_status = { |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
40 'gene_name': gene['gene_name'], |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
41 'detected': False |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
42 } |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
43 for abricate_report_row in abricate_report_reader: |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
44 if re.search(gene['regex'], abricate_report_row['GENE']): |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
45 gene_detection_status['detected'] = True |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
46 screened_report_writer.writerow(abricate_report_row) |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
47 gene_detection_status_writer.writerow(gene_detection_status) |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
48 f1.seek(0) # return file pointer to start of abricate report |
0
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
49 |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
50 |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
51 if __name__ == '__main__': |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
52 parser = argparse.ArgumentParser() |
1
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
53 parser.add_argument("abricate_report", help="Input: Abricate report to screen (tsv)") |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
54 parser.add_argument("--screening_file", help="Input: List of genes to screen for (tsv)") |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
55 parser.add_argument("--screened_report", help="Output: Screened abricate report including only genes of interest (tsv)") |
40003338a8e8
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
0
diff
changeset
|
56 parser.add_argument("--gene_detection_status", help="Output: detection status for all genes listed in the screening file (tsv)") |
0
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
57 args = parser.parse_args() |
2ffd23634c1e
planemo upload for repository https://github.com/dfornika/galaxytools/blob/master/tools/screen_abricate_report commit d9732cd3279d03dcc498bf2eb903f9e6120a9d85-dirty
dfornika
parents:
diff
changeset
|
58 main(args) |