changeset 0:1bff6682e780 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/ggplot2 commit 6e466ce83e2e5c0dd0ba30356d0488cf74574b8f
author iuc
date Tue, 22 Aug 2017 06:42:21 -0400
parents
children a78aa83f6625
files ggplot_point.xml macros.xml test-data/ggplot_heatmap2_result1.pdf test-data/ggplot_histogram_result1.pdf test-data/ggplot_point_result1.pdf test-data/ggplot_violin_result1.pdf test-data/mtcars.txt
diffstat 7 files changed, 431 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ggplot_point.xml	Tue Aug 22 06:42:21 2017 -0400
@@ -0,0 +1,232 @@
+<tool id="ggplot2_point" name="Scatterplot w ggplot2" version="@VERSION@">
+    <macros>
+        <import>macros.xml</import>
+    </macros>
+    <expand macro="requirements"></expand>
+    <command detect_errors="exit_code"><![CDATA[
+cat '$script' &&
+Rscript '$script' &&
+mv output_plot.pdf $output1
+    ]]></command>
+    <configfiles>
+        <configfile name="script"><![CDATA[
+
+@R_INIT@
+
+## Import library
+library("ggplot2")
+
+@XY_SCALING@
+
+## Choose theme for plot
+#if $theme == "bw"
+    gg_theme = theme_bw()
+#else
+    gg_theme = NULL
+#end if
+
+gg_width = $with_output_dim
+gg_height = $height_output_dim
+
+input <- read.csv('$input1', sep='\t', header=TRUE)
+
+## renaming columns so ggplot can use them
+names(input)[$xplot] <- "xcol"
+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"
+     gg_facet = facet_wrap( ~ factor)
+     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
+
+    names(input)[$factor.factorcol] <- "factor"
+
+#elif $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 $colors == "Default"
+          color_scale = scale_colour_hue(direction='$factor.colororder')
+      #else
+          color_scale = scale_color_brewer(palette='$colors', direction='$factor.colororder')
+      #end if
+
+    names(input)[$factor.factorcol] <- "factor"
+#else
+      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
+#end if
+
+@TRANSFORM@
+
+##axis label custization
+#if $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'))
+#end if
+
+
+##axis text(tick) custization
+#if $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'))
+#end if
+
+##plot title custimization
+#if $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'))
+#end if
+
+
+
+## grid line customization
+#if $gridlinecust == "default"
+    gg_gridline = NULL
+#elif $gridlinecust == "hidemajor"
+    gg_gridline = theme(panel.grid.major = element_blank())
+#elif $gridlinecust == "hideminor"
+    gg_gridline = theme(panel.grid.minor = element_blank())
+#elif $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
+
+ggsave(file='output_plot.pdf', width=gg_width, height=gg_height)
+dev.off()
+        ]]></configfile>
+    </configfiles>
+    <inputs>
+        <param name="input1" type="data" format="tabular" label="Input in tabular format" />
+        <param name="xplot" type="integer" value="8" label="Column to plot on x-axis" />
+        <param name="yplot" type="integer" value="9" label="Column to plot on y-axis" />
+
+        <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>
+                </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>
+            </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" />
+    </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"/>
+    </outputs>
+    <tests>
+        <test>
+            <param name="input1" value="mtcars.txt" ftype="tabular" />
+            <output name="output1" file="ggplot_point_result1.pdf" compare="sim_size" />
+        </test>
+    </tests>
+    <help><![CDATA[
+        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.
+
+        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!  
+
+        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>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/macros.xml	Tue Aug 22 06:42:21 2017 -0400
@@ -0,0 +1,166 @@
+<?xml version="1.0"?>
+<macros>
+    <xml name="requirements">
+        <requirements>
+            <requirement type="package" version="@VERSION@">r-ggplot2</requirement>
+            <yield />
+        </requirements>
+    </xml>
+    <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)})
+
+## 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
+    ]]></token>
+
+    <xml name="transform">
+        <param name="transform" type="select" label="Advanced - log 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>
+            <option value="log10">Log10(value) transform my data</option>
+            <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>
+            <when value="Automatic">
+                <!--Do nothing here -->
+            </when>
+            <when value="Defined">
+                <param name="xaxismin" type="integer" value="0" label="minimal range of x-axis" />
+                <param name="xaxismax" type="integer" value="3" label="maximal range of x-axis" />
+                <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>
+    </xml>
+    <xml name="title">
+        <param name="title" type="text" value="plot title" label="Title of plot" />
+    </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"/> 
+    </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" />
+    </xml>
+    <xml name="citations">
+        <citations>
+            <citation type="bibtex">@Book{
+                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}
+                }
+            </citation>
+        </citations>
+    </xml>
+
+    <xml name="axis_customization" token_label="Advanced - axis title options">
+        <param name="axis_customization" type="select" label="@LABEL@">
+            <option value="default" selected="True">Default</option>
+            <option value="defined">User defined label options</option>
+        </param>
+        <when value="default">
+            <!--Do nothing here -->
+        </when>
+        <when value="defined">
+            <param name="size" type="float" value="12" label="Axis label size (default = 12)"/>
+            <param name="color" type="select" label="Color of axis label">
+                <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>
+            <param name="face" type="select" label="Font effect of axis label">
+                <option value="plain">Normal (default)</option>
+                <option value="bold">Bold</option>
+                <option value="italic">Italic</option>
+            </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>
+            <option value="YlOrRd">Yellow to orange to red (discrete, max=9 colors)</option>
+            <option value="YlOrBr">Yellow to orange to brown (discrete, max=9 colors)</option>
+            <option value="YlGnBu">Yellow to green to blue (discrete, max=9 colors)</option>
+            <option value="YlGn">Yellow to green (discrete, max=9 colors)</option>
+            <option value="Reds">Shades of red from light to dark (discrete, max=9 colors)</option>
+            <option value="RdPu">Red to purple (discrete, max=9 colors)</option>
+            <option value="Purples">Shades of purple from light to dark (discrete, max=9 colors)</option>
+            <option value="PuRd">Purple to red (discrete, max=9 colors)</option>
+            <option value="PuBuGn">Purple to blue to green (discrete, max=9 colors)</option>
+            <option value="PuBu">Purple to blue(discrete, max=9 colors)</option>
+            <option value="OrRd">Orange to red (discrete, max=9 colors)</option>
+            <option value="Oranges">Shades of orange from light to dark (discrete, max=9 colors)</option>
+            <option value="Greys">Shades of grey from light to dark (discrete, max=9 colors)</option>
+            <option value="Greens">Shades of greens from light to dark (discrete, max=9 colors)</option>
+            <option value="GnBu">Green to blue (discrete, max=9 colors)</option>
+            <option value="BuPu">Blue to purple (discrete, max=9 colors)</option>
+            <option value="BuGn">Blue to green (discrete, max=9 colors)</option>
+            <option value="Blues">Shades of blue from light to dark (discrete, max=9 colors)</option>
+            <option value="Set1">Set 1 - predefined color pallete (discrete, max=9 colors)</option>
+            <option value="Set2">Set 2 - predefined color pallete (discrete, max=8 colors)</option>
+            <option value="Set3">Set 3 - predefined color pallete (discrete, max=12 colors)</option>
+            <option value="Pastel1">Pastel 1 - predefined pastel color pallete (discrete, max=9 colors)</option>
+            <option value="Pastel2">Pastel 2 - predefined pastel color pallete (discrete, max=8 colors)</option>
+            <option value="Paired">Paired - predefined color pallete (discrete, max=12 colors)</option>
+            <option value="Dark2">Dark 2 - predefined color pallete (discrete, max=12 colors)</option>
+            <option value="Accent">Accent - predefined color pallete (discrete, max=12 colors)</option>
+            <option value="Spectral">Spectral - Red to yellow to purple (discrete, max=11 colors)</option>
+            <option value="RdYlGn">Red to yellow to green (discrete, max=11 colors)</option>
+            <option value="RdYlBu">Red to yellow to blue (discrete, max=11 colors)</option>
+            <option value="RdGy">Red to grey (discrete, max=11 colors)</option>
+            <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> 
+        </param>
+    </xml>
+
+</macros>
Binary file test-data/ggplot_heatmap2_result1.pdf has changed
Binary file test-data/ggplot_histogram_result1.pdf has changed
Binary file test-data/ggplot_point_result1.pdf has changed
Binary file test-data/ggplot_violin_result1.pdf has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/mtcars.txt	Tue Aug 22 06:42:21 2017 -0400
@@ -0,0 +1,33 @@
+brand	mpg	cyl	disp	hp	drat	wt	qsec	vs	am	gear	carb
+Mazda RX4	21	6	160	110	3.9	2.62	16.46	0	1	4	4
+Mazda RX4 Wag	21	6	160	110	3.9	2.875	17.02	0	1	4	4
+Datsun 710	22.8	4	108	93	3.85	2.32	18.61	1	1	4	1
+Hornet 4 Drive	21.4	6	258	110	3.08	3.215	19.44	1	0	3	1
+Hornet Sportabout	18.7	8	360	175	3.15	3.44	17.02	0	0	3	2
+Valiant	18.1	6	225	105	2.76	3.46	20.22	1	0	3	1
+Duster 360	14.3	8	360	245	3.21	3.57	15.84	0	0	3	4
+Merc 240D	24.4	4	146.7	62	3.69	3.19	20	1	0	4	2
+Merc 230	22.8	4	140.8	95	3.92	3.15	22.9	1	0	4	2
+Merc 280	19.2	6	167.6	123	3.92	3.44	18.3	1	0	4	4
+Merc 280C	17.8	6	167.6	123	3.92	3.44	18.9	1	0	4	4
+Merc 450SE	16.4	8	275.8	180	3.07	4.07	17.4	0	0	3	3
+Merc 450SL	17.3	8	275.8	180	3.07	3.73	17.6	0	0	3	3
+Merc 450SLC	15.2	8	275.8	180	3.07	3.78	18	0	0	3	3
+Cadillac Fleetwood	10.4	8	472	205	2.93	5.25	17.98	0	0	3	4
+Lincoln Continental	10.4	8	460	215	3	5.424	17.82	0	0	3	4
+Chrysler Imperial	14.7	8	440	230	3.23	5.345	17.42	0	0	3	4
+Fiat 128	32.4	4	78.7	66	4.08	2.2	19.47	1	1	4	1
+Honda Civic	30.4	4	75.7	52	4.93	1.615	18.52	1	1	4	2
+Toyota Corolla	33.9	4	71.1	65	4.22	1.835	19.9	1	1	4	1
+Toyota Corona	21.5	4	120.1	97	3.7	2.465	20.01	1	0	3	1
+Dodge Challenger	15.5	8	318	150	2.76	3.52	16.87	0	0	3	2
+AMC Javelin	15.2	8	304	150	3.15	3.435	17.3	0	0	3	2
+Camaro Z28	13.3	8	350	245	3.73	3.84	15.41	0	0	3	4
+Pontiac Firebird	19.2	8	400	175	3.08	3.845	17.05	0	0	3	2
+Fiat X1-9	27.3	4	79	66	4.08	1.935	18.9	1	1	4	1
+Porsche 914-2	26	4	120.3	91	4.43	2.14	16.7	0	1	5	2
+Lotus Europa	30.4	4	95.1	113	3.77	1.513	16.9	1	1	5	2
+Ford Pantera L	15.8	8	351	264	4.22	3.17	14.5	0	1	5	4
+Ferrari Dino	19.7	6	145	175	3.62	2.77	15.5	0	1	5	6
+Maserati Bora	15	8	301	335	3.54	3.57	14.6	0	1	5	8
+Volvo 142E	21.4	4	121	109	4.11	2.78	18.6	1	1	4	2