0
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
1 """Common functions"""
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
2
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
3
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
4 def process_args(args, ret_type='str', ret_mode=None):
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
5 """Split arguments (only strings) on comma, return in requested
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
6
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
7 ret_type
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
8 (str, int or bool)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
9
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
10 as
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
11
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
12 ret_mode
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
13 char vector - c(1,2,3)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
14 list vector - list(1,2,3)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
15 list - as list [1,2,3]
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
16 None - same as input
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
17
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
18 """
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
19 if args:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
20 all_args = [item.strip() for item in args.split(',')]
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
21 else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
22 all_args = []
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
23 num_options = len(all_args)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
24 if num_options == 1 and len(all_args[0]):
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
25 if ret_type == 'int':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
26 option = int(all_args[0])
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
27 if ret_mode == 'charvector':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
28 # if option:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
29 return 'c({})'.format(option)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
30 # else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
31 # return 'c()'
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
32 elif ret_mode == 'listvector':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
33 # if option:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
34 return 'list({})'.format(option)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
35 # else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
36 # return 'list()'
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
37 elif ret_mode == 'list':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
38 # if option:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
39 return [option]
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
40 # else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
41 # return []
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
42 else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
43 return option
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
44 else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
45 # str, bool
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
46 option = all_args[0]
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
47 if ret_mode == 'charvector':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
48 # if len(option):
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
49 return 'c("{}")'.format(option)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
50 # else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
51 # return 'c("")'
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
52 elif ret_mode == 'listvector':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
53 # if option:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
54 return 'list("{}")'.format(option)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
55 # else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
56 # return 'list("")'
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
57 elif ret_mode == 'list':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
58 # if option:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
59 return [option]
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
60 # else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
61 # return []
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
62 else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
63 return option
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
64 elif num_options > 1:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
65 if ret_type == 'int':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
66 options = tuple([int(item) for item in all_args])
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
67 if ret_mode == 'charvector':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
68 # if len(options):
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
69 return 'c{}'.format(options)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
70 # else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
71 # return 'c()'
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
72 elif ret_mode == 'listvector':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
73 # if len(options):
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
74 return 'list{}'.format(options)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
75 # else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
76 # return 'list()'
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
77 elif ret_mode == 'list':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
78 return list(options)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
79 else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
80 options = tuple(all_args)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
81 if ret_mode == 'charvector':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
82 # if len(options):
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
83 return 'c{}'.format(options)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
84 elif ret_mode == 'listvector':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
85 return 'list{}'.format(options)
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
86 elif ret_mode == 'list':
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
87 # if len(all_args):
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
88 return all_args
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
89 # else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
90 # return []
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
91 else:
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
92 # as original with spaces stripped
|
Vimalkumar Velayudhan <vimal@biotechcoder.com>
parents:
diff
changeset
|
93 return ','.join(all_args)
|