changeset 2:9a482995958c draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/ggplot2 commit f9fb73a88ab8b52ce11c25a966d4fe99e67c9fbf
author iuc
date Mon, 11 Jun 2018 16:04:40 -0400
parents a78aa83f6625
children 46f91106439b
files ggplot_point.xml macros.xml test-data/ggplot_heatmap_result1.pdf test-data/ggplot_pca_result1.pdf test-data/mtcars.txt
diffstat 4 files changed, 292 insertions(+), 182 deletions(-) [+]
line wrap: on
line diff
--- a/ggplot_point.xml	Tue Aug 29 09:02:26 2017 -0400
+++ b/ggplot_point.xml	Mon Jun 11 16:04:40 2018 -0400
@@ -1,32 +1,26 @@
-<tool id="ggplot2_point" name="Scatterplot w ggplot2" version="@VERSION@">
+<tool id="ggplot2_point" name="Scatterplot w ggplot2" version="@VERSION@+galaxy0">
     <macros>
         <import>macros.xml</import>
     </macros>
-    <expand macro="requirements"></expand>
+    <expand macro="requirements">
+        <requirement type="package" version="1.2.1">r-svglite</requirement>
+    </expand>
     <command detect_errors="exit_code"><![CDATA[
 cat '$script' &&
-Rscript '$script' &&
-mv output_plot.pdf $output1
+Rscript '$script'
     ]]></command>
     <configfiles>
         <configfile name="script"><![CDATA[
-
 @R_INIT@
 
 ## Import library
-library("ggplot2")
+library(ggplot2)
 
 @XY_SCALING@
 
-## Choose theme for plot
-#if $theme == "bw"
-    gg_theme = theme_bw()
-#else
-    gg_theme = NULL
-#end if
+@THEME@
 
-gg_width = $with_output_dim
-gg_height = $height_output_dim
+@LEGEND@
 
 input <- read.csv('$input1', sep='\t', header=TRUE)
 
@@ -35,91 +29,87 @@
 names(input)[$yplot] <- "ycol"
 
 ## choosing whether to plot data as multiple groups on one plot(factoring) OR multiple groups on different plots
-#if $factor.factoring == "Multiple"
+#if $adv.factor.factoring == "Multiple"
      gg_facet = facet_wrap( ~ factor)
      gg_factor = NULL
      color_scale = NULL
-     #if $points.pointoptions == "Default"
+     #if $adv.points.pointoptions == "Default"
         gg_point = geom_point(size=1, alpha=1, gg_factor)
      #else
-        gg_point = geom_point(size='$points.size', alpha='$points.alpha', colour='$points.pointcolor')
+        gg_point = geom_point(size='$adv.points.size', alpha='$adv.points.alpha', colour='$adv.points.pointcolor')
      #end if
 
-    names(input)[$factor.factorcol] <- "factor"
+    names(input)[$adv.factor.factorcol] <- "factor"
 
-#elif $factor.factoring == "Single"
+#elif $adv.factor.factoring == "Single"
     gg_facet = NULL
     gg_factor = aes(colour=factor(factor))
 
-        #if $points.pointoptions == "default"
-            gg_point = geom_point(size=1, alpha=1, gg_factor)
-        #else
-            gg_point = geom_point(size=$points.size, alpha='$points.alpha', gg_factor)
-        #end if
+    #if $adv.points.pointoptions == "default"
+        gg_point = geom_point(size=1, alpha=1, gg_factor)
+    #else
+        gg_point = geom_point(size=$adv.points.size, alpha='$adv.points.alpha', gg_factor)
+    #end if
 
-      #if $colors == "Default"
-          color_scale = scale_colour_hue(direction='$factor.colororder')
-      #else
-          color_scale = scale_color_brewer(palette='$colors', direction='$factor.colororder')
-      #end if
+    #if $adv.colors == "Default"
+        color_scale = scale_colour_hue(direction='$adv.factor.colororder')
+    #else
+        color_scale = scale_color_brewer(palette='$adv.colors', direction='$adv.factor.colororder')
+    #end if
 
-    names(input)[$factor.factorcol] <- "factor"
+    names(input)[$adv.factor.factorcol] <- "factor"
 #else
-      gg_facet = NULL
-      gg_factor = NULL
-      color_scale = NULL
+    gg_facet = NULL
+    gg_factor = NULL
+    color_scale = NULL
 
-        #if $points.pointoptions == "default"
-            gg_point = geom_point(size=1, alpha=1, gg_factor)
-        #else
-            gg_point = geom_point(size=$points.size, alpha='$points.alpha', colour='$points.pointcolor')
-        #end if
+    #if $adv.points.pointoptions == "default"
+        gg_point = geom_point(size=1, alpha=1, gg_factor)
+    #else
+        gg_point = geom_point(size=$adv.points.size, alpha='$adv.points.alpha', colour='$adv.points.pointcolor')
+    #end if
 #end if
 
 @TRANSFORM@
 
 ##axis label custization
-#if $axis_title_customization.axis_customization == "default"
+#if $adv.axis_title_customization.axis_customization == "default"
     gg_axistitle = theme(axis.title = element_text(color = NULL, size = NULL, face = NULL))
 #else
-    gg_axistitle = theme(axis.title = element_text(color = '$color', size = '$size', face = '$face'))
+    gg_axistitle = theme(axis.title = element_text(color = '$adv.color', size = '$adv.size', face = '$adv.face'))
 #end if
 
-
 ##axis text(tick) custization
-#if $axis_text_customization.axis_customization == "default"
+#if $adv.axis_text_customization.axis_customization == "default"
     gg_axistext = theme(axis.text = element_text(color = NULL, size = NULL, face = NULL))
 #else
-    gg_axistext = theme(axis.text = element_text(color = '$color', size = '$size', face = '$face'))
+    gg_axistext = theme(axis.text = element_text(color = '$adv.color', size = '$adv.size', face = '$adv.face'))
 #end if
 
 ##plot title custimization
-#if $plot_title_customization.axis_customization == "default"
+#if $adv.plot_title_customization.axis_customization == "default"
     gg_plottitle = theme(plot.title = element_text(color = NULL, size = NULL, face = NULL))
 #else
-    gg_plottitle = theme(plot.title = element_text(color='$color', size='$size', face='$face'))
+    gg_plottitle = theme(plot.title = element_text(color='$adv.color', size='$adv.size', face='$adv.face'))
 #end if
 
-
-
 ## grid line customization
-#if $gridlinecust == "default"
+#if $adv.gridlinecust == "default"
     gg_gridline = NULL
-#elif $gridlinecust == "hidemajor"
+#elif $adv.gridlinecust == "hidemajor"
     gg_gridline = theme(panel.grid.major = element_blank())
-#elif $gridlinecust == "hideminor"
+#elif $adv.gridlinecust == "hideminor"
     gg_gridline = theme(panel.grid.minor = element_blank())
-#elif $gridlinecust == "hideboth"
+#elif $adv.gridlinecust == "hideboth"
     gg_gridline = theme(panel.grid.minor = element_blank(), panel.grid.major = element_blank())
 #end if
 
 #this is the actual ggplot command to make the final plot(s)
-ggplot(input, aes(xcol,ycol)) + gg_point + gg_facet+
-gg_theme + gg_scalex + gg_scaley + color_scale + ggtitle('$title') + xlab('$xlab') + ylab('$ylab')+
-gg_axistitle + gg_axistext + gg_plottitle + gg_gridline
+plot_out <- ggplot(input, aes(xcol, ycol)) + gg_point + gg_facet +
+    gg_theme + gg_scalex + gg_scaley + color_scale + gg_legend + ggtitle('$title') + xlab('$xlab') + ylab('$ylab')+
+    gg_axistitle + gg_axistext + gg_plottitle + gg_gridline
 
-ggsave(file='output_plot.pdf', width=gg_width, height=gg_height)
-dev.off()
+@SAVE_OUTPUT@
         ]]></configfile>
     </configfiles>
     <inputs>
