| 
32
 | 
     1 *WARNING before you start*
 | 
| 
 | 
     2 
 | 
| 
 | 
     3  Install this tool on a private Galaxy ONLY
 | 
| 
 | 
     4  Please NEVER on a public or production instance
 | 
| 
 | 
     5  
 | 
| 
 | 
     6 Updated august 2014 by John Chilton adding citation support
 | 
| 
 | 
     7 
 | 
| 
 | 
     8 Updated august 8 2014 to fix bugs reported by Marius van den Beek
 | 
| 
 | 
     9 
 | 
| 
 | 
    10 Please cite the resource at
 | 
| 
 | 
    11 http://bioinformatics.oxfordjournals.org/cgi/reprint/bts573?ijkey=lczQh1sWrMwdYWJ&keytype=ref
 | 
| 
 | 
    12 if you use this tool in your published work.
 | 
| 
 | 
    13 
 | 
| 
 | 
    14 **Short Story**
 | 
| 
 | 
    15 
 | 
| 
 | 
    16 This is an unusual Galaxy tool capable of generating new Galaxy tools.
 | 
| 
 | 
    17 It works by exposing *unrestricted* and therefore extremely dangerous scripting
 | 
| 
 | 
    18 to all designated administrators of the host Galaxy server, allowing them to
 | 
| 
 | 
    19 run scripts in R, python, sh and perl over multiple selected input data sets,
 | 
| 
 | 
    20 writing a single new data set as output.
 | 
| 
 | 
    21 
 | 
| 
 | 
    22 *You have a working r/python/perl/bash script or any executable with positional or argparse style parameters*
 | 
| 
 | 
    23 
 | 
| 
 | 
    24 It can be turned into an ordinary Galaxy tool in minutes, using a Galaxy tool.
 | 
| 
 | 
    25 
 | 
| 
 | 
    26 
 | 
| 
 | 
    27 **Automated generation of new Galaxy tools for installation into any Galaxy**
 | 
| 
 | 
    28 
 | 
| 
 | 
    29 A test is generated using small sample test data inputs and parameter settings you supply.
 | 
| 
 | 
    30 Once the test case outputs have been produced, they can be used to build a
 | 
| 
 | 
    31 new Galaxy tool. The supplied script or executable is baked as a requirement
 | 
| 
 | 
    32 into a new, ordinary Galaxy tool, fully workflow compatible out of the box.
 | 
| 
 | 
    33 Generated tools are installed via a tool shed by an administrator
 | 
| 
 | 
    34 and work exactly like all other Galaxy tools for your users.
 | 
| 
 | 
    35 
 | 
| 
 | 
    36 **More Detail**
 | 
| 
 | 
    37 
 | 
| 
 | 
    38 To use the ToolFactory, you should have prepared a script to paste into a
 | 
| 
 | 
    39 text box, or have a package in mind and a small test input example ready to select from your history
 | 
| 
 | 
    40 to test your new script.
 | 
| 
 | 
    41 
 | 
| 
 | 
    42 ```planemo test rgToolFactory2.xml --galaxy_root ~/galaxy --test_data ~/galaxy/tools/tool_makers/toolfactory/test-data``` works for me
 | 
| 
 | 
    43 
 | 
| 
 | 
    44 There is an example in each scripting language on the Tool Factory form. You
 | 
| 
 | 
    45 can just cut and paste these to try it out - remember to select the right
 | 
| 
 | 
    46 interpreter please. You'll also need to create a small test data set using
 | 
| 
 | 
    47 the Galaxy history add new data tool.
 | 
| 
 | 
    48 
 | 
| 
 | 
    49 If the script fails somehow, use the "redo" button on the tool output in
 | 
| 
 | 
    50 your history to recreate the form complete with broken script. Fix the bug
 | 
| 
 | 
    51 and execute again. Rinse, wash, repeat.
 | 
| 
 | 
    52 
 | 
| 
 | 
    53 Once the script runs sucessfully, a new Galaxy tool that runs your script
 | 
| 
 | 
    54 can be generated. Select the "generate" option and supply some help text and
 | 
