diff toolfactory/rgToolFactory2.xml @ 126:def0f754ee1b draft

Uploaded
author fubar
date Fri, 26 Mar 2021 09:29:58 +0000
parents 0566e2ee9789
children 56aa8105000d
line wrap: on
line diff
--- a/toolfactory/rgToolFactory2.xml	Fri Mar 26 09:27:55 2021 +0000
+++ b/toolfactory/rgToolFactory2.xml	Fri Mar 26 09:29:58 2021 +0000
@@ -1,6 +1,32 @@
 <tool id="rgtf2" name="toolfactory" version="2.00" profile="16.04" >
   <description>Scripts into tools v2.0</description>
   <macros>
+      <xml name="singleText">
+            <param name="param_value" type="text" value="" label="Enter this parameter's default text value">
+          </param>
+      </xml>
+      <xml name="singleInt">
+            <param name="param_value" type="integer" value="" label="Enter this parameter's default integer value" >
+          </param>
+      </xml>
+      <xml name="singleFloat">
+            <param name="param_value" type="float" value="" label="Enter this parameter's default value">
+          </param>
+      </xml>
+     <xml name="singleBoolean">
+            <param name="param_value" type="boolean" value="" label="Enter this parameter's default value" />
+            <param name="truevalue" type="text" value="True" label="Command line value to emit when True" />
+            <param name="falsevalue" type="boolean" value="True" label="Command line value to emit when False" />
+      </xml>
+      <xml name="selectText">
+          <repeat name="selectTexts" title="Add each option to be presented in a text select box" min="2" default="2"
+             help="Each text added here will also have  a value to be emitted on the command line when the text is chosen">
+            <param name="select_text" type="text" value="" label="Enter the explanatory text the user will see for this choice" >
+          </param>
+          <param name="select_value" type="text" value="" label="Enter the value for the command line when the user selects this option">
+          </param>
+          </repeat>
+      </xml>
      <xml name="tool_metadata">
          <param name="tool_version" label="Tool Version - bump this to warn users trying to redo old analyses" type="text" value="0.01"
             help="If you change your script and regenerate the 'same' tool, you should inform Galaxy (and users) by changing (bumping is traditional) this number"/>
@@ -10,8 +36,7 @@
             value="**What it Does**"
              help="Supply user documentation to appear on the new tool form as reStructured text - http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html" >
                 <sanitizer>
-                    <valid initial="string.printable">
-                    </valid>
+                    <valid initial="string.printable" />
                     <mapping initial="none"/>
                 </sanitizer>
             </param>
@@ -29,8 +54,7 @@
                         <param name="bibtex" label="BibTex" type="text" area="true"
                             help="Supply a BibTex entry that should be cited when this tool is used in published research." value="" >
                             <sanitizer>
-                                <valid initial="string.printable">
-                                </valid>
+                                <valid initial="string.printable" />
                                 <mapping initial="none"/>
                             </sanitizer>
                         </param>
@@ -40,9 +64,9 @@
      </xml>
      <xml name="io">
      <section name="io" title="Input and output files" expanded="true">
-        <repeat name="history_inputs" title="zero or more input data files to pass as parameters to the executable."
+        <repeat name="history_inputs" title="zero or more input data files to pass on the command line to the executable."
              help="USE SMALL SAMPLES for the new tool's test. Prompts will form a history item selector as input for users of this new tool">
-            <param name="input_files" type="data" format="data" label="Select an input file from your history" optional="true" multiple="false"
+            <param name="input_files" type="data" format="data" label="Select an input file from your history" multiple="false"
                help=""/>
             <param name="input_formats" type="select" multiple="true" label="Select the datatype(s) that your tool/script accepts as input"
               help="If your datatype is not listed here, it has to be added in galaxy's datatypes_conf.xml" value="tabular">
@@ -50,32 +74,23 @@
                 <column name="value" index="0"/>
                </options>
             </param>
-            <param name="input_label" type="text" value="" label="This will become the user prompt for the form so please make it informative"
-             help="Note that '~~~' is an internal delimiter so must not appear in this text field - please work around this technical limitation" >
-            <sanitizer invalid_char="">
-              <valid initial="string.printable"> <remove value='~~~'/> </valid>
-              <mapping initial="none"/>
-            </sanitizer>
+            <param name="input_label" type="text" value="" label="This will become the user prompt for the form so please make it informative" >
             </param>
