0
|
1 <tool id="karyotype_Plot_1" name="Karyotype Plotting tool" version="1.0.0">
|
|
2 <description>for multiple series </description>
|
|
3 <command interpreter="bash">\$R_SCRIPT_PATH/r_wrapper.sh $script_file</command>
|
|
4
|
|
5 <inputs>
|
|
6 <param name="main" type="text" value="" size="30" label="Plot Title"/>
|
|
7 <param name="xlab" type="text" value="" size="30" label="Label for x axis"/>
|
|
8 <param name="ylab" type="text" value="" size="30" label="Label for y axis"/>
|
|
9 <param name="lty" type="select" label="Backbone Line Type">
|
|
10 <option value="1">Solid</option>
|
|
11 <option value="2">Dashed</option>
|
|
12 <option value="3">Dotted</option>
|
|
13 </param>
|
|
14 <param name="col" type="select" label="Backbone Line Color">
|
|
15 <option value="1">Black</option>
|
|
16 <option value="2">Red</option>
|
|
17 <option value="3">Green</option>
|
|
18 <option value="4">Blue</option>
|
|
19 <option value="5">Cyan</option>
|
|
20 <option value="6">Magenta</option>
|
|
21 <option value="7">Yellow</option>
|
|
22 <option value="8">Gray</option>
|
|
23 </param>
|
|
24 <param name="lwd" type="float" label="Backbone Line Width" value="1.0"/>
|
|
25
|
|
26 <conditional name="legend">
|
|
27 <param name="status" type="select" label="Include legend?">
|
|
28 <option value="yes" selected="true">Yes</option>
|
|
29 <option value="no">No</option>
|
|
30 </param>
|
|
31 <when value="yes">
|
|
32 <param name="leg_title" type="text" value="" size="30" label="Legend title"/>
|
|
33 <param name="leg_pos" type="select" label="Legend position">
|
|
34 <option value="top" selected="true">top</option>
|
|
35 <option value="topright">topright</option>
|
|
36 <option value="topleft">topleft</option>
|
|
37 <option value="bottom">bottom</option>
|
|
38 <option value="bottomright">bottomright</option>
|
|
39 <option value="bottomleft">bottomleft</option>
|
|
40 <option value="left">left</option>
|
|
41 <option value="right">right</option>
|
|
42 <option value="center">center</option>
|
|
43 </param>
|
|
44 </when>
|
|
45 <when value="no">
|
|
46 </when>
|
|
47 </conditional>
|
|
48
|
|
49 <repeat name="series" title="Series">
|
|
50 <param name="input" type="data" format="tabular" label="Dataset"/>
|
|
51 <param name="chrcolumn" type="data_column" data_ref="input" label="Chromosome Column"/>
|
|
52 <param name="startcolumn" type="data_column" data_ref="input" numerical="True" label="Start Column"/>
|
|
53 <param name="endcolumn" type="data_column" data_ref="input" numerical="True" label="End Column"/>
|
|
54 <param name="fpch" type="select" label="Point Type">
|
|
55 <option value="1">Circle (hollow)</option>
|
|
56 <option value="2">Triangle (hollow)</option>
|
|
57 <option value="3">Cross</option>
|
|
58 <option value="4">Diamond (hollow)</option>
|
|
59 <option value="15">Square (filled)</option>
|
|
60 <option value="16">Circle (filled)</option>
|
|
61 <option value="17">Triangle (filled)</option>
|
|
62 </param>
|
|
63 <param name="fcol" type="select" label="Point Color">
|
|
64 <option value="1">Black</option>
|
|
65 <option value="2">Red</option>
|
|
66 <option value="3">Green</option>
|
|
67 <option value="4">Blue</option>
|
|
68 <option value="5">Cyan</option>
|
|
69 <option value="6">Magenta</option>
|
|
70 <option value="7">Yellow</option>
|
|
71 <option value="8">Gray</option>
|
|
72 </param>
|
|
73 <param name="fcex" type="float" label="Point Scale" value="1.0"/>
|
|
74 <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"/>
|
|
75 </repeat>
|
|
76 </inputs>
|
|
77
|
|
78 <configfiles>
|
|
79 <configfile name="script_file">
|
|
80 ## Setup R error handling to go to stderr
|
|
81 options( show.error.messages=F,
|
|
82 error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) },
|
|
83 warn = -1 )
|
|
84 ## Determine range of all series in the plot
|
|
85 library('gtools')
|
|
86 chrlist = c()
|
|
87 coordrange = c( NULL, NULL )
|
|
88 #for $i, $s in enumerate( $series )
|
|
89 s${i} = read.table( "${s.input.file_name}" )
|
|
90 chrlist = union( chrlist, as.character(unique(s${i}[,${s.chrcolumn}])) )
|
|
91 coordrange = range( coordrange, range(s${i}[,${s.startcolumn}]), range(s${i}[,${s.endcolumn}]) )
|
|
92 #end for
|
|
93 chrlist=mixedsort(chrlist)
|
|
94 coordrange_byChr=list()
|
|
95 length(coordrange_byChr) = length(chrlist)*2
|
|
96 dim(coordrange_byChr) = c(length(chrlist),2)
|
|
97 ci=1
|
|
98 for (chr in chrlist) {
|
|
99 #for $i, $s in enumerate( $series )
|
|
100 s${i} = read.table( "${s.input.file_name}" )
|
|
101 if (nrow(s${i}[s${i}[,${s.chrcolumn}]==chr,]) > 0) {
|
|
102 coordrange_byChr[ci,]=range(coordrange_byChr[ci,], s${i}[s${i}[,${s.chrcolumn}]==chr,c(${s.startcolumn},${s.endcolumn})])
|
|
103 }
|
|
104 #end for
|
|
105 ci=ci+1
|
|
106 }
|
|
107 ## Open output PDF file
|
|
108 pdf( "${out_file1}" )
|
|
109 ## Dummy plot for axis / labels
|
|
110 plot( NULL, type="n", xlim=c(1,length(chrlist)), ylim=coordrange, axes=F, main="${main}", xlab="${xlab}", ylab="${ylab}" )
|
|
111 box()
|
|
112 axis(1,at=1:length(chrlist),labels=chrlist,cex.axis=0.9, las=2)
|
|
113 axis(2,at=seq(coordrange[1],coordrange[2], length.out=10))
|
|
114 ## Plot backbone lines for each chr
|
|
115 ci=1
|
|
116 for (chr in chrlist) {
|
|
117 lines(c(ci,ci),coordrange_byChr[ci,],lty=${lty},col=${col},lwd=${lwd})
|
|
118 ci=ci+1
|
|
119 }
|
|
120
|
|
121 legend_text=c()
|
|
122 pchlist=c()
|
|
123 colorlist=c()
|
|
124 ## Plot each series
|
|
125 #for $i, $s in enumerate( $series )
|
|
126 chrs=as.character(s${i}[,${s.chrcolumn}])
|
|
127 xvals=sapply(chrs,function(x) which(chrlist==x))
|
|
128 points(xvals, s${i}[,${s.startcolumn}], pch=${s.fpch}, cex=${s.fcex}, col=${s.fcol} )
|
|
129 legend_text[${i}+1] = "${s.leg_text}"
|
|
130 pchlist[${i}+1] = ${s.fpch}
|
|
131 colorlist[${i}+1] = ${s.fcol}
|
|
132 #end for
|
|
133
|
|
134 #if $legend['status'] == "yes"
|
|
135 legend_title = "$legend.leg_title"
|
|
136 legend_pos = "$legend.leg_pos"
|
|
137 legend(legend_pos, title=legend_title, legend=legend_text, pch=pchlist, col=colorlist)
|
|
138 #end if
|
|
139
|
|
140 ## Close the PDF file
|
|
141 devname = dev.off()
|
|
142 </configfile>
|
|
143 </configfiles>
|
|
144
|
|
145 <outputs>
|
|
146 <data format="pdf" name="out_file1" />
|
|
147 </outputs>
|
|
148
|
|
149 <requirements>
|
|
150 <requirement type="set_environment">R_SCRIPT_PATH</requirement>
|
|
151 <requirement type="package" version="2.15.0">R</requirement>
|
|
152 </requirements>
|
|
153
|
|
154 <help>
|
|
155 .. class:: infomark
|
|
156
|
|
157 **What it does**
|
|
158
|
|
159 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.
|
|
160
|
|
161 -----
|
|
162
|
|
163 .. class:: warningmark
|
|
164
|
|
165 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.
|
|
166
|
|
167 -----
|
|
168
|
|
169 **Example**
|
|
170
|
|
171 Below is an example of a two series karyotype plot:
|
|
172
|
|
173 .. image:: ./static/operation_icons/karyotype_output.png
|
|
174 :height: 540
|
|
175 :width: 540
|
|
176
|
|
177 </help>
|
|
178 </tool>
|