| 
 | 
    55 names. The new tool will be generated in the form of a new Galaxy datatype
 | 
| 
 | 
    56 *toolshed.gz* - as the name suggests, it's an archive ready to upload to a
 | 
| 
 | 
    57 Galaxy ToolShed as a new tool repository.
 | 
| 
 | 
    58 
 | 
| 
 | 
    59 Once it's in a ToolShed, it can be installed into any local Galaxy server
 | 
| 
 | 
    60 from the server administrative interface.
 | 
| 
 | 
    61 
 | 
| 
 | 
    62 Once the new tool is installed, local users can run it - each time, the script
 | 
| 
 | 
    63 that was supplied when it was built will be executed with the input chosen
 | 
| 
 | 
    64 from the user's history. In other words, the tools you generate with the
 | 
| 
 | 
    65 ToolFactory run just like any other Galaxy tool,but run your script every time.
 | 
| 
 | 
    66 
 | 
| 
 | 
    67 Tool factory tools are perfect for workflow components. One input, one output,
 | 
| 
 | 
    68 no variables.
 | 
| 
 | 
    69 
 | 
| 
 | 
    70 *To fully and safely exploit the awesome power* of this tool,
 | 
| 
 | 
    71 Galaxy and the ToolShed, you should be a developer installing this
 | 
| 
 | 
    72 tool on a private/personal/scratch local instance where you are an
 | 
| 
 | 
    73 admin_user. Then, if you break it, you get to keep all the pieces see
 | 
| 
 | 
    74 https://bitbucket.org/fubar/galaxytoolfactory/wiki/Home
 | 
| 
 | 
    75 
 | 
| 
 | 
    76 **Installation**
 | 
| 
 | 
    77 This is a Galaxy tool. You can install it most conveniently using the
 | 
| 
 | 
    78 administrative "Search and browse tool sheds" link. Find the Galaxy Main
 | 
| 
 | 
    79 toolshed at https://toolshed.g2.bx.psu.edu/ and search for the toolfactory
 | 
| 
 | 
    80 repository. Open it and review the code and select the option to install it.
 | 
| 
 | 
    81 
 | 
| 
 | 
    82 If you can't get the tool that way, the xml and py files here need to be
 | 
| 
 | 
    83 copied into a new tools
 | 
| 
 | 
    84 subdirectory such as tools/toolfactory Your tool_conf.xml needs a new entry
 | 
| 
 | 
    85 pointing to the xml
 | 
| 
 | 
    86 file - something like::
 | 
| 
 | 
    87 
 | 
| 
 | 
    88   <section name="Tool building tools" id="toolbuilders">
 | 
| 
 | 
    89     <tool file="toolfactory/rgToolFactory.xml"/>
 | 
| 
 | 
    90   </section>
 | 
| 
 | 
    91 
 | 
| 
 | 
    92 If not already there,
 | 
| 
 | 
    93 please add:
 | 
| 
 | 
    94 <datatype extension="toolshed.gz" type="galaxy.datatypes.binary:Binary"
 | 
| 
 | 
    95 mimetype="multipart/x-gzip" subclass="True" />
 | 
| 
 | 
    96 to your local data_types_conf.xml.
 | 
| 
 | 
    97 
 | 
| 
 | 
    98 
 | 
| 
 | 
    99 **Restricted execution**
 | 
| 
 | 
   100 
 | 
| 
 | 
   101 The tool factory tool itself will then be usable ONLY by admin users -
 | 
| 
 | 
   102 people with IDs in admin_users in universe_wsgi.ini **Yes, that's right. ONLY
 | 
| 
 | 
   103 admin_users can run this tool** Think about it for a moment. If allowed to
 | 
| 
 | 
   104 run any arbitrary script on your Galaxy server, the only thing that would
 | 
| 
 | 
   105 impede a miscreant bent on destroying all your Galaxy data would probably
 | 
| 
 | 
   106 be lack of appropriate technical skills.
 | 
| 
 | 
   107 
 | 
| 
 | 
   108 **What it does** 
 | 
