Mercurial > repos > artbio > high_dim_heatmap
diff heatmap.xml @ 0:22d5d811dc37 draft
planemo upload for repository https://github.com/artbio/tools-artbio/tree/master/tools/high_dim_heatmap commit 3839913fd15008dd999f2da10dcb6797ddb8dbdc
author | artbio |
---|---|
date | Sat, 20 Jul 2019 17:55:20 -0400 |
parents | |
children | 58b36ae7baca |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/heatmap.xml Sat Jul 20 17:55:20 2019 -0400 @@ -0,0 +1,208 @@ +<tool id="high_dim_heatmap" name="Plot heatmap" version="1.0.0"> + <description>with high number of rows</description> + <requirements> + <requirement type="package" version="3.0.1">r-gplots</requirement> + <requirement type="package" version="1.1_2">r-rcolorbrewer</requirement> + </requirements> + <command detect_errors="exit_code"><![CDATA[ +cat '$script' && +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)}) + +## Unify locale settings +loc <- Sys.setlocale("LC_MESSAGES", "en_US.UTF-8") + +## Import library +library("RColorBrewer") +library("gplots") + +input <- read.delim('$input1', sep='\t', header=TRUE) + +mat_input <- data.matrix(input[,2:ncol(input)]) +rownames(mat_input) <- input[,1] + +#if $transform == "none" + linput <- mat_input +#elif $transform == "log2" + linput <- log2(mat_input) +#elif $transform == "log2plus1" + linput <- log2(mat_input+1) +#elif $transform == "log10" + linput <- log10(mat_input) +#elif $transform == "log10plus1" + linput <- log10(mat_input+1) +#end if + +#if $colorscheme == "whrd" + colorscale = colfunc <- colorRampPalette(c("white", "red")) +#elif $colorscheme == "whblu" + colorscale = colfunc <- colorRampPalette(c("white", "blue")) +#elif $colorscheme == "blwhre" + colorscale = colfunc <- colorRampPalette(c("blue","white", "red")) +#end if + +#if $labels== "both" + rlabs = NULL + clabs = NULL +#elif $labels== "rows" + rlabs = NULL + clabs = FALSE +#elif $labels== "columns" + rlabs = FALSE + clabs = NULL +#elif $labels== "none" + rlabs = FALSE + clabs = FALSE +#end if + +pdf(file='$output1', paper='special', height=$height) +colorscale + +#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 = $rowfontsize, srtCol=45, + lhei=c(1, $lineheight)) + #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 = $rowfontsize, srtCol=45, + lhei=c(1, $lineheight)) + #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 = $rowfontsize, srtCol=45, + lhei=c(1, $lineheight)) + #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), + main='$title', key.xlab='$key', keysize=1, cexCol=0.8, cexRow = $rowfontsize, srtCol=45, + lhei=c(1, $lineheight)) +#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"/> + <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="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="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="row">Scale my data by row</option> + <option value="column">Scale my data by column</option> + </param> + + <param name="height" type="float" label="tweak plot height" value="7" /> + <param name="rowfontsize" type="float" label="tweak row label size" value="0.8" /> + <param name="lineheight" type="integer" label="tweak line height" value="4" /> + </inputs> + <outputs> + <data name="output1" format="pdf"/> + </outputs> + <tests> + <test> + <param name="input1" value="mtcars.txt"/> + <param name="cluster" value="true"/> + <output name="output1" file="result1.pdf"/> + </test> + <test> + <param name="input1" value="mtcars.txt"/> + <param name="cluster" value=""/> + <output name="output1" file="result2.pdf"/> + </test> + <test> + <param name="input1" value="complex_table.tsv"/> + <param name="transform" value="log2plus1"/> + <param name="cluster" value=""/> + <param name="colorscheme" value="blwhre"/> + <param name="height" value="21"/> + <param name="rowfontsize" value="0.4"/> + <param name="lineheight" value="15"/> + <output name="output1" file="complex_result1.pdf"/> + </test> + </tests> + <help><![CDATA[ +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. + +To adapt heatmap.2 to high number of lines, tweak the parameters: + +- `tweak plot height`. By default 7 (inches), this can be increased to 14, 21, 28, etc.. +- `tweak row label size`. By default 0.8. This is usually diminished to 0.3, 0.1, etc to + adapt the label font to high number of rows +- `tweak line height`. By default 4. This is a metric to define the relative size of the + heatmap panel in the plot layout. This is a bit tricky to adjust, but should be adapted + when plot height is increased (typically to 8, 10, 15, etc...) + +For instance, upload the dataset +https://raw.githubusercontent.com/ARTbio/tools-artbio/master/tools/high_dim_heatmap/test-data/complex_table.tsv +to your account and test this tools with: + +- `tweak plot height` : 21.0 +- `tweak row label size`: 0.4 +- `tweak line height`: 14 + + + ]]></help> + <citations> + </citations> +</tool>