@@ -129,104 +119,99 @@
 
         <expand macro="title" />
         <expand macro="xy_lab" />
-
-        <conditional name="points">
-            <param name="pointoptions" type="select" label="Advanced - data point options">
-                <option value="default" selected="True">Default</option>
-                <option value="defined">User defined point options</option>
-            </param>
-            <when value="default">
-                <!--Do nothing here -->
-            </when>
-            <when value="defined">
-                <param name="size" type="float" value="1" label="relative size of points" />
-                <param name="alpha" type="float" value="1" label="Transparency of points (On a scale of 0-1; 0=transparent, 1=default)" />
-                <param name="pointcolor" type="select" label="Color of data points" >
-                    <option value="black">Black (default)</option>
-                    <option value="red">Red</option>
-                    <option value="white">White</option>
-                    <option value="blue">Blue</option>
-                    <option value="orange">Orange</option>
-                    <option value="yellow">Yellow</option>
-                    <option value="green">Green</option>
-                    <option value="purple">Purple</option>
-                    <option value="magenta">Magenta</option>
-                    <option value="cyan">Cyan</option>
-                    <option value="grey">Grey</option>
-                    <option value="gold">Gold</option>
+        <section name="adv" title="Advanced Options" expanded="false">
+            <conditional name="points">
+                <param name="pointoptions" type="select" label="Data point options">
+                    <option value="default" selected="true">Default</option>
+                    <option value="defined">User defined point options</option>
                 </param>
