comparison xy_plot.xml @ 0:d43075b3e107 draft default tip

Uploaded
author saskia-hiltemann
date Fri, 30 Oct 2015 10:46:49 -0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:d43075b3e107
1 <tool id="XY_Plot_1_multiformat" name="Plotting tool" version="1.0.1">
2 <description>for multiple series and graph types and multiple output types</description>
3 <requirements>
4 <requirement type="package" version="3.2.1">R</requirement>
5 <requirement type="package" version="2.11.1">fontconfig</requirement>
6 </requirements>
7 <command interpreter="bash">r_wrapper.sh $script_file</command>
8
9 <inputs>
10 <param name="main" type="text" value="" label="Plot Title"/>
11 <param name="xlab" type="text" value="" label="Label for x axis"/>
12 <param name="ylab" type="text" value="" label="Label for y axis"/>
13 <param name="ftype" type="select" label="File Type">
14 <option value="pdf">PDF</option>
15 <option value="png">PNG</option>
16 <option value="jpeg">JPEG</option>
17 <option value="bmp">BMP</option>
18 <option value="tiff">TIFF</option>
19 </param>
20 <repeat name="series" title="Series">
21 <param name="input" type="data" format="tabular" label="Dataset"/>
22 <param name="xcol" type="data_column" data_ref="input" label="Column for x axis"/>
23 <param name="ycol" type="data_column" data_ref="input" label="Column for y axis"/>
24 <conditional name="series_type">
25 <param name="type" type="select" label="Series Type">
26 <option value="line" selected="true">Line</option>
27 <option value="points">Points</option>
28 </param>
29 <when value="line">
30 <param name="lty" type="select" label="Line Type">
31 <option value="1">Solid</option>
32 <option value="2">Dashed</option>
33 <option value="3">Dotted</option>
34 </param>
35 <param name="col" type="select" label="Line Color">
36 <option value="1">Black</option>
37 <option value="2">Red</option>
38 <option value="3">Green</option>
39 <option value="4">Blue</option>
40 <option value="5">Cyan</option>
41 <option value="6">Magenta</option>
42 <option value="7">Yellow</option>
43 <option value="8">Gray</option>
44 </param>
45 <param name="lwd" type="float" label="Line Width" value="1.0"/>
46 </when>
47 <when value="points">
48 <param name="pch" type="select" label="Point Type">
49 <option value="1">Circle (hollow)</option>
50 <option value="2">Triangle (hollow)</option>
51 <option value="3">Cross</option>
52 <option value="4">Diamond (hollow)</option>
53 <option value="15">Square (filled)</option>
54 <option value="16">Circle (filled)</option>
55 <option value="17">Triangle (filled)</option>
56 </param>
57 <param name="col" type="select" label="Point Color">
58 <option value="1">Black</option>
59 <option value="2">Red</option>
60 <option value="3">Green</option>
61 <option value="4">Blue</option>
62 <option value="5">Cyan</option>
63 <option value="6">Magenta</option>
64 <option value="7">Yellow</option>
65 <option value="8">Gray</option>
66 </param>
67 <param name="cex" type="float" label="Point Scale" value="1.0"/>
68 </when>
69 </conditional>
70 </repeat>
71 </inputs>
72
73 <configfiles>
74 <configfile name="script_file">
75 ## Setup R error handling to go to stderr
76 options( show.error.messages=F,
77 error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
78 ## Determine range of all series in the plot
79 xrange = c( NULL, NULL )
80 yrange = c( NULL, NULL )
81 #for $i, $s in enumerate( $series )
82 s${i} = read.table( "${s.input.file_name}" )
83 x${i} = s${i}[,${s.xcol}]
84 y${i} = s${i}[,${s.ycol}]
85 xrange = range( x${i}, xrange )
86 yrange = range( y${i}, yrange )
87 #end for
88 ## Open output PDF file
89 #if $ftype.value == "pdf"
90 pdf("outfile.pdf")
91 #else
92 "${ftype}"( "outfile.${ftype}" , type="cairo")
93 #end if
94 ## Dummy plot for axis / labels
95 plot( NULL, type="n", xlim=xrange, ylim=yrange, main="${main}", xlab="${xlab}", ylab="${ylab}" )
96 ## Plot each series
97 #for $i, $s in enumerate( $series )
98 #if $s.series_type['type'] == "line"
99 lines( x${i}, y${i}, lty=${s.series_type.lty}, lwd=${s.series_type.lwd}, col=${s.series_type.col} )
100 #elif $s.series_type.type == "points"
101 points( x${i}, y${i}, pch=${s.series_type.pch}, cex=${s.series_type.cex}, col=${s.series_type.col} )
102 #end if
103 #end for
104 ## Close the PDF file
105 devname = dev.off()
106 </configfile>
107 </configfiles>
108
109 <outputs>
110 <data format="pdf" name="out_file1" from_work_dir="outfile.pdf" >
111 <filter>(ftype == 'pdf') </filter>
112 </data>
113 <data format="png" name="out_file2" from_work_dir="outfile.png">
114 <filter>(ftype == 'png') </filter>
115 </data>
116 <data format="jpg" name="out_file3" from_work_dir="outfile.jpeg">
117 <filter>(ftype == 'jpeg') </filter>
118 </data>
119 <data format="bmp" name="out_file4" from_work_dir="outfile.bmp">
120 <filter>(ftype == 'bmp') </filter>
121 </data>
122 <data format="tiff" name="out_file5" from_work_dir="outfile.tiff">
123 <filter>(ftype == 'tiff') </filter>
124 </data>
125 </outputs>
126
127 <tests>
128 <test>
129 <param name="main" value="Example XY Plot PDF"/>
130 <param name="xlab" value="Column 1"/>
131 <param name="ylab" value="Column 2"/>
132 <param name="ftype" value="pdf"/>
133 <param name="input" value="2.tabular" ftype="tabular"/>
134 <param name="xcol" value="1"/>
135 <param name="ycol" value="2"/>
136 <param name="type" value="line"/>
137 <param name="lty" value="2"/>
138 <param name="col" value="2"/>
139 <param name="lwd" value="1.0"/>
140 <output name="out_file1" file="XY_Plot_1_multi_out.pdf" format="pdf" />
141 </test>
142 <test>
143 <param name="main" value="Example XY Plot PNG"/>
144 <param name="xlab" value="Column 1"/>
145 <param name="ylab" value="Column 2"/>
146 <param name="ftype" value="png"/>
147 <param name="input" value="2.tabular" ftype="tabular"/>
148 <param name="xcol" value="1"/>
149 <param name="ycol" value="2"/>
150 <param name="type" value="line"/>
151 <param name="lty" value="2"/>
152 <param name="col" value="2"/>
153 <param name="lwd" value="1.0"/>
154 <output name="out_file2" md5="c2762c725f80fe4419e35768cac5d11b" />
155 </test>
156 <test>
157 <param name="main" value="Example XY Plot JPEG"/>
158 <param name="xlab" value="Column 1"/>
159 <param name="ylab" value="Column 2"/>
160 <param name="ftype" value="jpeg"/>
161 <param name="input" value="2.tabular" ftype="tabular"/>
162 <param name="xcol" value="1"/>
163 <param name="ycol" value="2"/>
164 <param name="type" value="line"/>
165 <param name="lty" value="2"/>
166 <param name="col" value="2"/>
167 <param name="lwd" value="1.0"/>
168 <output name="out_file3" md5="5c89f4e87bb5f2a809877b471f9c2d69" />
169 </test>
170 <test>
171 <param name="main" value="Example XY Plot BMP"/>
172 <param name="xlab" value="Column 1"/>
173 <param name="ylab" value="Column 2"/>
174 <param name="ftype" value="bmp"/>
175 <param name="input" value="2.tabular" ftype="tabular"/>
176 <param name="xcol" value="1"/>
177 <param name="ycol" value="2"/>
178 <param name="type" value="line"/>
179 <param name="lty" value="2"/>
180 <param name="col" value="2"/>
181 <param name="lwd" value="1.0"/>
182 <output name="out_file4" md5="74ea4b29bd7de44c1b6377c6c26671e7"/>
183 </test>
184 <test>
185 <param name="main" value="Example XY Plot TIFF"/>
186 <param name="xlab" value="Column 1"/>
187 <param name="ylab" value="Column 2"/>
188 <param name="ftype" value="tiff"/>
189 <param name="input" value="2.tabular" ftype="tabular"/>
190 <param name="xcol" value="1"/>
191 <param name="ycol" value="2"/>
192 <param name="type" value="line"/>
193 <param name="lty" value="2"/>
194 <param name="col" value="2"/>
195 <param name="lwd" value="1.0"/>
196 <output name="out_file5" md5="7ebf7d201ad9cdf0fc6995639749ae7d"/>
197 </test>
198 </tests>
199 <help>
200 .. class:: infomark
201
202 This tool allows you to plot values contained in columns of a dataset against each other and also allows you to have different series corresponding to the same or different datasets in one plot.
203
204 -----
205
206 .. class:: warningmark
207
208 This tool throws an error if the columns selected for plotting are absent or are not numeric and also if the lengths of these columns differ.
209
210 -----
211
212 **Example**
213
214 Input file::
215
216 1 68 4.1
217 2 71 4.6
218 3 62 3.8
219 4 75 4.4
220 5 58 3.2
221 6 60 3.1
222 7 67 3.8
223 8 68 4.1
224 9 71 4.3
225 10 69 3.7
226
227 Create a two series XY plot on the above data:
228
229 - Series 1: Red Dashed-Line plot between columns 1 and 2
230 - Series 2: Blue Circular-Point plot between columns 3 and 2
231
232 .. image:: xy_example.jpg
233 </help>
234 </tool>