@@ -12,6 +12,10 @@ def parse_bracken_report(bracken_report_path):
12
12
with open (bracken_report_path , 'r' ) as f :
13
13
reader = csv .DictReader (f , dialect = 'excel-tab' )
14
14
for row in reader :
15
+ try :
16
+ row ['fraction_total_reads' ] = float (row ['fraction_total_reads' ])
17
+ except ValueError as e :
18
+ row ['fraction_total_reads' ] = None
15
19
bracken_report_lines .append (row )
16
20
17
21
return bracken_report_lines
@@ -25,7 +29,7 @@ def main(args):
25
29
output_fields = ['sample_id' , 'taxonomy_level' ]
26
30
output_line = {
27
31
'sample_id' : args .sample_id ,
28
- 'taxonomy_level' : bracken_report_sorted [ 0 ][ 'taxonomy_lvl' ]
32
+ 'taxonomy_level' : args . taxonomy_level ,
29
33
}
30
34
31
35
for n in range (args .top_n ):
@@ -34,25 +38,33 @@ def main(args):
34
38
try :
35
39
output_line [name_field ] = bracken_report_sorted [n ]['name' ]
36
40
except IndexError as e :
37
- output_line [name_field ] = " None"
41
+ output_line [name_field ] = None
38
42
output_fields .append (name_field )
43
+
44
+ taxid_field = 'abundance_' + num + '_taxonomy_id'
45
+ try :
46
+ output_line [taxid_field ] = bracken_report_sorted [n ]['taxonomy_id' ]
47
+ except IndexError as e :
48
+ output_line [taxid_field ] = None
49
+ output_fields .append (taxid_field )
50
+
39
51
fraction_total_reads_field = 'abundance_' + num + '_fraction_total_reads'
40
52
try :
41
- output_line [fraction_total_reads_field ] = bracken_report_sorted [n ]['fraction_total_reads' ]
53
+ output_line [fraction_total_reads_field ] = round ( bracken_report_sorted [n ]['fraction_total_reads' ], 6 )
42
54
except IndexError as e :
43
55
output_line [fraction_total_reads_field ] = 0.0
44
56
output_fields .append (fraction_total_reads_field )
45
57
46
58
47
- csv .register_dialect ('unix-csv-quote-minimal' , delimiter = ',' , doublequote = False , lineterminator = '\n ' , quoting = csv .QUOTE_MINIMAL )
48
- writer = csv .DictWriter (sys .stdout , fieldnames = output_fields , dialect = 'unix-csv-quote-minimal' )
59
+ writer = csv .DictWriter (sys .stdout , fieldnames = output_fields , dialect = 'unix' , quoting = csv .QUOTE_MINIMAL )
49
60
writer .writeheader ()
50
61
writer .writerow (output_line )
51
62
52
63
if __name__ == '__main__' :
53
64
parser = argparse .ArgumentParser ()
54
65
parser .add_argument ('bracken_report' )
55
66
parser .add_argument ('-s' , '--sample-id' )
67
+ parser .add_argument ('-l' , '--taxonomy-level' )
56
68
parser .add_argument ('-n' , '--top-n' , type = int )
57
69
args = parser .parse_args ()
58
70
main (args )
0 commit comments