| 
 | 
   109 
 | 
| 
 | 
   110 This is a tool factory for simple scripts in python, R and
 | 
| 
 | 
   111 perl currently. Functional tests are automatically generated. How cool is that.
 | 
| 
 | 
   112 
 | 
| 
 | 
   113 LIMITED to simple scripts that read one input from the history. Optionally can
 | 
| 
 | 
   114 write one new history dataset, and optionally collect any number of outputs
 | 
| 
 | 
   115 into links on an autogenerated HTML index page for the user to navigate -
 | 
| 
 | 
   116 useful if the script writes images and output files - pdf outputs are shown
 | 
| 
 | 
   117 as thumbnails and R's bloated pdf's are shrunk with ghostscript so that and
 | 
| 
 | 
   118 imagemagik need to be available.
 | 
| 
 | 
   119 
 | 
| 
 | 
   120 Generated tools can be edited and enhanced like any Galaxy tool, so start
 | 
| 
 | 
   121 small and build up since a generated script gets you a serious leg up to a
 | 
| 
 | 
   122 more complex one.
 | 
| 
 | 
   123 
 | 
| 
 | 
   124 **What you do**
 | 
| 
 | 
   125 
 | 
| 
 | 
   126 You paste and run your script, you fix the syntax errors and
 | 
| 
 | 
   127 eventually it runs. You can use the redo button and edit the script before
 | 
| 
 | 
   128 trying to rerun it as you debug - it works pretty well.
 | 
| 
 | 
   129 
 | 
| 
 | 
   130 Once the script works on some test data, you can generate a toolshed compatible
 | 
| 
 | 
   131 gzip file containing your script ready to run as an ordinary Galaxy tool in
 | 
| 
 | 
   132 a repository on your local toolshed. That means safe and largely automated
 | 
| 
 | 
   133 installation in any production Galaxy configured to use your toolshed.
 | 
| 
 | 
   134 
 | 
| 
 | 
   135 **Generated tool Security**
 | 
| 
 | 
   136 
 | 
| 
 | 
   137 Once you install a generated tool, it's just
 | 
| 
 | 
   138 another tool - assuming the script is safe. They just run normally and their
 | 
| 
 | 
   139 user cannot do anything unusually insecure but please, practice safe toolshed.
 | 
| 
 | 
   140 Read the code before you install any tool. Especially this one - it is really scary.
 | 
| 
 | 
   141 
 | 
| 
 | 
   142 **Send Code**
 | 
| 
 | 
   143 
 | 
| 
 | 
   144 Patches and suggestions welcome as bitbucket issues please?
 | 
| 
 | 
   145 
 | 
| 
 | 
   146 **Attribution**
 | 
| 
 | 
   147 
 | 
| 
 | 
   148 Creating re-usable tools from scripts: The Galaxy Tool Factory
 | 
| 
 | 
   149 Ross Lazarus; Antony Kaspi; Mark Ziemann; The Galaxy Team
 | 
| 
 | 
   150 Bioinformatics 2012; doi: 10.1093/bioinformatics/bts573
 | 
| 
 | 
   151 
 | 
| 
 | 
   152 http://bioinformatics.oxfordjournals.org/cgi/reprint/bts573?ijkey=lczQh1sWrMwdYWJ&keytype=ref
 | 
| 
 | 
   153 
 | 
| 
 | 
   154 **Licensing**
 | 
| 
 | 
   155 
 | 
| 
 | 
   156 Copyright Ross Lazarus 2010
 | 
| 
 | 
   157 ross lazarus at g mail period com
 | 
| 
 | 
   158 
 | 
| 
 | 
   159 All rights reserved.
 | 
| 
 | 
   160 
 | 
| 
 | 
   161 Licensed under the LGPL
 | 
| 
 | 
   162 
 | 
| 
 | 
   163 **Obligatory screenshot**
 | 
| 
 | 
   164 
 | 
| 
 | 
   165 http://bitbucket.org/fubar/galaxytoolmaker/src/fda8032fe989/images/dynamicScriptTool.png
 | 
| 
 | 
   166 
 |