-            </when>
-        </conditional>
-        <conditional name="factor">
-            <param name="factoring" type="select" label="Advanced - plotting multiple groups" >
-                <option value="Default" selected="True">No thanks - just plot the data as one group</option>
-                <option value="Single">Plot multiple groups of data on one plot</option>
-                <option value="Multiple">Plot multiple groups of data on individual plots</option>
+                <when value="default">
+                    <!--Do nothing here -->
+                </when>
+                <when value="defined">
+                    <param name="size" type="float" value="1" label="relative size of points" />
+                    <param name="alpha" type="float" value="1" label="Transparency of points (On a scale of 0-1; 0=transparent, 1=default)" />
+                    <param name="pointcolor" type="select" label="Color of data points" >
+                        <option value="black">Black (default)</option>
+                        <option value="red">Red</option>
+                        <option value="white">White</option>
+                        <option value="blue">Blue</option>
+                        <option value="orange">Orange</option>
+                        <option value="yellow">Yellow</option>
+                        <option value="green">Green</option>
+                        <option value="purple">Purple</option>
+                        <option value="magenta">Magenta</option>
+                        <option value="cyan">Cyan</option>
+                        <option value="grey">Grey</option>
+                        <option value="gold">Gold</option>
+                    </param>
+                </when>
+            </conditional>
+            <conditional name="factor">
+                <param name="factoring" type="select" label="Plotting multiple groups" >
+                    <option value="Default" selected="true">No thanks - just plot the data as one group</option>
+                    <option value="Single">Plot multiple groups of data on one plot</option>
+                    <option value="Multiple">Plot multiple groups of data on individual plots</option>
+                </param>
+                <when value="Default">
+                    <!--Do nothing here -->
+                </when>
+                <when value="Single">
+                    <param name="factorcol" type="integer" value="1" label="column differentiating the different groups" />
+                    <expand macro="colors" />
+                    <param name="colororder" type="select" label="Reverse color scheme" >
+                        <option value="1">Default order of color scheme</option>
+                        <option value="-1">Reverse the order of my color scheme</option>
+                    </param>
+                </when>
+                <when value="Multiple">
+                    <param name="factorcol" type="integer" value="1" label="column differentiating the different groups" />
+                </when>
+            </conditional>
+            <conditional name="axis_title_customization">
+                <expand macro="axis_customization" label="Axis title options" />
+            </conditional>
+            <conditional name="axis_text_customization">
+                <expand macro="axis_customization" label="Axis text options" />
+            </conditional>
+            <conditional name="plot_title_customization">
+                <expand macro="axis_customization" label="Plot title options" />
+            </conditional>
+            <param name="gridlinecust" type="select" label="Grid lines">
+              <option value="default">Default grid lines</option>
+              <option value="hidemajor">Hide major grid lines</option>
+              <option value="hideminor">Hide minor grid lines</option>
+              <option value="hideboth">Hide major and minor grid lines</option>
             </param>
