Mercurial > repos > fubar > toolfactory
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 |
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 |