Mercurial > repos > guru-ananda > karyotype_plot
changeset 0:b1e0bf394aa9 draft
Imported from capsule None
author | devteam |
---|---|
date | Thu, 22 Jan 2015 10:40:48 -0500 |
parents | |
children | d3bfdb887090 |
files | karyotype/karyotype_plot.xml karyotype/r_wrapper.sh karyotype/static/operation_icons/karyotype_output.png karyotype/tool_dependencies.xml |
diffstat | 4 files changed, 222 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/karyotype/karyotype_plot.xml Thu Jan 22 10:40:48 2015 -0500 @@ -0,0 +1,178 @@ +<tool id="karyotype_Plot_1" name="Karyotype Plotting tool" version="1.0.0"> + <description>for multiple series </description> + <command interpreter="bash">\$R_SCRIPT_PATH/r_wrapper.sh $script_file</command> + + <inputs> + <param name="main" type="text" value="" size="30" label="Plot Title"/> + <param name="xlab" type="text" value="" size="30" label="Label for x axis"/> + <param name="ylab" type="text" value="" size="30" label="Label for y axis"/> + <param name="lty" type="select" label="Backbone Line Type"> + <option value="1">Solid</option> + <option value="2">Dashed</option> + <option value="3">Dotted</option> + </param> + <param name="col" type="select" label="Backbone Line Color"> + <option value="1">Black</option> + <option value="2">Red</option> + <option value="3">Green</option> + <option value="4">Blue</option> + <option value="5">Cyan</option> + <option value="6">Magenta</option> + <option value="7">Yellow</option> + <option value="8">Gray</option> + </param> + <param name="lwd" type="float" label="Backbone Line Width" value="1.0"/> + + <conditional name="legend"> + <param name="status" type="select" label="Include legend?"> + <option value="yes" selected="true">Yes</option> + <option value="no">No</option> + </param> + <when value="yes"> + <param name="leg_title" type="text" value="" size="30" label="Legend title"/> + <param name="leg_pos" type="select" label="Legend position"> + <option value="top" selected="true">top</option> + <option value="topright">topright</option> + <option value="topleft">topleft</option> + <option value="bottom">bottom</option> + <option value="bottomright">bottomright</option> + <option value="bottomleft">bottomleft</option> + <option value="left">left</option> + <option value="right">right</option> + <option value="center">center</option> + </param> + </when> + <when value="no"> + </when> + </conditional> + + <repeat name="series" title="Series"> + <param name="input" type="data" format="tabular" label="Dataset"/> + <param name="chrcolumn" type="data_column" data_ref="input" label="Chromosome Column"/> + <param name="startcolumn" type="data_column" data_ref="input" numerical="True" label="Start Column"/> + <param name="endcolumn" type="data_column" data_ref="input" numerical="True" label="End Column"/> + <param name="fpch" type="select" label="Point Type"> + <option value="1">Circle (hollow)</option> + <option value="2">Triangle (hollow)</option> + <option value="3">Cross</option> + <option value="4">Diamond (hollow)</option> + <option value="15">Square (filled)</option> + <option value="16">Circle (filled)</option> + <option value="17">Triangle (filled)</option> + </param> + <param name="fcol" type="select" label="Point Color"> + <option value="1">Black</option> + <option value="2">Red</option> + <option value="3">Green</option> + <option value="4">Blue</option> + <option value="5">Cyan</option> + <option value="6">Magenta</option> + <option value="7">Yellow</option> + <option value="8">Gray</option> + </param> + <param name="fcex" type="float" label="Point Scale" value="1.0"/> + <param name="leg_text" type="text" value="" size="30" label="Legend text" help="Will be printed only if Include Legend option is set to Yes"/> + </repeat> + </inputs> + + <configfiles> + <configfile name="script_file"> + ## Setup R error handling to go to stderr + options( show.error.messages=F, + error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) }, + warn = -1 ) + ## Determine range of all series in the plot + library('gtools') + chrlist = c() + coordrange = c( NULL, NULL ) + #for $i, $s in enumerate( $series ) + s${i} = read.table( "${s.input.file_name}" ) + chrlist = union( chrlist, as.character(unique(s${i}[,${s.chrcolumn}])) ) + coordrange = range( coordrange, range(s${i}[,${s.startcolumn}]), range(s${i}[,${s.endcolumn}]) ) + #end for + chrlist=mixedsort(chrlist) + coordrange_byChr=list() + length(coordrange_byChr) = length(chrlist)*2 + dim(coordrange_byChr) = c(length(chrlist),2) + ci=1 + for (chr in chrlist) { + #for $i, $s in enumerate( $series ) + s${i} = read.table( "${s.input.file_name}" ) + if (nrow(s${i}[s${i}[,${s.chrcolumn}]==chr,]) > 0) { + coordrange_byChr[ci,]=range(coordrange_byChr[ci,], s${i}[s${i}[,${s.chrcolumn}]==chr,c(${s.startcolumn},${s.endcolumn})]) + } + #end for + ci=ci+1 + } + ## Open output PDF file + pdf( "${out_file1}" ) + ## Dummy plot for axis / labels + plot( NULL, type="n", xlim=c(1,length(chrlist)), ylim=coordrange, axes=F, main="${main}", xlab="${xlab}", ylab="${ylab}" ) + box() + axis(1,at=1:length(chrlist),labels=chrlist,cex.axis=0.9, las=2) + axis(2,at=seq(coordrange[1],coordrange[2], length.out=10)) + ## Plot backbone lines for each chr + ci=1 + for (chr in chrlist) { + lines(c(ci,ci),coordrange_byChr[ci,],lty=${lty},col=${col},lwd=${lwd}) + ci=ci+1 + } + + legend_text=c() + pchlist=c() + colorlist=c() + ## Plot each series + #for $i, $s in enumerate( $series ) + chrs=as.character(s${i}[,${s.chrcolumn}]) + xvals=sapply(chrs,function(x) which(chrlist==x)) + points(xvals, s${i}[,${s.startcolumn}], pch=${s.fpch}, cex=${s.fcex}, col=${s.fcol} ) + legend_text[${i}+1] = "${s.leg_text}" + pchlist[${i}+1] = ${s.fpch} + colorlist[${i}+1] = ${s.fcol} + #end for + + #if $legend['status'] == "yes" + legend_title = "$legend.leg_title" + legend_pos = "$legend.leg_pos" + legend(legend_pos, title=legend_title, legend=legend_text, pch=pchlist, col=colorlist) + #end if + + ## Close the PDF file + devname = dev.off() + </configfile> + </configfiles> + + <outputs> + <data format="pdf" name="out_file1" /> + </outputs> + + <requirements> + <requirement type="set_environment">R_SCRIPT_PATH</requirement> + <requirement type="package" version="2.15.0">R</requirement> + </requirements> + +<help> +.. class:: infomark + +**What it does** + +This tool allows you to paint genomic regions of interest on chromosomes arranged in a karyotype-like fashion. It also allows you to have multiple series in a plot, with each series corresponding to a different feature/dataset. + +----- + +.. class:: warningmark + +Chromosome lengths (backbone line) are determined based on min and max co-ordinates (by chromosome) in start and end columns respectively. For the series, only the co-ordiantes in start column are used for plotting. + +----- + +**Example** + +Below is an example of a two series karyotype plot: + +.. image:: ./static/operation_icons/karyotype_output.png + :height: 540 + :width: 540 + +</help> +</tool>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/karyotype/r_wrapper.sh Thu Jan 22 10:40:48 2015 -0500 @@ -0,0 +1,23 @@ +#!/bin/sh + +### Run R providing the R script in $1 as standard input and passing +### the remaining arguments on the command line + +# Function that writes a message to stderr and exits +function fail +{ + echo "$@" >&2 + exit 1 +} + +# Ensure R executable is found +which R > /dev/null || fail "'R' is required by this tool but was not found on path" + +# Extract first argument +infile=$1; shift + +# Ensure the file exists +test -f $infile || fail "R input file '$infile' does not exist" + +# Invoke R passing file named by first argument to stdin +R --vanilla --slave $* < $infile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/karyotype/tool_dependencies.xml Thu Jan 22 10:40:48 2015 -0500 @@ -0,0 +1,21 @@ +<?xml version="1.0"?> +<tool_dependency> + <set_environment version="1.0"> + <environment_variable name="R_SCRIPT_PATH" action="set_to">$REPOSITORY_INSTALL_DIR</environment_variable> + </set_environment> + <package name="R" version="2.15.0"> + <install version="1.0"> + <actions> + <action type="download_by_url">http://CRAN.R-project.org/src/base/R-2/R-2.15.0.tar.gz</action> + <action type="shell_command">./configure --prefix=$INSTALL_DIR</action> + <action type="shell_command">make</action> + <action type="set_environment"> + <environment_variable name="PATH" action="prepend_to">$INSTALL_DIR/bin</environment_variable> + </action> + </actions> + </install> + <readme> +You need a FORTRAN compiler or perhaps f2c in addition to a C compiler to build R. + </readme> + </package> +</tool_dependency>