-            <when value="Default">
-                <!--Do nothing here -->
-            </when>
-            <when value="Single">
-                <param name="factorcol" type="integer" value="1" label="column differentiating the different groups" />
-                <expand macro="colors" />
-                <param name="colororder" type="select" label="Reverse color scheme" >
-                    <option value="1">Default order of color scheme</option>
-                    <option value="-1">Reverse the order of my color scheme</option>
-                </param> 
-            </when>
-            <when value="Multiple">
-                <param name="factorcol" type="integer" value="1" label="column differentiating the different groups" />
-            </when>
-        </conditional>
-        <expand macro="transform" />
-
-        <expand macro="xy_scaling" />
-
-        <param name="theme" type="select" label="Advanced - backgound theme for plot">
-          <option value="bw">Black and white</option>
-          <option value="Default">Default (grey)</option>
-        </param>
-
-        <conditional name="axis_title_customization">
-            <expand macro="axis_customization" label="Advanced - axis title options" />
-        </conditional>
-        <conditional name="axis_text_customization">
-            <expand macro="axis_customization" label="Advanced - axis text options" />
-        </conditional>
-        <conditional name="plot_title_customization">
-            <expand macro="axis_customization" label="Advanced - Plot title options" />
-        </conditional>
-        <param name="gridlinecust" type="select" label="Advanced - grid lines">
-          <option value="default">Default grid lines</option>
-          <option value="hidemajor">Hide major grid lines</option>
-          <option value="hideminor">Hide minor grid lines</option>
-          <option value="hideboth">Hide major and minor grid lines</option>
-        </param>
-        <expand macro="dimensions" />
+            <expand macro="transform" />
+            <expand macro="xy_scaling" />
+            <expand macro="theme" />
+            <expand macro="legend" />
+        </section>
+        <section name="out" title="Output Options" expanded="true">
+            <expand macro="dimensions" />
+        </section>
     </inputs>
     <outputs>
-        <!-- <data name="output1" format="png" from_work_dir="Rplot.png"/>
-            ToDo: It would be nice to have different output formats for all tools
-        -->
-        <data name="output1" format="pdf" from_work_dir="Rplot.pdf"/>
+        <expand macro="additional_output" />
     </outputs>
     <tests>
         <test>
             <param name="input1" value="mtcars.txt" ftype="tabular" />
-            <output name="output1" file="ggplot_point_result1.pdf" compare="sim_size" />
+            <param name="additional_output_format" value="pdf" />
+            <output name="output2" file="ggplot_point_result1.pdf" compare="sim_size" />
         </test>
     </tests>
     <help><![CDATA[
-        This tool will generate a scatterplot representing data from two groups/conditions. 
+This tool will generate a scatterplot representing data from two groups/conditions.
 
-        The input data should be in tabular format and the user can determine which groups (columns) to plot.
+The input data should be in tabular format and the user can determine which groups (columns) to plot.
 
-        Multiple groups can be plotted on the same or multiple plots by providing a column with a group identifier under "Advanced - plotting multiple groups".
+Multiple groups can be plotted on the same or multiple plots by providing a column with a group identifier under "Advanced - plotting multiple groups".
 
-        Feel free to explore the (many) advanced options to customize your plot. Galaxy makes this type optimization easy for the user!  
+Feel free to explore the (many) advanced options to customize your plot. Galaxy makes this type optimization easy for the user!
 
-        The ouput is a pdf file with your scatterplot. The dimensions of this file can be modified under "Advanced - output dimensions"
-
+The ouput is a pdf file with your scatterplot. The dimensions of this file can be modified under "Advanced - output dimensions"
     ]]></help>
     <expand macro="citations"/>
 </tool>
