Mercurial > repos > iuc > volcanoplot
changeset 3:6d532d760950 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/volcanoplot commit 16205b1cd782c5a4f7c08af7d4ee50dc5903418b
author | iuc |
---|---|
date | Tue, 12 Feb 2019 05:32:23 -0500 |
parents | d1d39c72b755 |
children | 73b8cb5bddcd |
files | volcanoplot.R volcanoplot.xml |
diffstat | 2 files changed, 43 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/volcanoplot.R Sun Dec 30 08:03:58 2018 -0500 +++ b/volcanoplot.R Tue Feb 12 05:32:23 2019 -0500 @@ -27,8 +27,12 @@ "title", "T", 1, "character", "xlab", "X", 1, "character", "ylab", "Y", 1, "character", + "xmin", "m", 1, "double", + "xmax", "M", 1, "double", + "ymax", "W", 1, "double", "legend", "L", 1, "character", - "llabs", "z", 1, "character"), + "llabs", "z", 1, "character", + "boxes", "b", 0, "logical"), byrow=TRUE, ncol=4) opt <- getopt(spec) @@ -38,7 +42,7 @@ results$fdr <- results[, opt$fdr_col] results$Pvalue <- results[, opt$pval_col] results$logFC <- results[, opt$lfc_col] -results$labels <- results[, opt$label_col] +results$labels <- as.character(results[, opt$label_col]) label_down <- unlist(strsplit(opt$llabs, split=","))[1] label_notsig <- unlist(strsplit(opt$llabs, split=","))[2] label_up <- unlist(strsplit(opt$llabs, split=","))[3] @@ -47,19 +51,19 @@ results <- mutate(results, sig=ifelse((fdr<opt$signif_thresh & logFC>opt$lfc_thresh), label_up, ifelse((fdr<opt$signif_thresh & logFC < -opt$lfc_thresh),label_down, label_notsig))) results <- results[order(results$Pvalue),] if (!is.null(opt$label_file)) { - labelfile <- read.delim(opt$label_file) + labelfile <- read.delim(opt$label_file, stringsAsFactors=FALSE) # label genes specified in file - tolabel <- filter(results, labels %in% labelfile[, 1]) + results <- mutate(results, labels=ifelse(labels %in% labelfile[, 1], labels, "")) } else if (is.null(opt$top_num)) { # label all significant genes - tolabel <- filter(results, sig != label_notsig) + results <- mutate(results, labels=ifelse(sig != label_notsig, labels, "")) } else if (opt$top_num > 0) { # label only top significant genes - tolabel <- filter(results, sig != label_notsig) %>% - top_n(n=-opt$top_num, Pvalue) + top <- filter(results, sig != label_notsig) %>% top_n(n=-opt$top_num, Pvalue) + results <- mutate(results, labels=ifelse(labels %in% top$labels, labels, "")) } else if (opt$top_num == 0) { # no labels - tolabel <- NULL + results$labels <- NULL } pdf("out.pdf") @@ -81,13 +85,23 @@ if (!is.null(opt$ylab)) { p <- p + ylab(opt$ylab) } +if (!is.null(opt$xmin) & !is.null(opt$xmax)) { + p <- p + xlim(opt$xmin, opt$xmax) +} +if (!is.null(opt$ymax)) { + p <- p + ylim(0, opt$ymax) +} if (!is.null(opt$legend)) { p <- p + labs(colour=opt$legend) } else { p <- p + labs(colour="") } -if (!is.null(tolabel)) { - p <- p + geom_label_repel(data=tolabel, aes(label=labels, fill=factor(sig)), colour="white", segment.colour="black", show.legend=FALSE) +if (!is.null(results$labels)) { + if (!is.null(opt$boxes)) { + p <- p + geom_label_repel(aes(label=labels, fill=sig), segment.colour="black", colour="white", min.segment.length=0, show.legend=FALSE) + } else { + p <- p + geom_text_repel(aes(label=labels, col=sig), min.segment.length=0, box.padding=0.3, point.padding=0.3, show.legend=FALSE) + } } print(p)
--- a/volcanoplot.xml Sun Dec 30 08:03:58 2018 -0500 +++ b/volcanoplot.xml Tue Feb 12 05:32:23 2019 -0500 @@ -1,9 +1,9 @@ -<tool id="volcanoplot" name="Volcano Plot" version="0.0.2"> +<tool id="volcanoplot" name="Volcano Plot" version="0.0.3"> <description>create a volcano plot</description> <requirements> - <requirement type="package" version="3.0.0">r-ggplot2</requirement> + <requirement type="package" version="3.1.0">r-ggplot2</requirement> <requirement type="package" version="0.8.0">r-ggrepel</requirement> - <requirement type="package" version="0.7.6">r-dplyr</requirement> + <requirement type="package" version="0.7.8">r-dplyr</requirement> <requirement type="package" version="1.20.2">r-getopt</requirement> </requirements> <version_command><![CDATA[ @@ -29,6 +29,9 @@ #else -t 0 #end if + #if $plot_options.boxes: + -b + #end if #if $plot_options.title: -T '$plot_options.title' #end if @@ -38,6 +41,15 @@ #if $plot_options.ylab: -Y '$plot_options.ylab' #end if + #if $plot_options.xmin: + -m '$plot_options.xmin' + #end if + #if $plot_options.xmax: + -M '$plot_options.xmax' + #end if + #if $plot_options.ymax: + -W '$plot_options.ymax' + #end if #if $plot_options.legend: -L '$plot_options.legend' #end if @@ -66,9 +78,13 @@ </when> </conditional> <section name="plot_options" expanded="false" title="Plot Options"> + <param name="boxes" type="boolean" truevalue="True" falsevalue="False" checked="True" label="Label Boxes" help="If this is set to Yes, the labels for the points will be in boxes. Default: Yes"/> <param name="title" type="text" optional="True" label="Plot title"/> <param name="xlab" type="text" optional="True" label="Label for x axis"/> <param name="ylab" type="text" optional="True" label="Label for y axis"/> + <param name="xmin" type="float" optional="True" label="Minimum value for x axis" help="To customise the x axis limits, specify both minimum and maximum values. Leave empty for automatic values."/> + <param name="xmax" type="float" optional="True" label="Maximum value for x axis" help="To customise the x axis limits, specify both minimum and maximum values. Leave empty for automatic values."/> + <param name="ymax" type="float" optional="True" label="Maximum value for y axis" help="To customise the y axis upper limit, specify the maximum value, the minimum will be 0. Leave empty for automatic value."/> <param name="legend" type="text" optional="True" label="Label for Legend Title"/> <param name="legend_labs" type="text" value="Down,Not Sig,Up" label="Labels for Legend" help="Labels in the legend can be specified. Default: Down,Not Sig,Up"/> </section>