Skip to content

Commit

Permalink
add new functions from the python math module (#6258)
Browse files Browse the repository at this point in the history
* add new functions from the python math module

* Update .shed.yml

* Update tools/column_maker/column_maker.xml

Co-authored-by: Nicola Soranzo <nicola.soranzo@gmail.com>

* latest updates

* fix linting

* remove e

* update test data

---------

Co-authored-by: Nicola Soranzo <nicola.soranzo@gmail.com>
  • Loading branch information
bgruening and nsoranzo authored Aug 22, 2024
1 parent ab5e118 commit 06a9256
Show file tree
Hide file tree
Showing 4 changed files with 146 additions and 15 deletions.
1 change: 1 addition & 0 deletions tools/column_maker/.shed.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,5 @@ long_description: |
name: column_maker
owner: devteam
remote_repository_url: https://github.com/galaxyproject/tools-iuc/tree/master/tools/column_maker
homepage_url: https://github.com/galaxyproject/tools-iuc/tree/master/tools/column_maker
type: unrestricted
68 changes: 63 additions & 5 deletions tools/column_maker/column_maker.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,61 @@
import sys
# Functions that may be used in the compute expression
from math import ( # noqa: F401
acos,
acosh,
asin,
asinh,
atan,
atan2,
atanh,
cbrt,
ceil,
comb,
copysign,
cos,
cosh,
degrees,
dist,
erf,
erfc,
exp,
exp2,
expm1,
fabs,
factorial,
floor,
fmod,
frexp,
fsum,
gamma,
gcd,
hypot,
inf,
isclose,
isfinite,
isinf,
isnan,
isqrt,
ldexp,
lgamma,
log,
log10,
log1p,
log2,
modf,
nextafter,
perm,
pi,
pow,
prod,
remainder,
sin,
sqrt,
tan,
tanh,
tau,
trunc,
ulp,
)

from numpy import format_float_positional
Expand Down Expand Up @@ -121,10 +170,10 @@ def to_str(obj):
'lambda fields: [from_str(s, t) for s, t in zip(fields, [%s])]'
% args.column_types
)
except Exception as e:
except Exception as err:
sys.exit(
'While parsing column types, the following problem occured: "%s"'
% e
% err
)

