annotate DockerToolFactory.xml @ 3:477eac6c4cea

Fix bioconductor package installation.
author mvdbeek
date Wed, 03 Dec 2014 01:47:58 +0100
parents 7e0392d4531c
children de4889098f45
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
1 <tool id="rgTF" name="Docker Tool Factory" version="0.1">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
2 <description>Makes scripts into tools using Docker</description>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
3 <requirements>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
4 <requirement type="package" version="9.10">ghostscript</requirement>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
5 <requirement type="package" version="1.3.18">graphicsmagick</requirement>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
6 <requirement type="package" version="0.4.0">docker-py</requirement>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
7 </requirements>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
8 <command interpreter="python">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
9 DockerToolFactory.py --script_path "$runme" --interpreter "$interpreter"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
10 --tool_name "$tool_name" --user_email "$__user_email__"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
11 #if $make_TAB.value=="yes":
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
12 --output_tab "$tab_file"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
13 #end if
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
14 #if $makeMode.make_Tool=="yes":
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
15 --output_format "$out_format"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
16 --make_Tool "$makeMode.make_Tool"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
17 --tool_desc "$makeMode.tool_desc"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
18 --tool_version "$makeMode.tool_version"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
19 --new_tool "$new_tool"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
20 --help_text "$helpme"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
21 #if $make_HTML.value=="yes":
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
22 --include_dependencies "${makeMode.include_deps}"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
23 #end if
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
24 #end if
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
25 #if $make_HTML.value=="yes":
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
26 --output_dir "$html_file.files_path" --output_html "$html_file" --make_HTML "yes"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
27 #else:
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
28 --output_dir "."
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
29 #end if
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
30 #if $additional_parameters != 'None':
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
31 #for i in $additional_parameters:
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
32 --additional_parameters
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
33 "$i.param_name, $i.param_value"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
34 #end for
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
35 #end if
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
36 #if $input_files != 'None':
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
37 --input_tab
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
38 #for i in $input_files:
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
39 $i.input
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
40 #end for
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
41 #for i in $input_files:
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
42 --input_format
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
43 #if str($i.in_format) == "None":
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
44 "Any"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
45 #else
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
46 "$i.in_format"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
47 #end if
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
48 #end for
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
49 #end if
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
50 </command>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
51 <inputs>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
52 <repeat name="input_files" title="Select input files">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
53 <param name="input" type="data" label="Select an input file from your history" optional="true" size="120"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
54 help="Most scripts will need an input - your script MUST be ready for whatever format you choose"/>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
55 <param name="in_format" type="select" optional="true" multiple="true" label="Optional: Select the allowed input datatype(s) for your tool/script">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
56 <options from_parameter="tool.app.datatypes_registry.upload_file_formats">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
57 <column name="value" index="0"/>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
58 </options>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
59 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
60 </repeat>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
61 <repeat name="additional_parameters" title="Set additional parameters">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
62 <param name="param_name" type="text" value="parameter_name" label="Choose a parameter name" size="20">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
63 <sanitizer invalid_char="">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
64 <valid initial="string.letters,string.digits"><add value="@_."/></valid>>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
65 </sanitizer>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
66 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
67 <param name="param_value" type="text" value="parameter_value" label="Enter a parameter value" size="50">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
68 <sanitizer>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
69 <valid initial="string.printable">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
70 </valid>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
71 <mapping initial="none"/>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
72 </sanitizer>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
73 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
74 </repeat>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
75 <param name="tool_name" type="text" value="My dynamic script" label="New tool ID and title for outputs" size="60"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
76 help="This will become the toolshed repository name so please choose thoughtfully to avoid namespace clashes with other tool writers">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
77 <sanitizer invalid_char="">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
78 <valid initial="string.letters,string.digits"/>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
79 </sanitizer>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
80 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
81 <conditional name="makeMode">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
82 <param name="make_Tool" type="select" label="Create a tar.gz file ready for local toolshed entry" help="Ready to deploy securely!" size="60">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
83 <option value="yes">Generate a Galaxy ToolShed compatible toolshed.gz</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
84 <option value="" selected="true">No. Just run the script please</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
85 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
86 <when value = "yes">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
87 <param name="tool_version" label="Tool Version - bump this to warn users trying to redo old analyses" type="text" value="0.01"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
88 help="If you change your script and regenerate the 'same' tool, you should inform Galaxy (and users) by changing (bumping is traditional) this number"/>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
89 <param name="tool_desc" label="Tool Description" type="text" value="" size="40"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
90 help="Supply a brief tool description for the Galaxy tool menu entry (optional - appears after the tool name)" />
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
91 <param name="help_text" label="Tool form documentation and help text for users" type="text" area="true"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
92 size="8x120" value="**What it Does**"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
93 help="Supply the brief user documentation to appear on the new tool form as reStructured text - http://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html" >
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
94 <sanitizer>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
95 <valid initial="string.printable">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
96 </valid>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
97 <mapping initial="none"/>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
98 </sanitizer>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
99 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
100 <param name="include_deps" type="select" label="Include ghostscript and graphicsmagick dependencies in generated tool" size="60"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
101 help="If an HTML file is being created, including dependencies is recommended. Otherwise this setting has no effect">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
102 <option value="">Rely on system ghostscript and graphicsmagick rather than include these as dependencies</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
103 <option value="yes" selected="true">Include dependencies so target installations will always work if HTML is being generated</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
104 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
105
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
106 </when>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
107 <when value = "">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
108 </when>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
109 </conditional>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
110 <param name="make_HTML" type="select" label="Create an HTML report with links to all output files and thumbnail links to PDF images" size="60"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
111 help="Recommended for presenting complex outputs in an accessible manner. Turn off for simple tools so they just create one output">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
112 <option value="yes">Yes, arrange all outputs produced by my script as an HTML output</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
113 <option value="" selected="true">No, no HTML output file thanks</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
114 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
115 <param name="make_TAB" type="select" label="Create a new (default tabular) history output with or without an HTML file specified above"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
116 help="This is useful if your script creates a single new tabular file you want to appear in the history after the tool executes">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
117 <option value="yes" selected="true">My script writes to a new history output</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
118 <option value="">I do not want a new history output file</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
119 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
120 <param name="out_format" type="select" label="Select the datatype that your tool/script produces" help="If your datatype is not listed here, it has to be added in galaxy's datatypes_conf.xml">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
121 <options from_parameter="tool.app.datatypes_registry.upload_file_formats">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
122 <column name="value" index="0"/>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
123 </options>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
124 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
125 <param name="interpreter" type="select" label="Select the interpreter for your code. This must be available on the path of the execution host">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
126 <option value="Rscript" selected="true">Rscript</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
127 <option value="python">python</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
128 <option value="perl">perl</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
129 <option value="sh">sh</option>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
130 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
131 <param name="dynScript" label="Cut and paste the script to be executed here" type="text" value="" area="True" size="8x120"
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
132 help="Script must deal with two command line parameters: Path to input tabular file path (or 'None' if none selected) and path to output tabular history file (or 'None').">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
133 <sanitizer>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
134 <valid initial="string.printable">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
135 </valid>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
136 <mapping initial="none"/>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
137 </sanitizer>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
138 </param>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
139 </inputs>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
140 <outputs>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
141 <data format="input" name="tab_file" label="${tool_name}.${out_format}">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
142 <filter>make_TAB == "yes"</filter>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
143 <actions>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
144 <action type="format">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
145 <option type="from_param" name="out_format" />
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
146 </action>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
147 </actions>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
148 </data>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
149 <data format="html" name="html_file" label="${tool_name}.html">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
150 <filter>make_HTML == "yes"</filter>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
151 </data>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
152 <data format="toolshed.gz" name="new_tool" label="${tool_name}.toolshed.gz">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
153 <filter>makeMode['make_Tool'] == "yes"</filter>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
154 </data>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
155 </outputs>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
156 <configfiles>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
157 <configfile name="runme">$dynScript</configfile>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
158 <configfile name="helpme">
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
159 #if $makeMode.make_Tool == "yes":
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
160 ${makeMode.help_text}
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
161 #end if
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
162 </configfile>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
163 </configfiles>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
164 <help>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
165
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
166 .. class:: warningmark
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
167
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
168 **Details and attribution** GTF_
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
169
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
170 **If you find a bug** please raise an issue at the bitbucket repository GTFI_
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
171
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
172 **What it does** This tool enables a user to paste and submit an arbitrary R/python/perl script to Galaxy.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
173
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
174 **Input options** This version is limited to simple transformation or reporting requiring only a single input file selected from the history.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
175
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
176 **Output options** Optional script outputs include one single new history tabular file, or for scripts that create multiple outputs,
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
177 a new HTML report linking all the files and images created by the script can be automatically generated.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
178
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
179 **Tool Generation option** Once the script is working with test data, this tool will optionally generate a new Galaxy tool in a gzip file
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
180 ready to upload to your local toolshed for sharing and installation. Provide a small sample input when you run generate the tool because
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
181 it will become the input for the generated functional test.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
182
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
183 .. class:: warningmark
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
184
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
185 **Note to system administrators** This tool offers *NO* built in protection against malicious scripts. It should only be installed on private/personnal Galaxy instances.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
186 Admin_users will have the power to do anything they want as the Galaxy user if you install this tool.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
187
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
188 .. class:: warningmark
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
189
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
190 **Use on public servers** is STRONGLY discouraged for obvious reasons
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
191
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
192 The tools generated by this tool will run just as securely as any other normal installed Galaxy tool but like any other new tools, should always be checked carefully before installation.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
193 We recommend that you follow the good code hygiene practices associated with safe toolshed.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
194
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
195 **Scripting conventions** The pasted script will be executed with the path to the (optional) input tabular data file path or NONE if you do not select one, and the path to the optional
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
196 output file or None if none is wanted, as the first and second command line parameters. The script must deal appropriately with these - see Rscript examples below.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
197 Note that if an optional HTML output is selected, all the output files created by the script will be nicely presented as links, with pdf images linked as thumbnails in that output.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
198 This can be handy for complex scripts creating lots of output.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
199
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
200 **Examples**
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
201 <![CDATA[
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
202
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
203 Each of these following trivial examples can be cut and pasted into the script box for testing.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
204 Please make sure you choose the appropriate interpreter and upload and select a suitable small matching test data input
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
205
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
206 A simple Rscript "filter" showing how the command line parameters can be handled, takes an input file, does something (transpose in this case) and
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
207 writes the results to a new tabular file. Note the use of colClasses to ensure that no fiddling takes place with numeric values by treating everything
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
208 as a string::
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
209
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
210 # transpose a tabular input file and write as a tabular output file
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
211 ourargs = commandArgs(TRUE)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
212 inf = ourargs[1]
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
213 outf = ourargs[2]
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
214 inp = read.table(inf,head=F,row.names=NULL,sep='\t',colClasses="character")
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
215 outp = t(inp)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
216 write.table(outp,outf, quote=FALSE, sep="\t",row.names=F,col.names=F)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
217
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
218 Calculate a multiple test adjusted p value from a column of p values - for this script to be useful, it needs the right column for the input to be specified in the code for the
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
219 given input file type(s) specified when the tool is generated ::
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
220
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
221 # use p.adjust - assumes a HEADER row and column 1 - please fix for any real use
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
222 column = 1 # adjust if necessary for some other kind of input
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
223 ourargs = commandArgs(TRUE)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
224 inf = ourargs[1]
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
225 outf = ourargs[2]
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
226 inp = read.table(inf,head=T,row.names=NULL,sep='\t')
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
227 p = inp[,column]
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
228 q = p.adjust(p,method='BH')
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
229 outp = cbind(inp,'BH Adjusted p-value'=q)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
230 write.table(outp,outf, quote=FALSE, sep="\t",row.names=F,col.names=T)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
231
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
232
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
233 A demonstration Rscript example takes no input file but generates some random data based pdf images
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
234 You must make sure the option to create an HTML output file is
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
235 turned on for this to work. Images (pdf) are linked via thumbnails and
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
236 all files have a link on the resulting HTML page::
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
237
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
238 # note this script takes NO input or output because it generates random data
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
239 for (i in 1:10) {
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
240 foo = runif(100)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
241 bar = rnorm(100)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
242 bar = foo + 0.05*bar
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
243 pdf(paste('yet',i,"anotherplot.pdf",sep='_'))
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
244 plot(foo,bar,main=paste("Foo by Bar plot #",i),col="maroon", pch=3,cex=0.6)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
245 dev.off()
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
246 foo = data.frame(a=runif(100),b=runif(100),c=runif(100),d=runif(100),e=runif(100),f=runif(100))
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
247 bar = as.matrix(foo)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
248 pdf(paste('yet',i,"anotherheatmap.pdf",sep='_'))
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
249 heatmap(bar,main='Random Heatmap')
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
250 dev.off()
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
251 }
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
252
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
253 A slight variation taking an input tabular file from which we read the first number as nreps
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
254
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
255 # note this script takes a single parameter
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
256 # number of replicates
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
257 ourargs = commandArgs(TRUE)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
258 infname = ourargs[1]
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
259 nreps = read.table(infname,head=F)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
260 nreps = unlist(nreps)[1]
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
261 nreps = max(c(1,nreps))
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
262 nreps = min(c(20,nreps))
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
263 print(paste("Using nreps=",nreps))
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
264 for (i in 1:nreps) {
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
265 foo = runif(100)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
266 bar = rnorm(100)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
267 bar = foo + 0.2*bar
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
268 pdf(paste("yet",i,"anotherplot.pdf",sep="_"))
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
269 plot(foo,bar,main=paste("Foo by Bar plot ",i),col="maroon", pch=3,cex=0.6)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
270 dev.off()
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
271 foo = data.frame(a=runif(100),b=runif(100),c=runif(100),d=runif(100),e=runif(100),f=runif(100))
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
272 bar = as.matrix(foo)
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
273 pdf(paste("yet",i,"anotherheatmap.pdf",sep="_"))
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
274 heatmap(bar,main="Random Heatmap")
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
275 dev.off()
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
276 }
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
277
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
278 A Python example that reverses each row of a tabular file (you'll need to remove the leading spaces
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
279 for this to work if cut and pasted into the script box)::
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
280
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
281 # reverse order of columns in a tabular file
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
282 import sys
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
283 inp = sys.argv[1]
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
284 outp = sys.argv[2]
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
285 i = open(inp,'r')
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
286 o = open(outp,'w')
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
287 for row in i:
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
288 rs = row.rstrip().split('\t')
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
289 rs.reverse()
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
290 o.write('\t'.join(rs))
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
291 o.write('\n')
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
292 i.close()
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
293 o.close()
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
294
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
295 A trivial shell script example to show that it works::
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
296
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
297 #!/bin/bash
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
298 INF=$1
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
299 OUTF=$2
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
300 cut -c2,4,6,8,10,12 $INF > $OUTF
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
301
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
302 A trivial perl script example to show that even perl works::
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
303
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
304 #
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
305 # change all occurances of a string in a file to another string
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
306 #
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
307 $oldfile = $ARGV[0];
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
308 $newfile = $ARGV[1];
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
309 $old = "gene";
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
310 $new = "foo";
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
311 open(OF, $oldfile);
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
312 open(NF, ">$newfile");
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
313 # read in each line of the file
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
314 while ($line = <OF>) {
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
315 $line =~ s/$old/$new/;
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
316 print NF $line;
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
317 }
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
318 close(OF);
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
319 close(NF);
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
320
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
321 ]]>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
322
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
323 **Citation**
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
324
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
325
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
326 Paper_ :
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
327
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
328 Creating re-usable tools from scripts: The Galaxy Tool Factory
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
329 Ross Lazarus; Antony Kaspi; Mark Ziemann; The Galaxy Team
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
330 Bioinformatics 2012; doi: 10.1093/bioinformatics/bts573
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
331
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
332
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
333 **Licensing**
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
334
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
335 Copyright Ross Lazarus (ross period lazarus at gmail period com) May 2012
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
336 All rights reserved.
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
337 Licensed under the LGPL_
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
338
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
339 .. _LGPL: http://www.gnu.org/copyleft/lesser.html
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
340 .. _GTF: https://bitbucket.org/mvdbeek/dockertoolfactory
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
341 .. _GTFI: https://bitbucket.org/mvdbeek/dockertoolfactory/issues
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
342 .. _Paper: http://bioinformatics.oxfordjournals.org/cgi/reprint/bts573?ijkey=lczQh1sWrMwdYWJ&amp;keytype=ref
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
343
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
344
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
345 </help>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
346
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
347 </tool>
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
348
7e0392d4531c Initial Commit.
m.vandenbeek@gmail.com
parents:
diff changeset
349