--- a/macros.xml	Tue Aug 29 09:02:26 2017 -0400
+++ b/macros.xml	Mon Jun 11 16:04:40 2018 -0400
@@ -9,27 +9,116 @@
     <token name="@VERSION@">2.2.1</token>
 
     <token name="@R_INIT@"><![CDATA[
-## Setup R error handling to go to stderr
-options(show.error.messages=F, error=function(){cat(geterrmessage(), file=stderr()); q("no",1,F)})
+        ## Setup R error handling to go to stderr
+        options(show.error.messages=F, error=function(){cat(geterrmessage(), file=stderr()); q("no",1,F)})
 
-## Unify locale settings
-loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
+        ## Unify locale settings
+        loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8")
     ]]></token>
 
     <token name="@TRANSFORM@"><![CDATA[
-#if $transform == "log2"
-    input["value"] <- log2(input["value"])
-#elif $transform == "log2plus1"
-    input["value"] <- log2(input["value"]+1)
-#elif $transform == "log10"
-    input["value"] <- log10(input["value"])
-#elif $transform == "log10plus1"
-    input["value"] <- log10(input["value"]+1)
-#end if
+        #if $adv.transform == "log2"
+            input["value"] <- log2(input["value"])
+        #elif $adv.transform == "log2plus1"
+            input["value"] <- log2(input["value"]+1)
+        #elif $adv.transform == "log10"
+            input["value"] <- log10(input["value"])
+        #elif $adv.transform == "log10plus1"
+            input["value"] <- log10(input["value"]+1)
+        #end if
+    ]]></token>
+
+    <token name="@XY_SCALING@"><![CDATA[
+        #Choose between automatically scaled x and y axis or user defined
+        #if $adv.scaling.plot_scaling == "Automatic"
+            gg_scalex = NULL
+            gg_scaley = NULL
+        #else
+            gg_scalex = xlim($adv.scaling.xaxismin, $adv.scaling.xaxismax)
+            gg_scaley = ylim($adv.scaling.yaxismin, $adv.scaling.yaxismax)
+            cat("\n xaxismin: ", $adv.scaling.xaxismin)
+            cat("\n xaxismax: ", $adv.scaling.xaxismax)
+            cat("\n yaxismin: ", $adv.scaling.yaxismin)
+            cat("\n yaxismax: ", $adv.scaling.yaxismax)
+        #end if
+    ]]></token>
+
+    <token name="@THEME@"><![CDATA[
+        ## Choose theme for plot
+        #if $adv.theme == "bw"
+            gg_theme = theme_bw()
+        #else
+            gg_theme = NULL
+        #end if
     ]]></token>
 
+    <token name="@LEGEND@"><![CDATA[
+        ## Show/hide legend
+        #if $adv.legend == "yes"
+            gg_legend = theme(legend.position="right")
+        #else
+            gg_legend = theme(legend.position="none")
+            cat("\n no legend")
+        #end if
+    ]]></token>
+    <token name="@SAVE_OUTPUT@"><![CDATA[
+        ## output options need to be in out section
+        gg_width <- as.double('$out.width_output_dim')
+        gg_height <- as.double('$out.height_output_dim')
+        gg_unit <- '$out.unit_output_dim'
+        gg_dpi <- as.double('$out.dpi_output_dim')
+        gg_add_device <- '$out.additional_output_format'
+        output1 <- '$output1'
+        output2 <- '$output2'
+
+        ## ggsave to png
+        ggsave(filename = output1, plot = plot_out, width = gg_width, height = gg_height, units = gg_unit, dpi = gg_dpi, device = "png")
+        if(gg_add_device != "none"){
+          ggsave(filename = output2, plot = plot_out, width = gg_width, height = gg_height, units = gg_unit, dpi = gg_dpi, device = gg_add_device)
+        }
+    ]]></token>
+    <xml name="read_complex_input">
+        <param name="input1" type="data" format="tabular" label="Select table"/>
+        <conditional name="inputdata">
+            <param name="input_type" type="select" label="Select input dataset options" help="specific dataset input for reading">
+                <option value="with_header" selected="true">Dataset with header</option>
+                <option value="with_rownames">Dataset with row names</option>
+                <option value="with_header_rownames">Dataset with header and row names</option>
+                <option value="no_header_rownames">Dataset without header or row names</option>
+            </param>
+            <when value="with_header">
+                <param name="header" type="hidden" value="TRUE"/>
+                <param name="row_names_index" type="hidden" value="0"/>
+                <param name="sample_name_orientation" type="select" display="radio" multiple="false" label="Sample names orientation" help="Default horizontal: header names are interpreted as sample names">
+                    <option value="TRUE" selected="true">horizontal</option>
+                    <option value="FALSE">vertial</option>
+                </param>
+            </when>
+            <when value="with_rownames">
+                <param name="header" type="hidden" value="FALSE"/>
+                <param name="row_names_index" type="data_column" data_ref="input1" label="Select column, for row names" help="WARNING: please consider that using row names might shift the grouping columns"/>
+                <param name="sample_name_orientation" type="select" display="radio" label="Sample names orientation" help="default vertial: row names are interpreted as sample names">
+                    <option value="TRUE">horizontal</option>
+                    <option value="FALSE" selected="true">vertial</option>
+                </param>
+            </when>
+            <when value="with_header_rownames">
+                <param name="header" type="hidden" value="TRUE"/>
+                <param name="row_names_index" type="data_column" data_ref="input1" label="Select column, for row names" help="WARNING: please consider that using row names might shift the grouping columns"/>
+                <param name="sample_name_orientation" type="select" label="Sample names orientation" display="radio" multiple="false" help="deside whether header names or row names are interpreted as sample names">
+                    <option value="TRUE" selected="true">horizontal</option>
+                    <option value="FALSE">vertial</option>
+                </param>
+            </when>
+            <when value="no_header_rownames">
+                <param name="header" type="hidden" value="FALSE"/>
+                <param name="row_names_index" type="hidden" value="0"/>
+                <param name="sample_name_orientation" type="hidden" value="TRUE"/>
+            </when>
+        </conditional>
+    </xml>
     <xml name="transform">