# Get and parse actions
Expand All @@ -150,11 +199,19 @@ def to_str(obj):
# COL_NAME is required with the --header option and specifies the name of the
# new column; without --header, any COL_NAME gets ignored.
operators = 'is|not|or|and'
builtin_and_math_functions = (
builtin_functions = (
'abs|all|any|ascii|bin|bool|chr|complex|divmod|float|format|hex|int|len|'
'list|map|max|min|oct|ord|pow|range|reversed|round|set|sorted|str|sum|type|'
'log|log10|exp|sqrt|ceil|floor'
'list|map|max|min|oct|ord|pow|range|reversed|round|set|sorted|str|sum|type'
)

math_functions = (
'acos|acosh|asin|asinh|atan|atan2|atanh|cbrt|ceil|comb|copysign|cos|cosh|degrees|'
'dist|erf|erfc|exp|exp2|expm1|fabs|factorial|floor|fmod|frexp|fsum|gamma|gcd|'
'hypot|inf|isclose|isfinite|isinf|isnan|isqrt|ldexp|lgamma|log|log10|log1p|'
'log2|modf|nextafter|perm|pi|pow|prod|remainder|sin|'
'sqrt|tan|tanh|tau|trunc|ulp'
)
builtin_and_math_functions = builtin_functions + '|' + math_functions
imported_numpy_function = 'format_float_positional'
string_and_list_methods = [
name for name in dir('') + dir([]) if not name.startswith('_')
Expand All @@ -171,6 +228,7 @@ def to_str(obj):
for ac in actions:
try:
expr_string, col_add_spec, new_col_name = ac.split(';')
print(expr_string)
except ValueError:
sys.exit(
'Invalid Action: "%s". '
Expand Down
27 changes: 17 additions & 10 deletions tools/column_maker/column_maker.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<tool id="Add_a_column1" name="Compute" version="2.0">
<tool id="Add_a_column1" name="Compute" version="2.1" profile="23.0">
<description>on rows</description>
<macros>
<xml name="compute_repeat">
Expand Down Expand Up @@ -34,8 +34,8 @@
</xml>
</macros>
<requirements>
<requirement type="package" version="3.8">python</requirement>
<requirement type="package" version="1.23.1">numpy</requirement>
<requirement type="package" version="3.12">python</requirement>
<requirement type="package" version="2.1.0">numpy</requirement>
</requirements>
<command detect_errors="aggressive"><![CDATA[
python '$__tool_directory__/column_maker.py'
Expand Down Expand Up @@ -193,6 +193,11 @@ ${expr.cond};${expr.add_column.pos}${expr.add_column.mode};
</repeat>
<output name="out_file1" file="column_maker_out4.tab" />
</test>
<test>
<param name="cond" value="cos(pi)+sin(tau)*c2"/>
<param name="input" value="1.bed" ftype="bed" />
<output name="out_file1" file="column_maker_out5.interval"/>
</test>
<!-- Test list column type in input -->
<test>
<param name="input" value="bed12.bed" ftype="bed12" />
Expand Down Expand Up @@ -311,13 +316,13 @@ Several expressions can be specified and will be applied sequentially to each ro
- The following built-in Python functions are available for use in expressions::
abs | all | any | ascii | bin | bool | chr | ceil | complex | divmod
exp | float | floor | format | hex | int | len | list | log | log10
list | map | max | min | oct | ord | pow | range | reversed
abs | all | any | ascii | bin | bool | chr | complex | divmod | float | format | hex | int | len | list
map | max | min | oct | ord | pow | range | reversed | round | set | sorted | str | sum | type
round | set | sorted | sqrt | str | sum | type
acos | acosh | asin | asinh | atan | atan2 | atanh | cbrt | ceil | comb | copysign | cos | cosh | degrees
dist | erf | erfc | exp | exp2 | expm1 | fabs | factorial | floor | fmod | frexp | fsum | gamma | gcd
hypot | inf | isclose | isfinite | isinf | isnan | isqrt | ldexp | lgamma | log | log10 | log1p | log2
modf | nextafter | perm | pow | prod | remainder | sin | sqrt | tan | tanh | tau | trunc | ulp
- In addition the numpy function ``format_float_positional`` is available to
control the formatting of floating point numbers.
Expand Down Expand Up @@ -434,5 +439,7 @@ You can fix the file with the following tool run:
**Replacement value**: `.`
]]></help>
<citations />
<citations>
<citation type="doi">10.1093/nar/gkae410</citation>
</citations>
</tool>
65 changes: 65 additions & 0 deletions tools/column_maker/test-data/column_maker_out5.interval
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
chr1 147962192 147962580 CCDS989.1_cds_0_0_chr1_147962193_r 0 - -1.000000036240285
chr1 147984545 147984630 CCDS990.1_cds_0_0_chr1_147984546_f 0 + -1.00000003624576
chr1 148078400 148078582 CCDS993.1_cds_0_0_chr1_148078401_r 0 - -1.0000000362687478
chr1 148185136 148185276 CCDS996.1_cds_0_0_chr1_148185137_f 0 + -1.0000000362948904
chr10 55251623 55253124 CCDS7248.1_cds_0_0_chr10_55251624_r 0 - -1.0000000135327447
chr11 116124407 116124501 CCDS8374.1_cds_0_0_chr11_116124408_r 0 - -1.0000000284422768
chr11 116206508 116206563 CCDS8377.1_cds_0_0_chr11_116206509_f 0 + -1.0000000284623856
chr11 116211733 116212337 CCDS8378.1_cds_0_0_chr11_116211734_r 0 - -1.0000000284636654
chr11 1812377 1812407 CCDS7726.1_cds_0_0_chr11_1812378_f 0 + -1.0000000004439042
chr12 38440094 38440321 CCDS8736.1_cds_0_0_chr12_38440095_r 0 - -1.0000000094151076
chr13 112381694 112381953 CCDS9526.1_cds_0_0_chr13_112381695_f 0 + -1.0000000275255763
chr14 98710240 98712285 CCDS9949.1_cds_0_0_chr14_98710241_r 0 - -1.000000024177036
chr15 41486872 41487060 CCDS10096.1_cds_0_0_chr15_41486873_r 0 - -1.000000010161353
chr15 41673708 41673857 CCDS10097.1_cds_0_0_chr15_41673709_f 0 + -1.0000000102071147
chr15 41679161 41679250 CCDS10098.1_cds_0_0_chr15_41679162_r 0 - -1.0000000102084503
chr15 41826029 41826196 CCDS10101.1_cds_0_0_chr15_41826030_f 0 + -1.0000000102444224
chr16 142908 143003 CCDS10397.1_cds_0_0_chr16_142909_f 0 + -1.0000000000350024
chr16 179963 180135 CCDS10401.1_cds_0_0_chr16_179964_r 0 - -1.0000000000440783
chr16 244413 244681 CCDS10402.1_cds_0_0_chr16_244414_f 0 + -1.000000000059864
chr16 259268 259383 CCDS10403.1_cds_0_0_chr16_259269_r 0 - -1.0000000000635023
chr18 23786114 23786321 CCDS11891.1_cds_0_0_chr18_23786115_r 0 - -1.0000000058259177
chr18 59406881 59407046 CCDS11985.1_cds_0_0_chr18_59406882_f 0 + -1.0000000145504893
chr18 59455932 59456337 CCDS11986.1_cds_0_0_chr18_59455933_r 0 - -1.0000000145625034
chr18 59600586 59600754 CCDS11988.1_cds_0_0_chr18_59600587_f 0 + -1.0000000145979333
chr19 59068595 59069564 CCDS12866.1_cds_0_0_chr19_59068596_f 0 + -1.000000014467633
chr19 59236026 59236146 CCDS12872.1_cds_0_0_chr19_59236027_r 0 - -1.0000000145086418
chr19 59297998 59298008 CCDS12877.1_cds_0_0_chr19_59297999_f 0 + -1.0000000145238206
chr19 59302168 59302288 CCDS12878.1_cds_0_0_chr19_59302169_r 0 - -1.000000014524842
chr2 118288583 118288668 CCDS2120.1_cds_0_0_chr2_118288584_f 0 + -1.000000028972347
chr2 118394148 118394202 CCDS2121.1_cds_0_0_chr2_118394149_r 0 - -1.000000028998203
chr2 220190202 220190242 CCDS2441.1_cds_0_0_chr2_220190203_f 0 + -1.0000000539310452
chr2 220229609 220230869 CCDS2443.1_cds_0_0_chr2_220229610_r 0 - -1.0000000539406972
chr20 33330413 33330423 CCDS13249.1_cds_0_0_chr20_33330414_r 0 - -1.0000000081635967
chr20 33513606 33513792 CCDS13255.1_cds_0_0_chr20_33513607_f 0 + -1.0000000082084661
chr20 33579500 33579527 CCDS13256.1_cds_0_0_chr20_33579501_r 0 - -1.0000000082246054
chr20 33593260 33593348 CCDS13257.1_cds_0_0_chr20_33593261_f 0 + -1.0000000082279756
chr21 32707032 32707192 CCDS13614.1_cds_0_0_chr21_32707033_f 0 + -1.0000000080109124
chr21 32869641 32870022 CCDS13615.1_cds_0_0_chr21_32869642_r 0 - -1.00000000805074
chr21 33321040 33322012 CCDS13620.1_cds_0_0_chr21_33321041_f 0 + -1.000000008161301
chr21 33744994 33745040 CCDS13625.1_cds_0_0_chr21_33744995_r 0 - -1.0000000082651397
chr22 30120223 30120265 CCDS13897.1_cds_0_0_chr22_30120224_f 0 + -1.000000007377327
chr22 30160419 30160661 CCDS13898.1_cds_0_0_chr22_30160420_r 0 - -1.0000000073871722
chr22 30665273 30665360 CCDS13901.1_cds_0_0_chr22_30665274_f 0 + -1.0000000075108257
chr22 30939054 30939266 CCDS13903.1_cds_0_0_chr22_30939055_r 0 - -1.0000000075778828
chr5 131424298 131424460 CCDS4149.1_cds_0_0_chr5_131424299_f 0 + -1.0000000321896692
chr5 131556601 131556672 CCDS4151.1_cds_0_0_chr5_131556602_r 0 - -1.0000000322220741
chr5 131621326 131621419 CCDS4152.1_cds_0_0_chr5_131621327_f 0 + -1.0000000322379272
chr5 131847541 131847666 CCDS4155.1_cds_0_0_chr5_131847542_r 0 - -1.0000000322933338
chr6 108299600 108299744 CCDS5061.1_cds_0_0_chr6_108299601_r 0 - -1.0000000265257516
chr6 108594662 108594687 CCDS5063.1_cds_0_0_chr6_108594663_f 0 + -1.0000000265980211
chr6 108640045 108640151 CCDS5064.1_cds_0_0_chr6_108640046_r 0 - -1.0000000266091367
chr6 108722976 108723115 CCDS5067.1_cds_0_0_chr6_108722977_f 0 + -1.0000000266294489
chr7 113660517 113660685 CCDS5760.1_cds_0_0_chr7_113660518_f 0 + -1.0000000278387977
chr7 116512159 116512389 CCDS5771.1_cds_0_0_chr7_116512160_r 0 - -1.0000000285372486
chr7 116714099 116714152 CCDS5773.1_cds_0_0_chr7_116714100_f 0 + -1.0000000285867094
chr7 116945541 116945787 CCDS5774.1_cds_0_0_chr7_116945542_r 0 - -1.0000000286433965
chr8 118881131 118881317 CCDS6324.1_cds_0_0_chr8_118881132_r 0 - -1.0000000291174793
chr9 128764156 128764189 CCDS6914.1_cds_0_0_chr9_128764157_f 0 + -1.0000000315381223
chr9 128787519 128789136 CCDS6915.1_cds_0_0_chr9_128787520_r 0 - -1.0000000315438446
chr9 128882427 128882523 CCDS6917.1_cds_0_0_chr9_128882428_f 0 + -1.0000000315670903
chr9 128937229 128937445 CCDS6919.1_cds_0_0_chr9_128937230_r 0 - -1.0000000315805129
chrX 122745047 122745924 CCDS14606.1_cds_0_0_chrX_122745048_f 0 + -1.0000000300638658
chrX 152648964 152649196 CCDS14733.1_cds_0_0_chrX_152648965_r 0 - -1.000000037388213
chrX 152691446 152691471 CCDS14735.1_cds_0_0_chrX_152691447_f 0 + -1.0000000373986182
chrX 152694029 152694263 CCDS14736.1_cds_0_0_chrX_152694030_r 0 - -1.0000000373992508

0 comments on commit 06a9256

Please sign in to comment.