-            <param name="input_help" type="text" value="" label="This will become help text on the form."
-             help="Note that three consecutive ~ cannot be used in this text field - please work around this technical limitation">
-            <sanitizer invalid_char="">
-              <valid initial="string.printable"> <remove value='~~~'/> </valid>
-              <mapping initial="none"/>
-            </sanitizer>
+            <param name="input_help" type="text" value="" label="This will become help text on the form." >
             </param>
             <param name="input_CL" type="text" label="Positional: ordinal integer. Argparse: argument name. STDIN if the executable/script expects it"
               help="If you will pass positional parameters, enter the integer ordinal for this parameter. If Argparse style, '--' will be prepended or '-' if single character" value="">
             </param>
+            <param name="input_repeat" type="boolean" checked="False" truevalue="1"  falsevalue="0" label="Allow user to repeat this input as many times as needed." />
         </repeat>
         <repeat name="history_outputs" title="one or more new history items output by the executable to appear in the user history after the tool runs"
              help="The name will become a history item for users of the new tool you are making containing one of it's outputs">
             <param name="history_name" type="text" label="Name for this output to appear in new history" optional="false"
               help="No spaces! Argparse will also use this name as --[name]">
               <sanitizer invalid_char="_">
-                <valid initial="string.ascii_letters,string.digits">
+                <valid initial="string.ascii_letters,string.digits" >
                    <add value="_" />
-                 </valid>
+                </valid>
               </sanitizer>
             </param>
             <param name="history_format" type="select" multiple="false" label="Select the datatype for this output"
@@ -89,6 +104,26 @@
             <param name="history_test" type="text"  label="Test pass decision criterion for this output compared to test generation"
               help="Available options are diff:[lines], sim_size:[delta (integer) or delta_frac (float)" value="diff:0"/>
         </repeat>
+        <repeat name="collection_outputs" title="zero or more new history collections to appear in the user history after the tool runs"
+             help="A collection contains outputs not needed for downstream tools such as images and intermediate reports" default="0">
+            <param name="name" type="text" label="Name for new collection with all outputs not individually passed to history outputs"
+              help="No spaces! ">
+              <sanitizer invalid_char="_">
+                <valid initial="string.ascii_letters,string.digits" >
+                   <add value="_" />
+                </valid>
+              </sanitizer>
+            </param>
+            <param name="kind" type="select" multiple="false" label="Select the kind of collection for this output"
+              help="">
+                <option value="list" selected="true">List</option>
+                <option value="paired">Paired</option>
+                <option value="list:paired">List of paired</option>
+            </param>
+            <param name="label" type="text"  label="Label for this collection" help="" value=""/>
+            <param name="discover" type="text"  label="Discover datasets expression" help="__name_and_ext__ should catch all filenames with extensions" value="__name_and_ext__"/>
+        </repeat>
+
         </section>
      </xml>
      <xml name="additparam">
@@ -98,8 +133,7 @@
             <option value="yes" selected="true">Yes, allow user to edit all additional parameters on the generated tool form</option>
             <option value="no">No - use the fixed values for all additional parameters - no user editing</option>
         </param>
-
-        <repeat name="additional_parameters" title="zero or more settings to be set by the tool user and passed on the command line"
+        <repeat name="additional_parameters" title="zero or more command line settings for the user to pass to the executable"
              help="See examples below to see how these can be parsed by scripts in the various languages">
           <param name="param_name" type="text" value="" label="Choose the name for this parameter - MUST not be blank!">
             <sanitizer invalid_char="">
@@ -107,35 +141,37 @@
               <mapping initial="none"/>
             </sanitizer>
           </param>
+          <conditional name="ap_type">
           <param name="param_type" type="select" label="Select the type for this parameter">
-            <option value="text" selected="true">text</option>
-            <option value="integer">integer</option>
-            <option value="float">float</option>
-          </param>
-          <param name="param_value" type="text" value="" label="Enter this parameter's default value"
-            help="Note that '~~~' is an internal delimiter must not appear in this text field - please work around this technical limitation" >
-            <sanitizer invalid_char="">
-              <valid initial="string.printable"> <remove value='~~~'/> </valid>
-              <mapping initial="none"/>
-            </sanitizer>
+            <option value="text" selected="true">Text string</option>
+            <option value="integer">Integer</option>
+            <option value="float">Float</option>
+            <option value="boolean">Boolean</option>
+            <option value="selecttext">Select text string</option>
           </param>