-        <param name="transform" type="select" label="Advanced - log transformation">
+        <param name="transform" type="select" label="Data transformation">
             <option value="none">Plot the data as it is</option>
             <option value="log2">Log2(value) transform my data</option>
             <option value="log2plus1">Log2(value+1) transform my data</option>
@@ -37,23 +126,11 @@
             <option value="log10plus1">Log10(value+1) transform my data</option>
         </param>
     </xml>
-
-    <token name="@XY_SCALING@"><![CDATA[
-#Choose between automatically scaled x and y axis or user defined
-#if $scaling.plot_scaling == "Automatic"
-    gg_scalex = NULL
-    gg_scaley = NULL
-#else
-    gg_scalex = xlim($scaling.xaxismin, $scaling.xaxismax)
-    gg_scaley = ylim($scaling.yaxismin, $scaling.yaxismax)
-#end if
-    ]]></token>
-
     <xml name="xy_scaling">
         <conditional name="scaling">
-            <param name="plot_scaling" type="select" label="Advanced - Axis scaling">
-                <option value="Automatic" selected="True">Automatic axis scaling</option>
-                <option value="Defined">User deined axis scales</option>
+            <param name="plot_scaling" type="select" label="Axis scaling">
+                <option value="Automatic" selected="true">Automatic axis scaling</option>
+                <option value="Defined">User-defined axis scales</option>
             </param>
             <when value="Automatic">
                 <!--Do nothing here -->
@@ -67,33 +144,68 @@
         </conditional>
     </xml>
     <xml name="title">
-        <param name="title" type="text" value="plot title" label="Title of plot" />
+       <param name="title" type="text" value="" label="Plot title">
+            <!--<sanitizer sanitize="false"/> -->
+        </param>
     </xml>
     <xml name="xy_lab">
-        <param name="xlab" type="text" value="title of x-axis" label="Label for x-axis"/>
-        <param name="ylab" type="text" value="title of y-axis" label="Label for y-axis"/> 
+        <param name="xlab" type="text" value="title of x-axis" label="Label for x axis">
+            <sanitizer sanitize="false"/>
+        </param>
+        <param name="ylab" type="text" value="title of y-axis" label="Label for y axis">
+            <sanitizer sanitize="false"/>
+        </param>
+    </xml>
+    <xml name="legend">
+        <param name="legend" type="select" label="Legend options">
+            <option value="yes">Include legend on plot</option>
+            <option value="no">Hide legend</option>
+        </param>
+    </xml>
+    <xml name="theme">
+        <param name="theme" type="select" label="Backgound theme for plot">
+            <option value="bw">Black and white</option>
+            <option value="Default">Default (grey)</option>
+        </param>
     </xml>
     <xml name="dimensions">
