annotate fubar-galaxytoolfactory-2e68c2a22b43/README.txt @ 2:b55b59435fb1 draft

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