annotate fubar-galaxytoolfactory-cfcf6c9df5b7/README.txt @ 1:87613ace5113 draft

Uploaded
author fubar
date Sat, 11 Aug 2012 02:41:28 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
87613ace5113 Uploaded
fubar
parents:
diff changeset
1 # WARNING before you start
87613ace5113 Uploaded
fubar
parents:
diff changeset
2 # Install on a private Galaxy ONLY
87613ace5113 Uploaded
fubar
parents:
diff changeset
3 # Please NEVER on a public or production instance
87613ace5113 Uploaded
fubar
parents:
diff changeset
4
87613ace5113 Uploaded
fubar
parents:
diff changeset
5 *Short Story*
87613ace5113 Uploaded
fubar
parents:
diff changeset
6 This is an unusual Galaxy tool that generates very simple but potentially
87613ace5113 Uploaded
fubar
parents:
diff changeset
7 very useful local Galaxy tools that run the user supplied script (R, python, perl...) over a single input file.
87613ace5113 Uploaded
fubar
parents:
diff changeset
8 Whenever you run this tool, the ToolFactory, you should have prepared a script to paste into a text box,
87613ace5113 Uploaded
fubar
parents:
diff changeset
9 and a small test input example ready to select from your history to test your new script
87613ace5113 Uploaded
fubar
parents:
diff changeset
10
87613ace5113 Uploaded
fubar
parents:
diff changeset
11 If the script runs sucessfully, a new Galaxy tool that runs your script can be generated.
87613ace5113 Uploaded
fubar
parents:
diff changeset
12 The new tool is in the form of a special new Galaxy datatype - toolshed.gz - as the name suggests,
87613ace5113 Uploaded
fubar
parents:
diff changeset
13 it's an archive ready to upload to a Galaxy ToolShed as a new tool repository.
87613ace5113 Uploaded
fubar
parents:
diff changeset
14
87613ace5113 Uploaded
fubar
parents:
diff changeset
15 Once it's in a ToolShed, it can be installed into any local Galaxy server from
87613ace5113 Uploaded
fubar
parents:
diff changeset
16 the server administrative interface.
87613ace5113 Uploaded
fubar
parents:
diff changeset
17
87613ace5113 Uploaded
fubar
parents:
diff changeset
18 Once your new tool is installed, local users can run it - each time, the script that was supplied
87613ace5113 Uploaded
fubar
parents:
diff changeset
19 when it was built will be executed with the input chosen from the user's history. In other words,
87613ace5113 Uploaded
fubar
parents:
diff changeset
20 the tools you generate with the ToolFactory run just like any other Galaxy tool,
87613ace5113 Uploaded
fubar
parents:
diff changeset
21 but run your script every time.
87613ace5113 Uploaded
fubar
parents:
diff changeset
22
87613ace5113 Uploaded
fubar
parents:
diff changeset
23 *Reasons to read further*
87613ace5113 Uploaded
fubar
parents:
diff changeset
24
87613ace5113 Uploaded
fubar
parents:
diff changeset
25 If you use Galaxy to support your research;
87613ace5113 Uploaded
fubar
parents:
diff changeset
26
87613ace5113 Uploaded
fubar
parents:
diff changeset
27 You and fellow users are sometimes forced to take data out of Galaxy, process it with ugly
87613ace5113 Uploaded
fubar
parents:
diff changeset
28 little perl/awk/sed/R... scripts and put it back;
87613ace5113 Uploaded
fubar
parents:
diff changeset
29
87613ace5113 Uploaded
fubar
parents:
diff changeset
30 You do this when you can't do some transformation in Galaxy (the 90/10 rule);
87613ace5113 Uploaded
fubar
parents:
diff changeset
31
87613ace5113 Uploaded
fubar
parents:
diff changeset
32 You don't have enough developer resources for wrapping dozens of even relatively simple tools;
87613ace5113 Uploaded
fubar
parents:
diff changeset
33
87613ace5113 Uploaded
fubar
parents:
diff changeset
34 Your research and your institution would be far better off if those feral scripts were all tucked safely in
87613ace5113 Uploaded
fubar
parents:
diff changeset
35 your local toolshed and Galaxy histories.
87613ace5113 Uploaded
fubar
parents:
diff changeset
36
87613ace5113 Uploaded
fubar
parents:
diff changeset
37 *The good news* If it can be trivially scripted, it can be running safely in your
87613ace5113 Uploaded
fubar
parents:
diff changeset
38 local Galaxy via your own local toolshed in a few minutes - with functional tests.
87613ace5113 Uploaded
fubar
parents:
diff changeset
39
87613ace5113 Uploaded
fubar
parents:
diff changeset
40
87613ace5113 Uploaded
fubar
parents:
diff changeset
41 *Value proposition* The ToolFactory allows Galaxy to efficiently take over most of your lab's dark script matter,
87613ace5113 Uploaded
fubar
parents:
diff changeset
42 making it reproducible in Galaxy and shareable through the ToolShed.
87613ace5113 Uploaded
fubar
parents:
diff changeset
43
87613ace5113 Uploaded
fubar
parents:
diff changeset
44 That's what this tool does. You paste a simple script and the tool returns
87613ace5113 Uploaded
fubar
parents:
diff changeset
45 a new, real Galaxy tool, ready to be installed from the local toolshed to local servers.
87613ace5113 Uploaded
fubar
parents:
diff changeset
46 Scripts can be wrapped and online literally within minutes.
87613ace5113 Uploaded
fubar
parents:
diff changeset
47
87613ace5113 Uploaded
fubar
parents:
diff changeset
48 *To fully and safely exploit the awesome power* of this tool, Galaxy and the ToolShed,
87613ace5113 Uploaded
fubar
parents:
diff changeset
49 you should be a developer installing this tool on a private/personal/scratch local instance where you are an admin_user.
87613ace5113 Uploaded
fubar
parents:
diff changeset
50 Then, if you break it, you get to keep all the pieces
87613ace5113 Uploaded
fubar
parents:
diff changeset
51 see https://bitbucket.org/fubar/galaxytoolfactory/wiki/Home
87613ace5113 Uploaded
fubar
parents:
diff changeset
52
87613ace5113 Uploaded
fubar
parents:
diff changeset
53 ** Installation **
87613ace5113 Uploaded
fubar
parents:
diff changeset
54 This is a Galaxy tool. You can install it most conveniently using the administrative "Search and browse tool sheds" link.
87613ace5113 Uploaded
fubar
parents:
diff changeset
55 Find the Galaxy Test toolshed (not main) and search for the toolfactory repository.
87613ace5113 Uploaded
fubar
parents:
diff changeset
56 Open it and review the code and select the option to install it.
87613ace5113 Uploaded
fubar
parents:
diff changeset
57
87613ace5113 Uploaded
fubar
parents:
diff changeset
58 If you can't get the tool that way, the xml and py files here need to be copied into a new tools subdirectory such as tools/toolfactory
87613ace5113 Uploaded
fubar
parents:
diff changeset
59 Your tool_conf.xml needs a new entry pointing to the xml file - something like::
87613ace5113 Uploaded
fubar
parents:
diff changeset
60
87613ace5113 Uploaded
fubar
parents:
diff changeset
61 <section name="Tool building tools" id="toolbuilders">
87613ace5113 Uploaded
fubar
parents:
diff changeset
62 <tool file="toolfactory/rgToolFactory.xml"/>
87613ace5113 Uploaded
fubar
parents:
diff changeset
63 </section>
87613ace5113 Uploaded
fubar
parents:
diff changeset
64
87613ace5113 Uploaded
fubar
parents:
diff changeset
65 If not already there (I just added it to datatypes_conf.xml.sample), please add:
87613ace5113 Uploaded
fubar
parents:
diff changeset
66 <datatype extension="toolshed.gz" type="galaxy.datatypes.binary:Binary" mimetype="multipart/x-gzip" subclass="True" />
87613ace5113 Uploaded
fubar
parents:
diff changeset
67 to your local data_types_conf.xml.
87613ace5113 Uploaded
fubar
parents:
diff changeset
68
87613ace5113 Uploaded
fubar
parents:
diff changeset
69 Ensure that html sanitization is set to False and uncommented in universe_wsgi.ini
87613ace5113 Uploaded
fubar
parents:
diff changeset
70
87613ace5113 Uploaded
fubar
parents:
diff changeset
71 You'll have to restart the server for the new tool to be available.
87613ace5113 Uploaded
fubar
parents:
diff changeset
72
87613ace5113 Uploaded
fubar
parents:
diff changeset
73 Of course, R, python, perl etc are needed on your path if you want to test scripts using those interpreters.
87613ace5113 Uploaded
fubar
parents:
diff changeset
74 Adding new ones to this tool code should be easy enough. Please make suggestions as bitbucket issues and code.
87613ace5113 Uploaded
fubar
parents:
diff changeset
75 The HTML file code automatically shrinks R's bloated pdfs, and depends on ghostscript. The thumbnails require imagemagick .
87613ace5113 Uploaded
fubar
parents:
diff changeset
76
87613ace5113 Uploaded
fubar
parents:
diff changeset
77 * Restricted execution *
87613ace5113 Uploaded
fubar
parents:
diff changeset
78 The new tool factory tool will then be usable ONLY by admin users - people with IDs in admin_users in universe_wsgi.ini
87613ace5113 Uploaded
fubar
parents:
diff changeset
79 **Yes, that's right. ONLY admin_users can run this tool** Think about it for a moment. If allowed to run any
87613ace5113 Uploaded
fubar
parents:
diff changeset
80 arbitrary script on your Galaxy server, the only thing that would impede a miscreant bent on destroying all your
87613ace5113 Uploaded
fubar
parents:
diff changeset
81 Galaxy data would probably be lack of appropriate technical skills.
87613ace5113 Uploaded
fubar
parents:
diff changeset
82
87613ace5113 Uploaded
fubar
parents:
diff changeset
83 *What it does* This is a tool factory for simple scripts in python, R and perl currently.
87613ace5113 Uploaded
fubar
parents:
diff changeset
84 Functional tests are automatically generated. How cool is that.
87613ace5113 Uploaded
fubar
parents:
diff changeset
85
87613ace5113 Uploaded
fubar
parents:
diff changeset
86 LIMITED to simple scripts that read one input from the history.
87613ace5113 Uploaded
fubar
parents:
diff changeset
87 Optionally can write one new history dataset,
87613ace5113 Uploaded
fubar
parents:
diff changeset
88 and optionally collect any number of outputs into links on an autogenerated HTML
87613ace5113 Uploaded
fubar
parents:
diff changeset
89 index page for the user to navigate - useful if the script writes images and output files - pdf outputs
87613ace5113 Uploaded
fubar
parents:
diff changeset
90 are shown as thumbnails and R's bloated pdf's are shrunk with ghostscript so that and imagemagik need to
87613ace5113 Uploaded
fubar
parents:
diff changeset
91 be avaailable.
87613ace5113 Uploaded
fubar
parents:
diff changeset
92
87613ace5113 Uploaded
fubar
parents:
diff changeset
93 Generated tools can be edited and enhanced like any Galaxy tool, so start small and build up since
87613ace5113 Uploaded
fubar
parents:
diff changeset
94 a generated script gets you a serious leg up to a more complex one.
87613ace5113 Uploaded
fubar
parents:
diff changeset
95
87613ace5113 Uploaded
fubar
parents:
diff changeset
96 *What you do* You paste and run your script
87613ace5113 Uploaded
fubar
parents:
diff changeset
97 you fix the syntax errors and eventually it runs
87613ace5113 Uploaded
fubar
parents:
diff changeset
98 You can use the redo button and edit the script before
87613ace5113 Uploaded
fubar
parents:
diff changeset
99 trying to rerun it as you debug - it works pretty well.
87613ace5113 Uploaded
fubar
parents:
diff changeset
100
87613ace5113 Uploaded
fubar
parents:
diff changeset
101 Once the script works on some test data, you can
87613ace5113 Uploaded
fubar
parents:
diff changeset
102 generate a toolshed compatible gzip file
87613ace5113 Uploaded
fubar
parents:
diff changeset
103 containing your script ready to run as an ordinary Galaxy tool in a
87613ace5113 Uploaded
fubar
parents:
diff changeset
104 repository on your local toolshed. That means safe and largely automated installation in any
87613ace5113 Uploaded
fubar
parents:
diff changeset
105 production Galaxy configured to use your toolshed.
87613ace5113 Uploaded
fubar
parents:
diff changeset
106
87613ace5113 Uploaded
fubar
parents:
diff changeset
107 *Generated tool Security* Once you install a generated tool, it's just
87613ace5113 Uploaded
fubar
parents:
diff changeset
108 another tool - assuming the script is safe. They just run normally and their user cannot do anything unusually insecure
87613ace5113 Uploaded
fubar
parents:
diff changeset
109 but please, practice safe toolshed.
87613ace5113 Uploaded
fubar
parents:
diff changeset
110 Read the fucking code before you install any tool.
87613ace5113 Uploaded
fubar
parents:
diff changeset
111 Especially this one - it is really scary.
87613ace5113 Uploaded
fubar
parents:
diff changeset
112
87613ace5113 Uploaded
fubar
parents:
diff changeset
113 If you opt for an HTML output, you get all the script outputs arranged
87613ace5113 Uploaded
fubar
parents:
diff changeset
114 as a single Html history item - all output files are linked, thumbnails for all the pdfs.
87613ace5113 Uploaded
fubar
parents:
diff changeset
115 Ugly but really inexpensive.
87613ace5113 Uploaded
fubar
parents:
diff changeset
116
87613ace5113 Uploaded
fubar
parents:
diff changeset
117 Patches and suggestions welcome as bitbucket issues please?
87613ace5113 Uploaded
fubar
parents:
diff changeset
118
87613ace5113 Uploaded
fubar
parents:
diff changeset
119 long route to June 2012 product
87613ace5113 Uploaded
fubar
parents:
diff changeset
120 derived from an integrated script model
87613ace5113 Uploaded
fubar
parents:
diff changeset
121 called rgBaseScriptWrapper.py
87613ace5113 Uploaded
fubar
parents:
diff changeset
122 Note to the unwary:
87613ace5113 Uploaded
fubar
parents:
diff changeset
123 This tool allows arbitrary scripting on your Galaxy as the Galaxy user
87613ace5113 Uploaded
fubar
parents:
diff changeset
124 There is nothing stopping a malicious user doing whatever they choose
87613ace5113 Uploaded
fubar
parents:
diff changeset
125 Extremely dangerous!!
87613ace5113 Uploaded
fubar
parents:
diff changeset
126 Totally insecure. So, trusted users only
87613ace5113 Uploaded
fubar
parents:
diff changeset
127
87613ace5113 Uploaded
fubar
parents:
diff changeset
128
87613ace5113 Uploaded
fubar
parents:
diff changeset
129
87613ace5113 Uploaded
fubar
parents:
diff changeset
130
87613ace5113 Uploaded
fubar
parents:
diff changeset
131 copyright ross lazarus (ross stop lazarus at gmail stop com) May 2012
87613ace5113 Uploaded
fubar
parents:
diff changeset
132
87613ace5113 Uploaded
fubar
parents:
diff changeset
133 all rights reserved
87613ace5113 Uploaded
fubar
parents:
diff changeset
134 Licensed under the LGPL if you want to improve it, feel free https://bitbucket.org/fubar/galaxytoolfactory/wiki/Home
87613ace5113 Uploaded
fubar
parents:
diff changeset
135
87613ace5113 Uploaded
fubar
parents:
diff changeset
136 Material for our more enthusiastic and voracious readers continues below - we salute you.
87613ace5113 Uploaded
fubar
parents:
diff changeset
137
87613ace5113 Uploaded
fubar
parents:
diff changeset
138 **Motivation** Simple transformation, filtering or reporting scripts get written, run and lost every day in most busy labs
87613ace5113 Uploaded
fubar
parents:
diff changeset
139 - even ours where Galaxy is in use. This 'dark script matter' is pervasive and generally not reproducible.
87613ace5113 Uploaded
fubar
parents:
diff changeset
140
87613ace5113 Uploaded
fubar
parents:
diff changeset
141 **Benefits** For our group, this allows Galaxy to fill that important dark script gap - all those "small" bioinformatics
87613ace5113 Uploaded
fubar
parents:
diff changeset
142 tasks. Once a user has a working R (or python or perl) script that does something Galaxy cannot currently do (eg transpose a
87613ace5113 Uploaded
fubar
parents:
diff changeset
143 tabular file) and takes parameters the way Galaxy supplies them (see example below), they:
87613ace5113 Uploaded
fubar
parents:
diff changeset
144
87613ace5113 Uploaded
fubar
parents:
diff changeset
145 1. Install the tool factory on a personal private instance
87613ace5113 Uploaded
fubar
parents:
diff changeset
146
87613ace5113 Uploaded
fubar
parents:
diff changeset
147 2. Upload a small test data set
87613ace5113 Uploaded
fubar
parents:
diff changeset
148
87613ace5113 Uploaded
fubar
parents:
diff changeset
149 3. Paste the script into the 'script' text box and iteratively run the insecure tool on test data until it works right -
87613ace5113 Uploaded
fubar
parents:
diff changeset
150 there is absolutely no reason to do this anywhere other than on a personal private instance.
87613ace5113 Uploaded
fubar
parents:
diff changeset
151
87613ace5113 Uploaded
fubar
parents:
diff changeset
152 4. Once it works right, set the 'Generate toolshed gzip' option and run it again.
87613ace5113 Uploaded
fubar
parents:
diff changeset
153
87613ace5113 Uploaded
fubar
parents:
diff changeset
154 5. A toolshed style gzip appears ready to upload and install like any other Toolshed entry.
87613ace5113 Uploaded
fubar
parents:
diff changeset
155
87613ace5113 Uploaded
fubar
parents:
diff changeset
156 6. Upload the new tool to the toolshed
87613ace5113 Uploaded
fubar
parents:
diff changeset
157
87613ace5113 Uploaded
fubar
parents:
diff changeset
158 7. Ask the local admin to check the new tool to confirm it's not evil and install it in the local production galaxy
87613ace5113 Uploaded
fubar
parents:
diff changeset
159
87613ace5113 Uploaded
fubar
parents:
diff changeset
160 **Simple examples on the tool form**
87613ace5113 Uploaded
fubar
parents:
diff changeset
161
87613ace5113 Uploaded
fubar
parents:
diff changeset
162 A simple Rscript "filter" showing how the command line parameters can be handled, takes an input file,
87613ace5113 Uploaded
fubar
parents:
diff changeset
163 does something (transpose in this case) and writes the results to a new tabular file::
87613ace5113 Uploaded
fubar
parents:
diff changeset
164
87613ace5113 Uploaded
fubar
parents:
diff changeset
165 # transpose a tabular input file and write as a tabular output file
87613ace5113 Uploaded
fubar
parents:
diff changeset
166 ourargs = commandArgs(TRUE)
87613ace5113 Uploaded
fubar
parents:
diff changeset
167 inf = ourargs[1]
87613ace5113 Uploaded
fubar
parents:
diff changeset
168 outf = ourargs[2]
87613ace5113 Uploaded
fubar
parents:
diff changeset
169 inp = read.table(inf,head=F,row.names=NULL,sep='\t')
87613ace5113 Uploaded
fubar
parents:
diff changeset
170 outp = t(inp)
87613ace5113 Uploaded
fubar
parents:
diff changeset
171 write.table(outp,outf, quote=FALSE, sep="\t",row.names=F,col.names=F)
87613ace5113 Uploaded
fubar
parents:
diff changeset
172
87613ace5113 Uploaded
fubar
parents:
diff changeset
173 Calculate a multiple test adjusted p value from a column of p values - for this script to be useful,
87613ace5113 Uploaded
fubar
parents:
diff changeset
174 it needs the right column for the input to be specified in the code for the
87613ace5113 Uploaded
fubar
parents:
diff changeset
175 given input file type(s) specified when the tool is generated ::
87613ace5113 Uploaded
fubar
parents:
diff changeset
176
87613ace5113 Uploaded
fubar
parents:
diff changeset
177 # use p.adjust - assumes a HEADER row and column 1 - please fix for any real use
87613ace5113 Uploaded
fubar
parents:
diff changeset
178 column = 1 # adjust if necessary for some other kind of input
87613ace5113 Uploaded
fubar
parents:
diff changeset
179 fdrmeth = 'BH'
87613ace5113 Uploaded
fubar
parents:
diff changeset
180 ourargs = commandArgs(TRUE)
87613ace5113 Uploaded
fubar
parents:
diff changeset
181 inf = ourargs[1]
87613ace5113 Uploaded
fubar
parents:
diff changeset
182 outf = ourargs[2]
87613ace5113 Uploaded
fubar
parents:
diff changeset
183 inp = read.table(inf,head=T,row.names=NULL,sep='\t')
87613ace5113 Uploaded
fubar
parents:
diff changeset
184 p = inp[,column]
87613ace5113 Uploaded
fubar
parents:
diff changeset
185 q = p.adjust(p,method=fdrmeth)
87613ace5113 Uploaded
fubar
parents:
diff changeset
186 newval = paste(fdrmeth,'p-value',sep='_')
87613ace5113 Uploaded
fubar
parents:
diff changeset
187 q = data.frame(q)
87613ace5113 Uploaded
fubar
parents:
diff changeset
188 names(q) = newval
87613ace5113 Uploaded
fubar
parents:
diff changeset
189 outp = cbind(inp,newval=q)
87613ace5113 Uploaded
fubar
parents:
diff changeset
190 write.table(outp,outf, quote=FALSE, sep="\t",row.names=F,col.names=T)
87613ace5113 Uploaded
fubar
parents:
diff changeset
191
87613ace5113 Uploaded
fubar
parents:
diff changeset
192
87613ace5113 Uploaded
fubar
parents:
diff changeset
193
87613ace5113 Uploaded
fubar
parents:
diff changeset
194 Another Rscript example without any input file - generates a random heatmap pdf - you must make sure the option to create an HTML output file is
87613ace5113 Uploaded
fubar
parents:
diff changeset
195 turned on for this to work. The heatmap will be presented as a thumbnail linked to the pdf in the resulting HTML page::
87613ace5113 Uploaded
fubar
parents:
diff changeset
196
87613ace5113 Uploaded
fubar
parents:
diff changeset
197 # note this script takes NO input or output because it generates random data
87613ace5113 Uploaded
fubar
parents:
diff changeset
198 foo = data.frame(a=runif(100),b=runif(100),c=runif(100),d=runif(100),e=runif(100),f=runif(100))
87613ace5113 Uploaded
fubar
parents:
diff changeset
199 bar = as.matrix(foo)
87613ace5113 Uploaded
fubar
parents:
diff changeset
200 pdf( "heattest.pdf" )
87613ace5113 Uploaded
fubar
parents:
diff changeset
201 heatmap(bar,main='Random Heatmap')
87613ace5113 Uploaded
fubar
parents:
diff changeset
202 dev.off()
87613ace5113 Uploaded
fubar
parents:
diff changeset
203
87613ace5113 Uploaded
fubar
parents:
diff changeset
204 A Python example that reverses each row of a tabular file. You'll need to remove the leading spaces for this to work if cut
87613ace5113 Uploaded
fubar
parents:
diff changeset
205 and pasted into the script box. Note that you can already do this in Galaxy by setting up the cut columns tool with the
87613ace5113 Uploaded
fubar
parents:
diff changeset
206 correct number of columns in reverse order,but this script will work for any number of columns so is completely generic::
87613ace5113 Uploaded
fubar
parents:
diff changeset
207
87613ace5113 Uploaded
fubar
parents:
diff changeset
208 # reverse order of columns in a tabular file
87613ace5113 Uploaded
fubar
parents:
diff changeset
209 import sys
87613ace5113 Uploaded
fubar
parents:
diff changeset
210 inp = sys.argv[1]
87613ace5113 Uploaded
fubar
parents:
diff changeset
211 outp = sys.argv[2]
87613ace5113 Uploaded
fubar
parents:
diff changeset
212 i = open(inp,'r')
87613ace5113 Uploaded
fubar
parents:
diff changeset
213 o = open(outp,'w')
87613ace5113 Uploaded
fubar
parents:
diff changeset
214 for row in i:
87613ace5113 Uploaded
fubar
parents:
diff changeset
215 rs = row.rstrip().split('\t')
87613ace5113 Uploaded
fubar
parents:
diff changeset
216 rs.reverse()
87613ace5113 Uploaded
fubar
parents:
diff changeset
217 o.write('\t'.join(rs))
87613ace5113 Uploaded
fubar
parents:
diff changeset
218 o.write('\n')
87613ace5113 Uploaded
fubar
parents:
diff changeset
219 i.close()
87613ace5113 Uploaded
fubar
parents:
diff changeset
220 o.close()
87613ace5113 Uploaded
fubar
parents:
diff changeset
221
87613ace5113 Uploaded
fubar
parents:
diff changeset
222
87613ace5113 Uploaded
fubar
parents:
diff changeset
223 **Attribution** Copyright Ross Lazarus (ross period lazarus at gmail period com) May 2012
87613ace5113 Uploaded
fubar
parents:
diff changeset
224
87613ace5113 Uploaded
fubar
parents:
diff changeset
225 All rights reserved.
87613ace5113 Uploaded
fubar
parents:
diff changeset
226
87613ace5113 Uploaded
fubar
parents:
diff changeset
227 Licensed under the LGPL
87613ace5113 Uploaded
fubar
parents:
diff changeset
228
87613ace5113 Uploaded
fubar
parents:
diff changeset
229
87613ace5113 Uploaded
fubar
parents:
diff changeset
230 **Obligatory screenshot**
87613ace5113 Uploaded
fubar
parents:
diff changeset
231
87613ace5113 Uploaded
fubar
parents:
diff changeset
232 http://bitbucket.org/fubar/galaxytoolmaker/src/fda8032fe989/images/dynamicScriptTool.png
87613ace5113 Uploaded
fubar
parents:
diff changeset
233