-        <param name="with_output_dim" type="float" value="7" label="width of output" help="in inches" />
-        <param name="height_output_dim" type="float" value="7" label="height of output" help="in inches" />
+        <param name="unit_output_dim" type="select" label="Unit of output dimensions" help="default inches">
+            <option value="in" selected="true">Inches (in)</option>
+            <option value="cm">Centimeters (cm)</option>
+            <option value="mm">Millimeters (mm)</option>
+        </param>
+        <param name="width_output_dim" type="float" value="7" label="width of output"/>
+        <param name="height_output_dim" type="float" value="7" label="height of output"/>
+        <param name="dpi_output_dim" type="float" value="300" label="dpi of output" help="Plot resolution. Applies only to raster output types."/>
+        <param name="additional_output_format" type="select" label="Additional output format" help="PNG is always selected as output format">
+            <option value="none" selected="true">only PNG</option>
+            <option value="pdf">PDF</option>
+            <option value="svg">SVG</option>
+            <option value="eps">EPS</option>
+            <option value="ps">PS</option>
+            <option value="tex">TEX (pictex)</option>
+            <option value="jpeg">JPEG</option>
+            <option value="tiff">TIFF</option>
+            <option value="bmp">BMP</option>
+        </param>
     </xml>
     <xml name="citations">
         <citations>
-            <citation type="bibtex">@Book{
+            <citation type="bibtex">@book{wickham2009ggplot2,
                 author = {Hadley Wickham},
                 title = {ggplot2: Elegant Graphics for Data Analysis},
                 publisher = {Springer-Verlag New York},
                 year = {2009},
                 isbn = {978-0-387-98140-6},
-                url = {http://ggplot2.org}
+                url = {http://ggplot2.org},
                 }
             </citation>
+            <yield />
         </citations>
     </xml>
-
-    <xml name="axis_customization" token_label="Advanced - axis title options">
+    <xml name="axis_customization" token_label="Axis title options">
         <param name="axis_customization" type="select" label="@LABEL@">
-            <option value="default" selected="True">Default</option>
+            <option value="default" selected="true">Default</option>
             <option value="defined">User defined label options</option>
         </param>
         <when value="default">
@@ -113,7 +225,7 @@
                 <option value="magenta">Magenta</option>
                 <option value="cyan">Cyan</option>
                 <option value="grey">Grey</option>
-                <option value="gold">Gold</option> 
+                <option value="gold">Gold</option>
             </param>
             <param name="face" type="select" label="Font effect of axis label">
                 <option value="plain">Normal (default)</option>
@@ -122,7 +234,6 @@
             </param>
         </when>
     </xml>
-
     <xml name="colors">
         <param name="colors" type="select" label="Color schemes to differentiate your groups" >
             <option value="Default">Default color scheme</option>
@@ -159,8 +270,22 @@
             <option value="RdBu">Red to blue (discrete, max=11 colors)</option>
             <option value="PuOr">Purple to orange (discrete, max=11 colors)</option>
             <option value="PRGn">Purple to green (discrete, max=11 colors)</option>
-            <option value="BrBG">Brown to teal (discrete, max=11 colors)</option> 
+            <option value="BrBG">Brown to teal (discrete, max=11 colors)</option>
         </param>
     </xml>
-
+    <xml name="additional_output">
+        <data name="output1" format="png" label="${tool.name} on ${on_string}: png"/>
+        <data format="pdf" name="output2" label="${tool.name} on ${on_string}: ${out.additional_output_format}">
+            <change_format>
+                <when input="out.additional_output_format" value="svg" format="svg" />
+                <when input="out.additional_output_format" value="eps" format="eps" />
+                <when input="out.additional_output_format" value="ps" format="ps" />
+                <when input="out.additional_output_format" value="tex" format="txt" />
+                <when input="out.additional_output_format" value="jpeg" format="jpg" />
+                <when input="out.additional_output_format" value="tiff" format="tiff" />
+                <when input="out.additional_output_format" value="bmp" format="bmp" />
+            </change_format>
+            <filter>out['additional_output_format'] != "none"</filter>
+        </data>
+    </xml>
 </macros>
Binary file test-data/ggplot_heatmap_result1.pdf has changed
Binary file test-data/ggplot_pca_result1.pdf has changed