Mercurial > repos > iuc > calculate_numeric_param
changeset 0:0e586762f97b draft default tip
"planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/calculate_numeric_param commit b8635afd6cef6704f21f08caf4ffa89e672a96f8"
author | iuc |
---|---|
date | Wed, 05 May 2021 15:03:08 +0000 |
parents | |
children | |
files | calculate_numeric_param.xml |
diffstat | 1 files changed, 134 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/calculate_numeric_param.xml Wed May 05 15:03:08 2021 +0000 @@ -0,0 +1,134 @@ +<tool name="Calculate numeric parameter value" id="calculate_numeric_param" version="0.1.0" profile="19.05" tool_type="expression"> + <description>from parameters</description> + <expression type="ecma5.1"> +{ + let s = ""; + for (const repeat of $job.components) { + s += repeat.param_type.component_value + s += repeat.arith + if (repeat.arith == "") { + break; + } + }; + let e; + if ($job.output_type == "integer") { + e = parseInt(eval(s)); + } else { + e = eval(s); + } + return {'output': e}; +} + </expression> + <inputs> + <repeat name="components" min="2"> + <conditional name="param_type"> + <param name="select_param_type" type="select" label="Choose the type of parameter for this field"> + <option value="integer">Integer Parameter</option> + <option value="float">Float Parameter</option> + </param> + <when value="integer"> + <param name="component_value" value="" type="integer" label="Enter integer for calculating the parameter"/> + </when> + <when value="float"> + <param name="component_value" value="" type="float" label="Enter float for calculating the parameter"/> + </when> + </conditional> + <param name='arith' type='select' label='Choose the arithmetic operator to apply'> + <option value="+">Addition (+)</option> + <option value="-">Subtraction (-)</option> + <option value="*">Multiplication (*)</option> + <option value="/">Division (/)</option> + <option value="**">Exponentiation (**)</option> + <option value="%">Modulus (%)</option> + <option value="">None (expression should end here)</option> + </param> + </repeat> + <param name='output_type' type='select' label='Choose whether the output should be an integer or a float.'> + <option value="integer">Integer</option> + <option value="float">Float</option> + </param> + </inputs> + <outputs> + <output type="float" name="float_param" from="output"> + <filter>output_type == 'float'</filter> + </output> + <output type="integer" name="integer_param" from="output"> + <filter>output_type == 'integer'</filter> + </output> + </outputs> + <tests> + <test> + <repeat name="components"> + <conditional name="param_type"> + <param name="select_param_type" value="integer"/> + <param name="component_value" value="1"/> + </conditional> + <param name="arith" value="+"/> + </repeat> + <repeat name="components"> + <conditional name="param_type"> + <param name="select_param_type" value="integer"/> + <param name="component_value" value="1"/> + </conditional> + <param name="arith" value=""/> + </repeat> + <param name="output_type" value="integer"/> + <output name="output"> + <assert_contents> + <has_line line="2"/> + </assert_contents> + </output> + </test> + <test> + <repeat name="components"> + <conditional name="param_type"> + <param name="select_param_type" value="float"/> + <param name="component_value" value="1.5"/> + </conditional> + <param name="arith" value="*"/> + </repeat> + <repeat name="components"> + <conditional name="param_type"> + <param name="select_param_type" value="float"/> + <param name="component_value" value="1.5"/> + </conditional> + <param name="arith" value=""/> + </repeat> + <param name="output_type" value="float"/> + <output name="output"> + <assert_contents> + <has_line line="2.25"/> + </assert_contents> + </output> + </test> + <test> + <repeat name="components"> + <conditional name="param_type"> + <param name="select_param_type" value="float"/> + <param name="component_value" value="1.5"/> + </conditional> + <param name="arith" value="*"/> + </repeat> + <repeat name="components"> + <conditional name="param_type"> + <param name="select_param_type" value="float"/> + <param name="component_value" value="1.5"/> + </conditional> + <param name="arith" value=""/> + </repeat> + <param name="output_type" value="integer"/> + <output name="output"> + <assert_contents> + <not_has_text text="2.25"/> + <has_line line="2"/> + </assert_contents> + </output> + </test> + </tests> + <help><![CDATA[ +This tool calculates an output (integer or float) parameter +from integer and float input parameters and specified simple +arithmetic operations (addition, subtraction, multiplication, +division, exponentiation, and modulus). + ]]></help> +</tool>