Files
galaxy/tools/plotting/xy_plot.xml
T
Daniel Blankenberg f92b25d2f5 Enhance tool parameter sanitization. Sanitization rules can now be defined on a per input parameter basis. Resolves ticket #38 and #142.
Sanitization now occurs as part of the InputValueWrapper logic. Previously sanitization occurred as soon as parameter values were provided by the user via form submits, causing the sanitized values to be stored in the database. Now the original user specified values are stored in the database and sanitation happens when str is called on the InputValueWrapper, i.e. during command-line generation and when generating configfiles.

Abstract out param name and value translations that are performed on data source tools. This changes some of the names of the tags used for these purposes  (e.g. data_type_translation becomes value_translation) to reflect this generalization. The ToolConfigSyntax wiki page has been updated with these changes.

Future Enhancement:
Allow methods with arguments and keywords to be specified for sanitation and translation purposes.
2009-12-07 10:19:41 -05:00

149 lines
5.6 KiB
XML

<tool id="XY_Plot_1" name="Plotting tool">
<description>for multiple series and graph types</description>
<command interpreter="bash">r_wrapper.sh $script_file</command>
<inputs>
<param name="main" type="text" value="" size="30" label="Plot Title"/>
<param name="xlab" type="text" value="" size="30" label="Label for x axis"/>
<param name="ylab" type="text" value="" size="30" label="Label for y axis"/>
<repeat name="series" title="Series">
<param name="input" type="data" format="tabular" label="Dataset"/>
<param name="xcol" type="data_column" data_ref="input" label="Column for x axis"/>
<param name="ycol" type="data_column" data_ref="input" label="Column for y axis"/>
<conditional name="series_type">
<param name="type" type="select" label="Series Type">
<option value="line" selected="true">Line</option>
<option value="points">Points</option>
</param>
<when value="line">
<param name="lty" type="select" label="Line Type">
<option value="1">Solid</option>
<option value="2">Dashed</option>
<option value="3">Dotted</option>
</param>
<param name="col" type="select" label="Line Color">
<option value="1">Black</option>
<option value="2">Red</option>
<option value="3">Green</option>
<option value="4">Blue</option>
<option value="5">Cyan</option>
<option value="6">Magenta</option>
<option value="7">Yellow</option>
<option value="8">Gray</option>
</param>
<param name="lwd" type="float" label="Line Width" value="1.0"/>
</when>
<when value="points">
<param name="pch" type="select" label="Point Type">
<option value="1">Circle (hollow)</option>
<option value="2">Triangle (hollow)</option>
<option value="3">Cross</option>
<option value="4">Diamond (hollow)</option>
<option value="15">Square (filled)</option>
<option value="16">Circle (filled)</option>
<option value="17">Triangle (filled)</option>
</param>
<param name="col" type="select" label="Point Color">
<option value="1">Black</option>
<option value="2">Red</option>
<option value="3">Green</option>
<option value="4">Blue</option>
<option value="5">Cyan</option>
<option value="6">Magenta</option>
<option value="7">Yellow</option>
<option value="8">Gray</option>
</param>
<param name="cex" type="float" label="Point Scale" value="1.0"/>
</when>
</conditional>
</repeat>
</inputs>
<configfiles>
<configfile name="script_file">
## Setup R error handling to go to stderr
options( show.error.messages=F,
error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
## Determine range of all series in the plot
xrange = c( NULL, NULL )
yrange = c( NULL, NULL )
#for $i, $s in enumerate( $series )
s${i} = read.table( "${s.input.file_name}" )
x${i} = s${i}[,${s.xcol}]
y${i} = s${i}[,${s.ycol}]
xrange = range( x${i}, xrange )
yrange = range( y${i}, yrange )
#end for
## Open output PDF file
pdf( "${out_file1}" )
## Dummy plot for axis / labels
plot( NULL, type="n", xlim=xrange, ylim=yrange, main="${main}", xlab="${xlab}", ylab="${ylab}" )
## Plot each series
#for $i, $s in enumerate( $series )
#if $s.series_type['type'] == "line"
lines( x${i}, y${i}, lty=${s.series_type.lty}, lwd=${s.series_type.lwd}, col=${s.series_type.col} )
#elif $s.series_type.type == "points"
points( x${i}, y${i}, pch=${s.series_type.pch}, cex=${s.series_type.cex}, col=${s.series_type.col} )
#end if
#end for
## Close the PDF file
devname = dev.off()
</configfile>
</configfiles>
<outputs>
<data format="pdf" name="out_file1" />
</outputs>
<tests>
<test>
<param name="main" value="Example XY Plot"/>
<param name="xlab" value="Column 1"/>
<param name="ylab" value="Column 2"/>
<param name="input" value="2.tabular" ftype="tabular"/>
<param name="xcol" value="1"/>
<param name="ycol" value="2"/>
<param name="type" value="line"/>
<param name="lty" value="2"/>
<param name="col" value="2"/>
<param name="lwd" value="1.0"/>
<output name="out_file1" file="XY_Plot_1_out.pdf"/>
</test>
</tests>
<help>
.. class:: infomark
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.
-----
.. class:: warningmark
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.
-----
**Example**
Input file::
1 68 4.1
2 71 4.6
3 62 3.8
4 75 4.4
5 58 3.2
6 60 3.1
7 67 3.8
8 68 4.1
9 71 4.3
10 69 3.7
Create a two series XY plot on the above data:
- Series 1: Red Dashed-Line plot between columns 1 and 2
- Series 2: Blue Circular-Point plot between columns 3 and 2
.. image:: ../static/images/xy_example.jpg
</help>
</tool>