-          <param name="param_label" type="text" value="" label="Enter this parameter's label for the form"
-             help="Note that '~~~' is an internal delimiter so must not appear in this text field - please work around this technical limitation" >
-            <sanitizer invalid_char="">
-              <valid initial="string.printable"> <remove value='~~~'/> </valid>
-              <mapping initial="none"/>
-            </sanitizer>
+          <when value = "text">
+              <expand macro="singleText" />
+          </when>
+          <when value = "integer">
+              <expand macro="singleInt" />
+          </when>
+          <when value = "float">
+              <expand macro="singleFloat" />
+          </when>
+          <when value = "boolean">
+              <expand macro="singleBoolean" />
+          </when>
+          <when value = "selecttext">
+              <expand macro="selectText" />
+          </when>
+          </conditional>
+          <param name="param_label" type="text" value="" label="Enter this parameter's label for the form">
           </param>
-          <param name="param_help" type="text" value="" label="Help for this parameter"
-             help="Note that three consecutive ~ cannot be used in this text field - please work around this technical limitation" >
-            <sanitizer invalid_char="">
-              <valid initial="string.printable"> <remove value='~~~'/> </valid>
-              <mapping initial="none"/>
-            </sanitizer>
+          <param name="param_help" type="text" value="" label="Help for this parameter">
           </param>
           <param name="param_CL" type="text" label="Positional ordinal | argparse argument name"
               help="Using positional parameters, enter the integer ordinal for this parameter on the command line. Using Argparse style, '--' will be prepended on the CL" value="" />
-          <param name="param_CLprefixed" type="text" label="Override the generated default argparse name prefix if not empty - eg ~~--foo if needed"
+          <param name="param_CLprefixed" type="text" label="Override the generated default argparse name prefix if not empty - eg ----foo if needed"
               help="Some targets like Planemo expect an unadorned action like 'test' before --galaxy_root." value="" />
         </repeat>
         </section>
@@ -146,7 +182,7 @@
    <requirement type="package" version="0.4.12">galaxyxml</requirement>
    <requirement type="package" version="0.14.0">bioblend</requirement>
    <requirement type="package" version="0.10.6">ephemeris</requirement>
-   <requirement type="package" version="0.74.1">planemo</requirement>
+   <requirement type="package" version="0.74.3">planemo</requirement>
 </requirements>
 
   <command ><![CDATA[
@@ -173,6 +209,7 @@
 --sysexe "$deps.usescript.scriptrunner"
     #end if
 --tool_name "$tool_name"  --user_email "$__user_email__" --citations "$citeme"  --parampass "$io_param.ppass.parampass"
+
    #if str($make.makeMode.make_Tool)!="runonly":
 --make_Tool "$make.makeMode.make_Tool"
 --tool_desc "$make.makeMode.tool_desc"
@@ -188,15 +225,40 @@
      #if str($io_param.ppass.addparam.edit_params) == "yes":
 --edit_additional_parameters
      #end if
-     #for apar in $io_param.ppass.addparam.additional_parameters:
---additional_parameters "$apar.param_name~~~$apar.param_value~~~$apar.param_label~~~$apar.param_help~~~$apar.param_type~~~$apar.param_CL~~~$apar.param_CLprefixed"
+     #for $apar in $io_param.ppass.addparam.additional_parameters:
+        #if $apar.ap_type.param_type=="selecttext":
+--selecttext_parameters '{"name":"$apar.param_name", "label":"$apar.param_label", "help":"$apar.param_help",
+"type":"$apar.ap_type.param_type","CL":"$apar.param_CL","override":"$apar.param_CLprefixed","value": [
+         #for $i,$st in enumerate($apar.ap_type.selectTexts):
+           "$st.select_value"
+           #if ($i < (len($apar.ap_type.selectTexts)-1)):
+           ,
+           #end if
+         #end for
+         ], "texts": [
+         #for $i,$st in enumerate($apar.ap_type.selectTexts):
+         "$st.select_text"
+          #if ($i < (len($apar.ap_type.selectTexts)-1)):
+           ,
+           #end if
+
+         #end for
+         ]
+         }'
+       #else:
+--additional_parameters '{"name": "$apar.param_name", "value": "$apar.ap_type.param_value", "label": "$apar.param_label", "help": "$apar.param_help",
+"type": "$apar.ap_type.param_type","CL": "$apar.param_CL","override": "$apar.param_CLprefixed" }'
+       #end if
      #end for
    #end if
      #for $intab in $io_param.ppass.io.history_inputs:
---input_files "$intab.input_files~~~$intab.input_CL~~~$intab.input_formats~~~$intab.input_label~~~$intab.input_help"
+--input_files '{"name": "$intab.input_files", "CL": "$intab.input_CL", "format": "$intab.input_formats", "label": "$intab.input_label", "help": "$intab.input_help", "repeat": "$intab.input_repeat"}'
      #end for
      #for $otab in $io_param.ppass.io.history_outputs:
---output_files "$otab.history_name~~~$otab.history_format~~~$otab.history_CL~~~$otab.history_test"
+--output_files '{"name": "$otab.history_name", "format": "$otab.history_format", "CL": "$otab.history_CL", "test": "$otab.history_test"}'
+     #end for
+     #for $collect in $io_param.ppass.io.collection_outputs:
+--collection '{"name": "$collect.name", "kind": "$collect.kind", "discover": "$collect.discover", "label": "$collect.label"}'
      #end for
 --galaxy_root "$__root_dir__"
 --tool_dir "$__tool_directory__"
@@ -250,7 +312,7 @@
     <section name="deps" title="Dependencies, optional script and script interpreter" expanded="true">
 
     <param name="packages" type="text" value="" label="Conda dependencies as package name[:version, name:version...]. These will always be available when this tool executes"
-    optional="false" help="Use =[ver] or :[ver] for specific version - 'bwa=0.17.0'. Default is latest. Will be used every time the tool is (re)run. Only Conda is currently supported"  />
+     help="Use =[ver] or :[ver] for specific version - 'bwa=0.17.0'. Default is latest. Will be used every time the tool is (re)run. Only Conda is currently supported"  />
 
     <conditional name="usescript">
         <param name="choosescript" type="select" display="radio" label="Supply a script for a dependency (e.g. python/R/bash) or a system executable such as Bash"
@@ -264,18 +326,12 @@
         </when>
         <when value="yes">
             <param name="scriptrunner" type="text" value=""   label="Interpreter for the script - eg bash or python. Can be one of the dependencies named above or a system executable"
-             help="Scripts are interpreted by the executable named here. Use bash for bash scripts, or a conda dependency such as R or Python for those scripts">
-            <sanitizer invalid_char="">
-                <valid initial="string.ascii_letters,string.digits">
-                    <add value="_"/>
-                </valid>
-            </sanitizer>
+              help="Scripts are interpreted by the executable named here. For conda r-base, 'Rscript --vanilla' or for conda planemo, 'planemo test' for example">
             </param>
             <param name="dynScript" type="text" area="True" value="" label="Script for executable above to interpret. It can be one of the Conda dependency names "
              help="Script must handle all i/o and parameters as specified below using the parameters and passing method chosen below">
               <sanitizer>
-                 <valid initial="string.printable">
-                 </valid>
+                 <valid initial="string.printable"/>
                  <mapping initial="none"/>
               </sanitizer>
              </param>
@@ -302,8 +358,8 @@
         </when>
     </conditional>
     </section>
-    <param name="cl_prefix" type="text" value="" label="Prefix for generated command line. Prepends generated i/o and parameter CL. Use override below to replace completely"
-            help="Text will replace generated executable/script elements. Sometimes required before i/o and parameters in the generated command line." />
+    <param name="cl_prefix" type="text" value="" label="Suffix for generated command line. Useful for bash post processing. Use override below to replace completely"
+            help="';' separated bash commands can be used here for post processing - added at end of autogenerated command line" />
     <conditional name="cover">
         <param name="commover" type="select" display="radio" label="Add Human wrought code to override the generated XML command and/or test section - DIY"
         help = "For arbitrary and artfull command lines. All i/o and parameters must be passed. Choose No unless needed. Not for the faint of heart">
@@ -318,16 +374,14 @@
             <param name="command_override" type="text" area="True" value="" label="Optional. Human wrought command element override XML/template - e.g. for bwa"
              help="For arbitrary and artfull command lines. All i/o and parameters must be passed. Leave blank unless needed. Not for the faint of heart">
               <sanitizer>
-                 <valid initial="string.printable">
-                 </valid>
+                 <valid initial="string.printable"/>
                  <mapping initial="none"/>
               </sanitizer>
              </param>
             <param name="test_override" type="text" area="True" value="" label="Optional. Human wrought test element override XML/template - e.g. for bwa"
              help="For arbitrary and artfull scripts. Leave blank unless needed. Not for the faint of heart">
               <sanitizer>
