Mercurial > repos > iuc > table_compute
annotate scripts/safety.py @ 1:dddadbbac949 draft
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
author | iuc |
---|---|
date | Fri, 30 Aug 2019 05:28:18 -0400 |
parents | 1b0f96ed73f2 |
children | 02c3e335a695 |
rev | line source |
---|---|
0
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
1 import re |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
2 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
3 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
4 class Safety(): |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
5 """ |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
6 Class to safely evaluate mathematical expression on single |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
7 or table data |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
8 """ |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
9 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
10 __allowed_tokens = ( |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
11 '(', ')', 'if', 'else', 'or', 'and', 'not', 'in', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
12 '+', '-', '*', '/', '%', ',', '!=', '==', '>', '>=', '<', '<=', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
13 'min', 'max', 'sum', |
1
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
14 'str', 'int', 'float' |
0
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
15 ) |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
16 __allowed_ref_types = { |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
17 'pd.DataFrame': { |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
18 'abs', 'add', 'agg', 'aggregate', 'align', 'all', 'any', 'append', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
19 'apply', 'applymap', 'as_matrix', 'asfreq', 'at', 'axes', 'bool', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
20 'clip', 'clip_lower', 'clip_upper', 'columns', 'combine', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
21 'compound', 'corr', 'count', 'cov', 'cummax', 'cummin', 'cumprod', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
22 'cumsum', 'describe', 'div', 'divide', 'dot', 'drop', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
23 'drop_duplicates', 'droplevel', 'dropna', 'duplicated', 'empty', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
24 'eq', 'equals', 'expanding', 'ffill', 'fillna', 'filter', 'first', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
25 'first_valid_index', 'floordiv', 'ge', 'groupby', 'gt', 'head', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
26 'iat', 'iloc', 'index', 'insert', 'interpolate', 'isin', 'isna', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
27 'isnull', 'items', 'iteritems', 'iterrows', 'itertuples', 'ix', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
28 'join', 'keys', 'kurt', 'kurtosis', 'last', 'last_valid_index', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
29 'le', 'loc', 'lookup', 'lt', 'mad', 'mask', 'max', 'mean', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
30 'median', 'melt', 'merge', 'min', 'mod', 'mode', 'mul', 'multiply', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
31 'ndim', 'ne', 'nlargest', 'notna', 'notnull', 'nsmallest', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
32 'nunique', 'pct_change', 'pivot', 'pivot_table', 'pop', 'pow', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
33 'prod', 'product', 'quantile', 'radd', 'rank', 'rdiv', 'replace', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
34 'resample', 'rfloordiv', 'rmod', 'rmul', 'rolling', 'round', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
35 'rpow', 'rsub', 'rtruediv', 'sample', 'select', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
36 'sem', 'shape', 'shift', 'size', 'skew', 'slice_shift', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
37 'squeeze', 'stack', 'std', 'sub', 'subtract', 'sum', 'swapaxes', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
38 'swaplevel', 'T', 'tail', 'take', 'transform', 'transpose', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
39 'truediv', 'truncate', 'tshift', 'unstack', 'var', 'where', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
40 }, |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
41 'pd.Series': { |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
42 'abs', 'add', 'agg', 'aggregate', 'align', 'all', 'any', 'append', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
43 'apply', 'argsort', 'as_matrix', 'asfreq', 'asof', 'astype', 'at', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
44 'at_time', 'autocorr', 'axes', 'between', 'between_time', 'bfill', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
45 'bool', 'cat', 'clip', 'clip_lower', 'clip_upper', 'combine', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
46 'combine_first', 'compound', 'corr', 'count', 'cov', 'cummax', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
47 'cummin', 'cumprod', 'cumsum', 'describe', 'diff', 'div', 'divide', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
48 'divmod', 'dot', 'drop', 'drop_duplicates', 'droplevel', 'dropna', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
49 'dt', 'dtype', 'dtypes', 'duplicated', 'empty', 'eq', 'equals', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
50 'ewm', 'expanding', 'factorize', 'ffill', 'fillna', 'filter', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
51 'first', 'first_valid_index', 'flags', 'floordiv', 'ge', 'groupby', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
52 'gt', 'hasnans', 'head', 'iat', 'idxmax', 'idxmin', 'iloc', 'imag', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
53 'index', 'interpolate', 'is_monotonic', 'is_monotonic_decreasing', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
54 'is_monotonic_increasing', 'is_unique', 'isin', 'isna', 'isnull', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
55 'item', 'items', 'iteritems', 'ix', 'keys', 'kurt', 'kurtosis', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
56 'last', 'last_valid_index', 'le', 'loc', 'lt', 'mad', 'map', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
57 'mask', 'max', 'mean', 'median', 'min', 'mod', 'mode', 'mul', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
58 'multiply', 'name', 'ndim', 'ne', 'nlargest', 'nonzero', 'notna', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
59 'notnull', 'nsmallest', 'nunique', 'pct_change', 'pop', 'pow', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
60 'prod', 'product', 'ptp', 'quantile', 'radd', 'rank', 'rdiv', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
61 'rdivmod', 'real', 'repeat', 'replace', 'resample', 'rfloordiv', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
62 'rmod', 'rmul', 'rolling', 'round', 'rpow', 'rsub', 'rtruediv', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
63 'sample', 'searchsorted', 'select', 'sem', 'shape', 'shift', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
64 'size', 'skew', 'slice_shift', 'sort_index', 'sort_values', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
65 'squeeze', 'std', 'sub', 'subtract', 'sum', 'swapaxes', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
66 'swaplevel', 'T', 'tail', 'take', 'transform', 'transpose', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
67 'truediv', 'truncate', 'tshift', 'unique', 'unstack', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
68 'value_counts', 'var', 'where', 'xs', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
69 }, |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
70 } |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
71 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
72 __allowed_qualified = { |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
73 # allowed numpy functionality |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
74 'np': { |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
75 'abs', 'add', 'all', 'any', 'append', 'array', 'bool', 'ceil', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
76 'complex', 'cos', 'cosh', 'cov', 'cumprod', 'cumsum', 'degrees', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
77 'divide', 'divmod', 'dot', 'e', 'empty', 'exp', 'float', 'floor', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
78 'hypot', 'inf', 'int', 'isfinite', 'isin', 'isinf', 'isnan', 'log', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
79 'log10', 'log2', 'max', 'mean', 'median', 'min', 'mod', 'multiply', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
80 'nan', 'ndim', 'pi', 'product', 'quantile', 'radians', 'rank', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
81 'remainder', 'round', 'sin', 'sinh', 'size', 'sqrt', 'squeeze', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
82 'stack', 'std', 'str', 'subtract', 'sum', 'swapaxes', 'take', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
83 'tan', 'tanh', 'transpose', 'unique', 'var', 'where', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
84 }, |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
85 # allowed math functionality |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
86 'math': { |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
87 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
88 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
89 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
90 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
91 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
92 'modf', 'nan', 'pi', 'pow', 'radians', 'remainder', 'sin', 'sinh', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
93 'sqrt', 'tan', 'tanh', 'tau', 'trunc', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
94 }, |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
95 # allowed pd functionality |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
96 'pd': { |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
97 'DataFrame', 'array', 'concat', 'cut', 'date_range', 'factorize', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
98 'interval_range', 'isna', 'isnull', 'melt', 'merge', 'notna', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
99 'notnull', 'period_range', 'pivot', 'pivot_table', 'unique', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
100 'value_counts', 'wide_to_long', |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
101 }, |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
102 } |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
103 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
104 def __init__(self, expression, |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
105 ref_whitelist=None, ref_type=None, |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
106 custom_qualified=None): |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
107 self.allowed_qualified = self.__allowed_qualified.copy() |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
108 if ref_whitelist is None: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
109 self.these = [] |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
110 else: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
111 self.these = ref_whitelist |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
112 if ref_type is None or ref_type not in self.__allowed_ref_types: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
113 self.allowed_qualified['_this'] = set() |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
114 else: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
115 self.allowed_qualified[ |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
116 '_this' |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
117 ] = self.__allowed_ref_types[ref_type] |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
118 if custom_qualified is not None: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
119 self.allowed_qualified.update(custom_qualified) |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
120 self.expr = expression |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
121 self.__assertSafe() |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
122 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
123 def generateFunction(self): |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
124 "Generates a function to be evaluated outside the class" |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
125 cust_fun = "def fun(%s):\n\treturn(%s)" % (self.these[0], self.expr) |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
126 return cust_fun |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
127 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
128 def __assertSafe(self): |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
129 indeed, problematic_token = self.__isSafeStatement() |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
130 if not indeed: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
131 self.detailedExcuse(problematic_token) |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
132 raise ValueError("Custom Expression is not safe.") |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
133 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
134 @staticmethod |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
135 def detailedExcuse(word): |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
136 "Gives a verbose statement for why users should not use some specific operators." |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
137 mess = None |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
138 if word == "for": |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
139 mess = "for loops and comprehensions are not allowed. Use numpy or pandas table operations instead." |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
140 elif word == ":": |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
141 mess = "Colons are not allowed. Use inline Python if/else statements." |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
142 elif word == "=": |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
143 mess = "Variable assignment is not allowed. Use object methods to substitute values." |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
144 elif word in ("[", "]"): |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
145 mess = "Direct indexing of arrays is not allowed. Use numpy or pandas functions/methods to address specific parts of tables." |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
146 else: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
147 mess = "Not an allowed token in this operation" |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
148 print("( '%s' ) %s" % (word, mess)) |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
149 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
150 def __isSafeStatement(self): |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
151 """ |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
152 Determines if a user-expression is safe to evaluate. |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
153 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
154 To be considered safe an expression may contain only: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
155 - standard Python operators and numbers |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
156 - inline conditional expressions |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
157 - select functions and objects |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
158 by default, these come from the math, numpy and pandas |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
159 libraries, and must be qualified with the modules' conventional |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
160 names math, np, pd; can be overridden at the instance level |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
161 - references to a whitelist of objects (pd.DataFrames by default) |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
162 and their methods |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
163 """ |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
164 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
165 safe = True |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
166 # examples of user-expressions |
1
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
167 # '-math.log(1 - elem/4096) * 4096 if elem != 1 else elem - 0.5' |
0
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
168 # 'vec.median() + vec.sum()' |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
169 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
170 # 1. Break expressions into tokens |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
171 # e.g., |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
172 # [ |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
173 # '-', 'math.log', '(', '1', '-', 'elem', '/', '4096', ')', '*', |
1
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
174 # '4096', 'if', 'elem', '!=', '1', 'else', 'elem', '-', '0.5' |
0
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
175 # ] |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
176 # or |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
177 # ['vec.median', '(', ')', '+', 'vec.sum', '(', ')'] |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
178 tokens = [ |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
179 e for e in re.split( |
1
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
180 r'("[a-zA-Z%0-9_.]+"|[a-zA-Z0-9_.]+|[^a-zA-Z0-9_.() ]+|[()])', self.expr |
0
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
181 ) if e.strip() |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
182 ] |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
183 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
184 # 2. Subtract allowed standard tokens |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
185 rem = [e for e in tokens if e not in self.__allowed_tokens] |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
186 # 3. Subtract allowed qualified objects from allowed modules |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
187 # and whitelisted references and their attributes |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
188 rem2 = [] |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
189 for e in rem: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
190 parts = e.split('.') |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
191 if len(parts) == 1: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
192 if parts[0] in self.these: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
193 continue |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
194 if len(parts) == 2: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
195 if parts[0] in self.these: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
196 parts[0] = '_this' |
1
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
197 elif parts[0] == "": |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
198 # e.g. '.T' gives ['','.T'] |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
199 # Here we assume that the blank part[0] refers to the |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
200 # self.ref_type (e.g. "pd.DataFrame"), and that |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
201 # the second part is a function of that type. |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
202 if parts[1] in self.allowed_qualified['_this']: |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
203 continue |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
204 |
0
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
205 if parts[0] in self.allowed_qualified: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
206 if parts[1] in self.allowed_qualified[parts[0]]: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
207 continue |
1
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
208 |
0
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
209 rem2.append(e) |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
210 |
1
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
211 # Debug |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
212 # for x in (tokens, rem, rem2):print(x) |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
213 |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
214 # 4. Assert that rest are real numbers or strings |
0
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
215 e = '' |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
216 for e in rem2: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
217 try: |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
218 _ = float(e) |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
219 except ValueError: |
1
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
220 # e.g. '"TEXT"' is okay. |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
221 if not(e[0] == '"' and e[-1] == '"'): |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
222 safe = False |
dddadbbac949
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 6820ec9431a22576f3716c40feeb27f0b8cf5e83"
iuc
parents:
0
diff
changeset
|
223 break |
0
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
224 |
1b0f96ed73f2
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/table_compute commit 1ee75135483d5db22c540bc043746cd986f85762"
iuc
parents:
diff
changeset
|
225 return safe, e |