22
33import sys
44from operator import itemgetter
5- from optparse import OptionParser
5+ from argparse import ArgumentParser
66from mglib import get_auth_token , obj_from_url , async_rest_api , AUTH_LIST , sparse_to_dense , safe_print , API_URL , VERSION , urlencode
77
88prehelp = """
3434"""
3535
3636def main (args ):
37- OptionParser .format_description = lambda self , formatter : self .description
38- OptionParser .format_epilog = lambda self , formatter : self .epilog
39- parser = OptionParser (usage = '' , description = prehelp % VERSION , epilog = posthelp % AUTH_LIST )
40- parser .add_option ( "" , "--id" , dest = "id" , default = None , help = "KBase Metagenome ID" )
41- parser .add_option ( "" , "--url" , dest = "url" , default = API_URL , help = "communities API url" )
42- parser .add_option ( "" , "--user" , dest = "user" , default = None , help = "OAuth username" )
43- parser .add_option ( "" , "--passwd" , dest = "passwd" , default = None , help = "OAuth password" )
44- parser .add_option ( "" , "--token" , dest = "token" , default = None , help = "OAuth token" )
45- parser .add_option ( "" , "--level" , dest = "level" , default = 'species' , help = "taxon level to retrieve abundances for, default is species" )
46- parser .add_option ( "" , "--source" , dest = "source" , default = 'SEED' , help = "datasource to filter results by, default is SEED" )
47- parser .add_option ( "" , "--filter_name" , dest = "filter_name" , default = None , help = "taxon name to filter by" )
48- parser .add_option ( "" , "--filter_level" , dest = "filter_level" , default = None , help = "taxon level to filter by" )
49- parser .add_option ( "" , " --top" , dest = "top" , type = " int" , default = 10 , help = "display only the top N taxa, default is 10" )
50- parser .add_option ( "" , " --evalue" , dest = "evalue" , type = " int" , default = 5 , help = "negative exponent value for maximum e-value cutoff, default is 5" )
51- parser .add_option ( "" , " --identity" , dest = "identity" , type = " int" , default = 60 , help = "percent value for minimum % identity cutoff, default is 60" )
52- parser .add_option ( "" , " --length" , dest = "length" , type = " int" , default = 15 , help = "value for minimum alignment length cutoff, default is 15" )
53- parser .add_option ( "" , " --version" , type = " int" , dest = "version" , default = 1 , help = "M5NR annotation version to use, default is 1" )
37+ ArgumentParser .format_description = lambda self , formatter : self .description
38+ ArgumentParser .format_epilog = lambda self , formatter : self .epilog
39+ parser = ArgumentParser (usage = '' , description = prehelp % VERSION , epilog = posthelp % AUTH_LIST )
40+ parser .add_argument ( "--id" , dest = "id" , default = None , help = "KBase Metagenome ID" )
41+ parser .add_argument ( "--url" , dest = "url" , default = API_URL , help = "communities API url" )
42+ parser .add_argument ( "--user" , dest = "user" , default = None , help = "OAuth username" )
43+ parser .add_argument ( "--passwd" , dest = "passwd" , default = None , help = "OAuth password" )
44+ parser .add_argument ( "--token" , dest = "token" , default = None , help = "OAuth token" )
45+ parser .add_argument ( "--level" , dest = "level" , default = 'species' , help = "taxon level to retrieve abundances for, default is species" )
46+ parser .add_argument ( "--source" , dest = "source" , default = 'SEED' , help = "datasource to filter results by, default is SEED" )
47+ parser .add_argument ( "--filter_name" , dest = "filter_name" , default = None , help = "taxon name to filter by" )
48+ parser .add_argument ( "--filter_level" , dest = "filter_level" , default = None , help = "taxon level to filter by" )
49+ parser .add_argument ( " --top" , dest = "top" , type = int , default = 10 , help = "display only the top N taxa, default is 10" )
50+ parser .add_argument ( " --evalue" , dest = "evalue" , type = int , default = 5 , help = "negative exponent value for maximum e-value cutoff, default is 5" )
51+ parser .add_argument ( " --identity" , dest = "identity" , type = int , default = 60 , help = "percent value for minimum % identity cutoff, default is 60" )
52+ parser .add_argument ( " --length" , dest = "length" , type = int , default = 15 , help = "value for minimum alignment length cutoff, default is 15" )
53+ parser .add_argument ( " --version" , type = int , dest = "version" , default = 1 , help = "M5NR annotation version to use, default is 1" )
5454
5555 # get inputs
56- ( opts , args ) = parser .parse_args ()
56+ opts = parser .parse_args ()
5757 opts .top = int (opts .top )
5858 if not opts .id :
5959 sys .stderr .write ("ERROR: id required\n " )
@@ -66,16 +66,16 @@ def main(args):
6666 token = get_auth_token (opts )
6767
6868 # build url
69- params = [ ('id' , opts .id ),
70- ('group_level' , opts .level ),
71- ('source' , opts .source ),
72- ('evalue' , opts .evalue ),
73- ('identity' , opts .identity ),
74- ('length' , opts .length ),
75- ('version' , opts .version ),
76- ('result_type' , 'abundance' ),
77- ('asynchronous' , '1' ),
78- ('hide_metadata' , '1' ) ]
69+ params = [('id' , opts .id ),
70+ ('group_level' , opts .level ),
71+ ('source' , opts .source ),
72+ ('evalue' , opts .evalue ),
73+ ('identity' , opts .identity ),
74+ ('length' , opts .length ),
75+ ('version' , opts .version ),
76+ ('result_type' , 'abundance' ),
77+ ('asynchronous' , '1' ),
78+ ('hide_metadata' , '1' )]
7979 url = opts .url + '/matrix/organism?' + urlencode (params , True )
8080
8181 # retrieve data
@@ -85,20 +85,20 @@ def main(args):
8585 # get sub annotations
8686 sub_ann = set ()
8787 if opts .filter_name and opts .filter_level :
88- params = [ ('filter' , opts .filter_name ),
89- ('filter_level' , opts .filter_level ),
90- ('min_level' , opts .level ),
91- ('version' , opts .version ) ]
88+ params = [('filter' , opts .filter_name ),
89+ ('filter_level' , opts .filter_level ),
90+ ('min_level' , opts .level ),
91+ ('version' , opts .version )]
9292 url = opts .url + '/m5nr/taxonomy?' + urlencode (params , True )
9393 data = obj_from_url (url )
94- sub_ann = set ( map (lambda x : x [opts .level ], data ['data' ]) )
94+ sub_ann = set (map (lambda x : x [opts .level ], data ['data' ]))
9595 if biom ['matrix_type' ] == "dense" :
9696 data = biom ['data' ]
9797 else :
9898 data = sparse_to_dense (biom ['data' ], len (biom ['rows' ]), len (biom ['cols' ]))
9999 rows = [biom ['rows' ][i ]['id' ] for i in range (len (biom ['rows' ]))]
100100 datalist = [biom ['data' ][i ][0 ] for i in range (len (biom ['rows' ]))]
101- data2 = zip ( rows , datalist )
101+ data2 = zip (rows , datalist )
102102 # sort data
103103 for d in sorted (data2 , key = itemgetter (1 ), reverse = True ):
104104 name = d [0 ]
@@ -116,4 +116,4 @@ def main(args):
116116
117117
118118if __name__ == "__main__" :
119- sys .exit ( main (sys .argv ) )
119+ sys .exit (main (sys .argv ))
0 commit comments