changeset 2:43778344b955 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:05:43 -0400
parents d85535076554
children 3a270cee1239
files ggplot_violin.xml macros.xml test-data/ggplot_heatmap_result1.pdf test-data/ggplot_pca_result1.pdf test-data/mtcars.txt
diffstat 4 files changed, 241 insertions(+), 105 deletions(-) [+]
line wrap: on
line diff
--- a/ggplot_violin.xml	Tue Aug 29 09:02:49 2017 -0400
+++ b/ggplot_violin.xml	Mon Jun 11 16:05:43 2018 -0400
@@ -1,29 +1,29 @@
-<tool id="ggplot2_violin" name="Violin plot w ggplot2" version="@VERSION@">
+<tool id="ggplot2_violin" name="Violin plot w ggplot2" version="@VERSION@+galaxy0">
     <macros>
         <import>macros.xml</import>
     </macros>
     <expand macro="requirements">
-        <requirement type="package" version="1.4.2">r-reshape2</requirement>
+        <requirement type="package" version="1.4.3">r-reshape2</requirement>
+        <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("reshape2")
 library("ggplot2")
 
-## Choose between automatically scaled x and y axis or user defined
-#if $scaling.plot_scaling == "Automatic"
+## Automatically scaled y axis or user defined
+## marco not possible because on y asis relevent
+#if $adv.scaling.plot_scaling == "Automatic"
     gg_scaley = NULL
 #else
-    gg_scaley = ylim($scaling.yaxismin, $scaling.yaxismax)
+    gg_scaley = ylim($adv.scaling.yaxismin, $adv.scaling.yaxismax)
 #end if
 
 integrated <- read.csv('$input1', sep='\t', header=TRUE)
@@ -31,19 +31,22 @@
 
 @TRANSFORM@
 
-#if $drawquartiles == "none"
+@THEME@
+
+@LEGEND@
+
+#if $adv.drawquartiles == "none"
     gg_quartile = NULL
 #else
     gg_quartile = c(0.25, 0.5, 0.75)
 #end if
 
-
-ggplot(input, aes(variable, value)) + geom_violin(scale = "area", colour = '$ggcolor', fill = '$ggfill', draw_quantiles = gg_quartile) +
-gg_scaley + theme_bw() + xlab('$xlab') + ylab('$ylab') + ggtitle('$title')
+## add advanced plotting options for final plot
+plot_out <- ggplot(input, aes(variable, value)) +
+    geom_violin(scale = "area", colour = '$adv.ggcolor', fill = '$adv.ggfill', draw_quantiles = gg_quartile) +
+    gg_scaley + gg_legend + gg_theme + xlab('$xlab') + ylab('$ylab') + ggtitle('$title')
 
-ggsave(file='output_plot.pdf')
-dev.off()
-
+@SAVE_OUTPUT@
         ]]></configfile>
     </configfiles>
     <inputs>
@@ -51,63 +54,71 @@
             help="Column headers are requirement. These will be the columns that are plotted."/>
         <expand macro="title" />
         <expand macro="xy_lab" />
-        <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>
+        <section name="adv" title="Advanced Options" expanded="false">
+            <param name="drawquartiles" type="select" label="Indicate quartiles of your data">
+                <option value="none">Plot the data without indicating quartiles</option>
+                <option value="indicate">Draw lines to indicate each quartile</option>
+            </param>
+            <param name="ggfill" type="select" label="Violin color options">
+                <option value="blue" selected="true">Default (Blue)</option>
+                <option value="black">Black</option>
+                <option value="red">Red</option>
+                <option value="white">White</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 value="Automatic" />
-            <when value="Defined">
-                <param name="yaxismin" type="integer" value="0" label="minimal range of y-axis" />
-                <param name="yaxismax" type="integer" value="3" label="maximal range of y-axis" />
-            </when>
-        </conditional>
-        <expand macro="transform" />
-        <param name="drawquartiles" type="select" label="Advanced - indicate quartiles of your data">
-            <option value="none">Plot the data without indicating quartiles</option>
-            <option value="indicate">Draw lines to indicate each quartile</option>
-        </param>
-        <param name="ggfill" type="select" label="Advanced - violin color options">
-            <option value="blue" selected="True">Default (Blue)</option>
-            <option value="black">Black</option>
-            <option value="red">Red</option>
-            <option value="white">White</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>
-        <param name="ggcolor" type="select" label="Advanced - violin border options">
-            <option value="yellow" selected="True">Default (Yellow)</option>
-            <option value="black">Black</option>
-            <option value="red">Red</option>
-            <option value="white">White</option>
-            <option value="blue">Blue</option>
-            <option value="orange">Orange</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>
+            <param name="ggcolor" type="select" label="Violin border options">
+                <option value="yellow" selected="true">Default (Yellow)</option>
+                <option value="black">Black</option>
+                <option value="red">Red</option>
+                <option value="white">White</option>
+                <option value="blue">Blue</option>
+                <option value="orange">Orange</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>
+            <expand macro="transform" />
+            <conditional name="scaling">
+                <param name="plot_scaling" type="select" label="Axis scaling">
+                    <option value="Automatic" selected="true">Automatic axis scaling</option>
+                    <option value="Defined">User deined axis scales</option>
+                </param>
+                <when value="Automatic" />
+                <when value="Defined">
+                    <param name="yaxismin" type="integer" value="0" label="minimal range of y-axis" />
+                    <param name="yaxismax" type="integer" value="3" label="maximal range of y-axis" />
+                </when>
+            </conditional>
+            <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="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_violin_result1.pdf" compare="sim_size"/>
+            <param name="additional_output_format" value="pdf" />
+            <output name="output2" file="ggplot_violin_result1.pdf" compare="sim_size"/>
         </test>
     </tests>
     <help><![CDATA[
-        Supply this tool with a text file with headers indicating the various groups to be plotted. This tool will sniff out each column with values that can be plotted and display the distribution of that data group. Note that columns may be excluded from this plot if they contain questionable characters. 
-
+        Supply this tool with a text file with headers indicating the various groups to be plotted. This tool will sniff out each column with values that can be plotted and display the distribution of that data group. Note that columns may be excluded from this plot if they contain questionable characters.
     ]]></help>
     <expand macro="citations"/>
 </tool>
--- a/macros.xml	Tue Aug 29 09:02:49 2017 -0400
+++ b/macros.xml	Mon Jun 11 16:05:43 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