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>