diff riboseqr/utils.py @ 0:e01de823e919 draft default tip

Uploaded
author biotechcoder
date Fri, 01 May 2015 05:41:51 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/riboseqr/utils.py	Fri May 01 05:41:51 2015 -0400
@@ -0,0 +1,92 @@
+"""Common functions"""
+
+
+def process_args(args, ret_type='str', ret_mode=None):
+    """Split arguments (only strings) on comma, return in requested
+
+    ret_type
+        (str, int or bool)
+
+    as
+
+    ret_mode
+        char vector - c(1,2,3)
+        list vector - list(1,2,3)
+        list - as list [1,2,3]
+        None  - same as input
+
+    """
+    all_args = [item.strip() for item in args.split(',')]
+    num_options = len(all_args)
+    if num_options == 1 and len(all_args[0]):
+        if ret_type == 'int':
+            option = int(all_args[0])
+            if ret_mode == 'charvector':
+                # if option:
+                return 'c({})'.format(option)
+                # else:
+                #     return 'c()'
+            elif ret_mode == 'listvector':
+                # if option:
+                return 'list({})'.format(option)
+                # else:
+                #     return 'list()'
+            elif ret_mode == 'list':
+                # if option:
+                return [option]
+                # else:
+                #     return []
+            else:
+                return option
+        else:
+            # str, bool
+            option = all_args[0]
+            if ret_mode == 'charvector':
+                # if len(option):
+                return 'c("{}")'.format(option)
+                # else:
+                #     return 'c("")'
+            elif ret_mode == 'listvector':
+                # if option:
+                return 'list("{}")'.format(option)
+                # else:
+                #     return 'list("")'
+            elif ret_mode == 'list':
+                # if option:
+                return [option]
+                # else:
+                #     return []
+            else:
+                return option
+    elif num_options > 1:
+        if ret_type == 'int':
+            options = tuple([int(item) for item in all_args])
+            if ret_mode == 'charvector':
+                # if len(options):
+                return 'c{}'.format(options)
+                # else:
+                #     return 'c()'
+            elif ret_mode == 'listvector':
+                # if len(options):
+                return 'list{}'.format(options)
+                # else:
+                #     return 'list()'
+            elif ret_mode == 'list':
+                return list(options)
+        else:
+            options = tuple(all_args)
+            if ret_mode == 'charvector':
+                # if len(options):
+                return 'c{}'.format(options)
+            elif ret_mode == 'listvector':
+                return 'list{}'.format(options)
+            elif ret_mode == 'list':
+                # if len(all_args):
+                return all_args
+                # else:
+                #     return []
+            else:
+                # as original with spaces stripped
+                return ','.join(all_args)
+
+