comparison blast_report.py @ 3:386a88793078 draft

Uploaded
author dfornika
date Tue, 03 Mar 2020 01:09:56 +0000
parents 5dfd84907521
children c7ce2cd96546
comparison
equal deleted inserted replaced
2:0dbaa4e68866 3:386a88793078
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2
3 from __future__ import print_function
4
2 '''Report on BLAST results. 5 '''Report on BLAST results.
3 6
4 python blast_report.py input_tab cheetah_tmpl output_html output_tab [-f [filter_pident]:[filterkw1,...,filterkwN]] [-b bin1_label=bin1_path[,...binN_label=binN_path]] 7 python blast_report.py input_tab cheetah_tmpl output_html output_tab [-f [filter_pident]:[filterkw1,...,filterkwN]] [-b bin1_label=bin1_path[,...binN_label=binN_path]]
5 ''' 8 '''
9
6 import argparse 10 import argparse
7 import re 11 import re
8 import sys 12 import sys
9 13
10 from Cheetah.Template import Template 14 from Cheetah.Template import Template
70 74
71 #PARSE OPTIONS AND ARGUMENTS 75 #PARSE OPTIONS AND ARGUMENTS
72 parser = argparse.ArgumentParser() 76 parser = argparse.ArgumentParser()
73 77
74 parser.add_argument('-f', '--filter', 78 parser.add_argument('-f', '--filter',
75 type='string',
76 dest='filter', 79 dest='filter',
77 ) 80 )
78 parser.add_argument('-b', '--bins', 81 parser.add_argument('-b', '--bins',
79 type='string',
80 dest='bins' 82 dest='bins'
81 ) 83 )
82 parser.add_argument('-r', '--redundant', 84 parser.add_argument('-r', '--discard-redundant',
83 dest='redundant', 85 dest='discard_redundant',
86 type=bool,
84 default=False, 87 default=False,
85 action='store_true' 88 action='store_true'
86 ) 89 )
87 args = parser.parse_args() 90 args = parser.parse_args()
88 91
106 pident_kws = args.filter.split(':') 109 pident_kws = args.filter.split(':')
107 filter_pident = float(pident_kws[0]) 110 filter_pident = float(pident_kws[0])
108 filter_kws = pident_kws[-1].split(',') 111 filter_kws = pident_kws[-1].split(',')
109 print('filter_pident: %s filter_kws: %s' % (str(filter_pident), str(filter_kws))) 112 print('filter_pident: %s filter_kws: %s' % (str(filter_pident), str(filter_kws)))
110 113
111 if args.redundant: 114 if args.discard_redundant:
112 print('Throwing out redundant hits...') 115 print('Throwing out redundant hits...')
113 116
114 #RESULTS! 117 #RESULTS!
115 PIDENT_COL = 2 118 PIDENT_COL = 2
116 DESCR_COL = 25 119 DESCR_COL = 25
132 accs = cols[SUBJ_ID_COL].split('|')[1::2][1::2] 135 accs = cols[SUBJ_ID_COL].split('|')[1::2][1::2]
133 except IndexError as e: 136 except IndexError as e:
134 stop_err("Problem with splitting:" + cols[SUBJ_ID_COL]) 137 stop_err("Problem with splitting:" + cols[SUBJ_ID_COL])
135 138
136 #hsp option: keep best (first) hit only for each query and accession id. 139 #hsp option: keep best (first) hit only for each query and accession id.
137 if args.redundant: 140 if args.discard_redundant:
138 if accs[0] in queries[-1].match_accessions: 141 if accs[0] in queries[-1].match_accessions:
139 continue #don't save the result and skip to the next 142 continue #don't save the result and skip to the next
140 else: 143 else:
141 queries[-1].match_accessions[accs[0]] = '' 144 queries[-1].match_accessions[accs[0]] = ''
142 145