Mercurial > repos > dfornika > blast_report_basic
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 |
