comparison column_maker.py @ 10:beec6ecc7d3c draft default tip

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/column_maker commit 06a92568f3409b035fd8a08725db20933d8d15e6
author iuc
date Thu, 22 Aug 2024 08:25:32 +0000
parents 33b81f9ea109
children
comparison
equal deleted inserted replaced
9:33b81f9ea109 10:beec6ecc7d3c
11 import enum 11 import enum
12 import re 12 import re
13 import sys 13 import sys
14 # Functions that may be used in the compute expression 14 # Functions that may be used in the compute expression
15 from math import ( # noqa: F401 15 from math import ( # noqa: F401
16 acos,
17 acosh,
18 asin,
19 asinh,
20 atan,
21 atan2,
22 atanh,
23 cbrt,
16 ceil, 24 ceil,
25 comb,
26 copysign,
27 cos,
28 cosh,
29 degrees,
30 dist,
31 erf,
32 erfc,
17 exp, 33 exp,
34 exp2,
35 expm1,
36 fabs,
37 factorial,
18 floor, 38 floor,
39 fmod,
40 frexp,
41 fsum,
42 gamma,
43 gcd,
44 hypot,
45 inf,
46 isclose,
47 isfinite,
48 isinf,
49 isnan,
50 isqrt,
51 ldexp,
52 lgamma,
19 log, 53 log,
20 log10, 54 log10,
55 log1p,
56 log2,
57 modf,
58 nextafter,
59 perm,
60 pi,
61 pow,
62 prod,
63 remainder,
64 sin,
21 sqrt, 65 sqrt,
66 tan,
67 tanh,
68 tau,
69 trunc,
70 ulp,
22 ) 71 )
23 72
24 from numpy import format_float_positional 73 from numpy import format_float_positional
25 74
26 75
119 try: 168 try:
120 cast_types = eval( 169 cast_types = eval(
121 'lambda fields: [from_str(s, t) for s, t in zip(fields, [%s])]' 170 'lambda fields: [from_str(s, t) for s, t in zip(fields, [%s])]'
122 % args.column_types 171 % args.column_types
123 ) 172 )
124 except Exception as e: 173 except Exception as err:
125 sys.exit( 174 sys.exit(
126 'While parsing column types, the following problem occured: "%s"' 175 'While parsing column types, the following problem occured: "%s"'
127 % e 176 % err
128 ) 177 )
129 178
130 # Get and parse actions 179 # Get and parse actions
131 if args.file: 180 if args.file:
132 actions = [] 181 actions = []
148 # a missing COL_ADD_SPEC is interpreted as mode A (append new column at the 197 # a missing COL_ADD_SPEC is interpreted as mode A (append new column at the
149 # end of the row). 198 # end of the row).
150 # COL_NAME is required with the --header option and specifies the name of the 199 # COL_NAME is required with the --header option and specifies the name of the
151 # new column; without --header, any COL_NAME gets ignored. 200 # new column; without --header, any COL_NAME gets ignored.
152 operators = 'is|not|or|and' 201 operators = 'is|not|or|and'
153 builtin_and_math_functions = ( 202 builtin_functions = (
154 'abs|all|any|ascii|bin|bool|chr|complex|divmod|float|format|hex|int|len|' 203 'abs|all|any|ascii|bin|bool|chr|complex|divmod|float|format|hex|int|len|'
155 'list|map|max|min|oct|ord|pow|range|reversed|round|set|sorted|str|sum|type|' 204 'list|map|max|min|oct|ord|pow|range|reversed|round|set|sorted|str|sum|type'
156 'log|log10|exp|sqrt|ceil|floor' 205 )
157 ) 206
207 math_functions = (
208 'acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|comb|copysign|cos|cosh|degrees|'
209 'dist|erf|erfc|exp|exp2|expm1|fabs|factorial|floor|fmod|frexp|fsum|gamma|gcd|'
210 'hypot|inf|isclose|isfinite|isinf|isnan|isqrt|ldexp|lgamma|log|log10|log1p|'
211 'log2|modf|nextafter|perm|pi|pow|prod|remainder|sin|'
212 'sqrt|tan|tanh|tau|trunc|ulp'
213 )
214 builtin_and_math_functions = builtin_functions + '|' + math_functions
158 imported_numpy_function = 'format_float_positional' 215 imported_numpy_function = 'format_float_positional'
159 string_and_list_methods = [ 216 string_and_list_methods = [
160 name for name in dir('') + dir([]) if not name.startswith('_') 217 name for name in dir('') + dir([]) if not name.startswith('_')
161 ] 218 ]
162 whitelist = r"^([c0-9\+\-\*\/\(\)\.\'\"><=,:! ]|%s|%s|%s|%s)*$" % ( 219 whitelist = r"^([c0-9\+\-\*\/\(\)\.\'\"><=,:! ]|%s|%s|%s|%s)*$" % (
169 ops = [] 226 ops = []
170 num_cols = in_columns 227 num_cols = in_columns
171 for ac in actions: 228 for ac in actions:
172 try: 229 try:
173 expr_string, col_add_spec, new_col_name = ac.split(';') 230 expr_string, col_add_spec, new_col_name = ac.split(';')
231 print(expr_string)
174 except ValueError: 232 except ValueError:
175 sys.exit( 233 sys.exit(
176 'Invalid Action: "%s". ' 234 'Invalid Action: "%s". '
177 'Required format: EXPR;[COL_ADD_SPEC];[COL_NAME]' % ac 235 'Required format: EXPR;[COL_ADD_SPEC];[COL_NAME]' % ac
178 ) 236 )