| 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 |