Mercurial > repos > iuc > ggplot2_heatmap2
changeset 4:ca7cb0eaad62 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/heatmap2 commit e7b5919a8e06595b23e8fc31b975fc508f5081b3
author | iuc |
---|---|
date | Mon, 11 Feb 2019 17:32:28 -0500 |
parents | 4955e9bb96d1 |
children | 3b37b1b1c3a7 |
files | heatmap2.xml macros.xml test-data/ggplot_heatmap2_result1.pdf test-data/ggplot_heatmap_result1.pdf test-data/ggplot_histogram_result1.pdf test-data/ggplot_pca_result1.pdf test-data/ggplot_point_result1.pdf test-data/ggplot_violin_result1.pdf test-data/result1.pdf test-data/result2.pdf |
diffstat | 10 files changed, 84 insertions(+), 334 deletions(-) [+] |
line wrap: on
line diff
--- a/heatmap2.xml Sat Jul 28 03:44:29 2018 -0400 +++ b/heatmap2.xml Mon Feb 11 17:32:28 2019 -0500 @@ -1,20 +1,22 @@ -<tool id="ggplot2_heatmap2" name="heatmap2" version="@VERSION@+galaxy1"> +<tool id="ggplot2_heatmap2" name="heatmap2" version="@VERSION@"> <macros> - <import>macros.xml</import> + <token name="@VERSION@">3.0.1</token> </macros> <requirements> - <requirement type="package" version="3.0.1">r-gplots</requirement> + <requirement type="package" version="@VERSION@">r-gplots</requirement> <requirement type="package" version="1.1_2">r-rcolorbrewer</requirement> </requirements> <command detect_errors="exit_code"><![CDATA[ cat '$script' && -Rscript '$script' && -mv output_plot.pdf $output1 +Rscript '$script' ]]></command> <configfiles> <configfile name="script"><![CDATA[ +## Setup R error handling to go to stderr +options(show.error.messages=F, error=function(){cat(geterrmessage(), file=stderr()); q("no",1,F)}) -@R_INIT@ +## Unify locale settings +loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8") ## Import library library("RColorBrewer") @@ -25,11 +27,6 @@ mat_input <- data.matrix(input[,2:ncol(input)]) rownames(mat_input) <- input[,1] -hclust_fun = function(x) hclust(x, method="complete") -dist_fun = function(x) dist(x, method="maximum") -distfun=dist_fun -hclustfun=hclust_fun - #if $transform == "none" linput <- mat_input #elif $transform == "log2" @@ -43,85 +40,129 @@ #end if #if $colorscheme == "whrd" - colorscale = colfunc <- colorRampPalette(c("white", "red")) + colorscale = colfunc <- colorRampPalette(c("white", "red")) #elif $colorscheme == "whblu" - colorscale = colfunc <- colorRampPalette(c("white", "blue")) + colorscale = colfunc <- colorRampPalette(c("white", "blue")) #elif $colorscheme == "blwhre" - colorscale = colfunc <- colorRampPalette(c("blue","white", "red")) + colorscale = colfunc <- colorRampPalette(c("blue","white", "red")) #end if #if $labels== "both" - rlabs = NULL - clabs = NULL + rlabs = NULL + clabs = NULL #elif $labels== "rows" - rlabs = NULL - clabs = FALSE + rlabs = NULL + clabs = FALSE #elif $labels== "columns" - rlabs = FALSE - clabs = NULL + rlabs = FALSE + clabs = NULL #elif $labels== "none" - rlabs = FALSE - clabs = FALSE + rlabs = FALSE + clabs = FALSE #end if -pdf(file='output_plot.pdf') +pdf(file='$output1') colorscale -#if $cluster: - heatmap.2(linput, - distfun=dist_fun, hclustfun=hclust_fun, scale = '$scale', labRow = rlabs, labCol = clabs, - col=colfunc(50), trace="none", density.info = "none", margins=c(8,8), - main = '$title', key.xlab='$key', keysize=1, cexCol=0.8, cexRow = 0.8, srtCol=45) +#if $cluster_cond.cluster: + hclust_fun = function(x) hclust(x, method='$cluster_cond.clustering') + dist_fun = function(x) dist(x, method='$cluster_cond.distance') + #if $cluster_cond.cluster_cols_rows=="rows": + heatmap.2(linput, dendrogram="row", Colv=FALSE, Rowv=TRUE, + distfun=dist_fun, hclustfun=hclust_fun, scale = '$scale', labRow = rlabs, labCol = clabs, + col=colfunc(50), trace="none", density.info = "none", margins=c(8,8), + main = '$title', key.xlab='$key', keysize=1, cexCol=0.8, cexRow = 0.8, srtCol=45) + #elif $cluster_cond.cluster_cols_rows=="columns": + heatmap.2(linput, dendrogram="column", Colv=TRUE, Rowv=FALSE, + distfun=dist_fun, hclustfun=hclust_fun, scale = '$scale', labRow = rlabs, labCol = clabs, + col=colfunc(50), trace="none", density.info = "none", margins=c(8,8), + main = '$title', key.xlab='$key', keysize=1, cexCol=0.8, cexRow = 0.8, srtCol=45) + #else + heatmap.2(linput, + distfun=dist_fun, hclustfun=hclust_fun, scale = '$scale', labRow = rlabs, labCol = clabs, + col=colfunc(50), trace="none", density.info = "none", margins=c(8,8), + main = '$title', key.xlab='$key', keysize=1, cexCol=0.8, cexRow = 0.8, srtCol=45) + #end if #else heatmap.2(linput, dendrogram="none", Colv=FALSE, Rowv=FALSE, scale = '$scale', labRow = rlabs, labCol = clabs, - col=colfunc(50), trace="none", density.info = "none", margins=c(8,8), + col=colfunc(50), trace="none", density.info = "none", margins=c(8,8), main='$title', key.xlab='$key', keysize=1, cexCol=0.8, cexRow = 0.8, srtCol=45) #end if dev.off() - ]]></configfile> </configfiles> <inputs> <param name="input1" type="data" format="tabular" label="Input should have column headers - these will be the columns that are plotted"/> - <param name="title" type="text" format="txt" label="Plot title"/> - <param name="key" type="text" format="txt" label="key title"/> - <expand macro="transform" /> - <param name="cluster" type="boolean" truevalue="true" falsevalue="false" checked="false" label="Enable data clustering" /> + <param name="title" type="text" format="txt" label="Plot title"/> + <param name="key" type="text" format="txt" label="key title"/> + <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> + <option value="log10">Log10(value) transform my data</option> + <option value="log10plus1">Log10(value+1) transform my data</option> + </param> + <conditional name="cluster_cond"> + <param name="cluster" type="select" label="Enable data clustering"> + <option value="true">Yes</option> + <option value="">No</option> + </param> + <when value="true"> + <param name="cluster_cols_rows" type="select" label="Clustering columns and rows"> + <option value="both" selected="true">Cluster rows and columns</option> + <option value="rows">Cluster rows and not columns</option> + <option value="columns">Cluster columns and not rows</option> + </param> + <param name="distance" type="select" label="Distance method" help="The method used to compute the distance (dissimilarity) between both rows and columns. Default: Euclidean" > + <option value="euclidean" selected="true">Euclidean</option> + <option value="maximum">Maximum</option> + </param> + <param name="clustering" type="select" label="Clustering method" help="The method used to compute the hierarchical clustering. Default: Complete" > + <option value="complete" selected="true">Complete</option> + <option value="average">Average</option> + </param> + </when> + <when value=""/> + </conditional> <param name="labels" type="select" label="Labeling columns and rows" > - <option value="both" selected="True">Label my columns and rows</option> + <option value="both" selected="true">Label my columns and rows</option> <option value="rows">Label rows and not columns</option> <option value="columns">Label columns and not rows</option> <option value="none">Do not label rows or columns</option> </param> <param name="colorscheme" type="select" label="Coloring groups" > - <option value="whrd" selected="True">White to red</option> + <option value="whrd" selected="true">White to red</option> <option value="whblu">White to blue</option> <option value="blwhre">Blue to white to red</option> </param> <param name="scale" type="select" label="Data scaling" > - <option value="none" selected="True">Do not scale my data</option> + <option value="none" selected="true">Do not scale my data</option> <option value="row">Scale my data by row</option> <option value="column">Scale my data by column</option> </param> </inputs> <outputs> - <data name="output1" format="pdf" from_work_dir="Rplot.pdf"/> + <data name="output1" format="pdf"/> </outputs> <tests> <test> <param name="input1" value="mtcars.txt"/> - <output name="output1" file="ggplot_heatmap2_result1.pdf" compare="sim_size"/> + <param name="cluster" value="true"/> + <output name="output1" file="result1.pdf" compare="sim_size"/> + </test> + <test> + <param name="input1" value="mtcars.txt"/> + <param name="cluster" value=""/> + <output name="output1" file="result2.pdf" compare="sim_size"/> </test> </tests> <help><![CDATA[ -This tool will generate a clustered heatmap of your data. More customization options will be added, for now the heatmap uses a red coloring scheme and clustering is performed using the "maximum" similarity measure and the "complete" hierarchical clustering measure. +This tool employs the heatmap.2 function from the R gplots package and will generate a heatmap of your data. If clustering is enabled, the heatmap uses the Euclidean distance method and the Complete hierarchical clustering method by default. -Input data should have row labels in the first column and column labels. For example, the row labels (the first column) should represent gene IDs and the column labels should represent sample IDs. - -This wrapper employs the heatmap.2 function of R. +Input data should have row labels in the first column and column labels. For example, the row labels (the first column) should represent gene IDs and the column labels should represent sample IDs. ]]></help> <citations> </citations>
--- a/macros.xml Sat Jul 28 03:44:29 2018 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,291 +0,0 @@ -<?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 $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="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> - <option value="log10">Log10(value) transform my data</option> - <option value="log10plus1">Log10(value+1) transform my data</option> - </param> - </xml> - <xml name="xy_scaling"> - <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-defined 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="" 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"> - <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="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{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}, - } - </citation> - <yield /> - </citations> - </xml> - <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="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> - <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>