-                 <valid initial="string.printable">
-                 </valid>
+                 <valid initial="string.printable" />
                  <mapping initial="none"/>
               </sanitizer>
             </param>
@@ -339,7 +393,7 @@
           help="Installation in this Galaxy is optional" >
         <option value="generate" >Run to generate tests only. Should fail if dependencies needed.</option>
         <option value="gentest" selected="true">Test with planemo after generating.</option>
-        <option value="gentestinstall">Install in Galaxy after generation and testing. URLs and matching API keys are required for this step! </option>
+        <option value="gentestinstall">Install in this Galaxy after generation and testing. Must have local ToolShed as in the TF Docker container</option>
         </param>
        <when value="generate">
            <param name="galaxy_apikey" value="" type="hidden"  ></param>
@@ -359,32 +413,28 @@
             <param name="galaxy_url" type="text" value="http://localhost:8080" label="URL for the Galaxy server where the new tool should be installed"
              help="Default is localhost">
               <sanitizer>
-                 <valid initial="string.printable">
-                 </valid>
+                 <valid initial="string.printable" />
                  <mapping initial="none"/>
               </sanitizer>
             </param>
           <param name="galaxy_apikey" type="text" value="fakekey" label="API key for the Galaxy to install the new tool"
              help="Cut and paste from the admin user properties screen">
               <sanitizer>
-                 <valid initial="string.ascii_letters,string.digits">
-                 </valid>
+                 <valid initial="string.ascii_letters,string.digits" />
                  <mapping initial="none"/>
               </sanitizer>
             </param>
            <param name="toolshed_url" type="text" value="http://localhost:9009" label="URL for the Toolshed where the new tool should be installed"
              help="Default value is localhost:9009">
               <sanitizer>
-                 <valid initial="string.printable">
-                 </valid>
+                 <valid initial="string.printable" />
                  <mapping initial="none"/>
               </sanitizer>
             </param>
            <param name="toolshed_apikey" type="text" value="fakekey" label="API key for the local toolshed to use when installing the tool"
              help="Cut and paste from the admin user properties screen">
               <sanitizer>
-                 <valid initial="string.ascii_letters,string.digits">
-                 </valid>
+                 <valid initial="string.ascii_letters,string.digits" />
                  <mapping initial="none"/>
               </sanitizer>
             </param>
@@ -395,7 +445,7 @@
   </inputs>
   <outputs>
 
-    <data format="tgz" name="new_tool" label="${tool_name}_toolshed.tgz" >
+    <data format="toolshed.gz" name="new_tool" label="${tool_name}_toolshed.gz" >
         <filter>makeMode['make_Tool'] != "runonly"</filter>
     </data>
 
@@ -413,7 +463,7 @@
     <param name="input_help" value="help" />
     <param name="tool_name" value="pyrevpos" />
     <param name="parampass" value="positional" />
-    <param name="make_Tool" value="generate" />
+    <param name="make_Tool" value="gentest" />
     <param name="tool_version" value="0.01" />
     <param name="tool_desc" value="positional reverse" />
     <param name="help_text" value="help text goes here" />
@@ -512,6 +562,27 @@
       o.write('\n')
     o.close()
 
+R script to draw some plots - use a collection.
+
+::
+
+
+     \# note this script takes NO input because it generates random data
+    dir.create('plots')
+    for (i in 1:10) {
+        foo = runif(100)
+        bar = rnorm(100)
+        bar = foo + 0.05*bar
+        pdf(paste('plots/yet',i,"anotherplot.pdf",sep='_'))
+        plot(foo,bar,main=paste("Foo by Bar plot \#",i),col="maroon", pch=3,cex=0.6)
+        dev.off()
+        foo = data.frame(a=runif(100),b=runif(100),c=runif(100),d=runif(100),e=runif(100),f=runif(100))
+        bar = as.matrix(foo)
+        pdf(paste('plots/yet',i,"anotherheatmap.pdf",sep='_'))
+        heatmap(bar,main='Random Heatmap')
+        dev.off()
+    }
+
 
 
 Paper_
@@ -524,7 +595,7 @@
 
 .. _LGPL: http://www.gnu.org/copyleft/lesser.html
 .. _GTF:  https://github.com/fubar2/toolfactory
-.. _Paper: http://bioinformatics.oxfordjournals.org/cgi/reprint/bts573
+.. _Paper: https://academic.oup.com/bioinformatics/article/28/23/3139/192853
 
 
 </help>