0
|
1 <tool id="genomeview" name="whole genome">
|
|
2 <description>plot and correlation</description>
|
|
3 <command>cat $script_file | R --vanilla --slave 2> err.log </command>
|
|
4 <inputs>
|
|
5 <param name="genome" type="select" label="Select genome">
|
|
6 <option value="/Users/xuebing/galaxy-dist/tool-data/genome/chrsize/mouse.mm9.genome" selected="true">mm9</option>
|
|
7 <option value="/Users/xuebing/galaxy-dist/tool-data/genome/chrsize/mouse.mm8.genome">mm8</option>
|
|
8 <option value="/Users/xuebing/galaxy-dist/tool-data/genome/chrsize/human.hg18.genome">hg18</option>
|
|
9 <option value="/Users/xuebing/galaxy-dist/tool-data/genome/chrsize/human.hg19.genome">hg19</option>
|
|
10 </param>
|
|
11 <param name="resolution" type="integer" label="resolution" value="5000" help="resolution in bps. It must be between 200 and 10,000,000">
|
|
12 <validator type="in_range" max="1000000000" min="200" message="Resolution is out of range, Resolution has to be between 200 to 100000000" />
|
|
13 </param>
|
|
14 <param name="log" label="plot the log" type="boolean" truevalue="log" falsevalue="none" checked="False"/>
|
|
15 <param name="union" label="compute correlation in union regions" help="ignore regions covered by neither interval sets. Recommended for sparse data under high resolution when most regions are empty" type="boolean" truevalue="union" falsevalue="none" checked="False"/>
|
|
16 <repeat name="series" title="input file">
|
|
17 <param name="label" type="text" value="" size="30" label="Data Label"/>
|
|
18 <param name="input" type="data" format="interval" label="Dataset"/>
|
|
19 </repeat>
|
|
20 </inputs>
|
|
21
|
|
22 <configfiles>
|
|
23 <configfile name="script_file">
|
|
24 ## Setup R error handling to go to stderr
|
|
25 options(warn=-1)
|
|
26 source("/Users/xuebing/galaxy-dist/tools/mytools/genomeview.r")
|
|
27 genome = read.table( "${genome}")
|
|
28 uselog = as.character("${log}")
|
|
29 union = as.character("${union}")
|
|
30 resolution = as.integer("${resolution}")
|
|
31 cat('resolution=',resolution,'\n')
|
|
32 offset = caloffset(genome)
|
|
33 mcov = matrix(ncol=1,nrow=as.integer(offset[length(offset)] / resolution))
|
|
34 ## Open output PDF file
|
|
35 pdf( "${out_file1}" ,height=4,width=20)
|
|
36 labels = character(0)
|
|
37 ## Determine range of all series in the plot
|
|
38 #for $i, $s in enumerate( $series )
|
|
39 x = read.table( "${s.input.file_name}" )
|
|
40 res = coverage(x,genome,offset,resolution)
|
|
41 plotcov(res,genome,offset,"${s.label.value}",uselog)
|
|
42 labels = c(labels,"${s.label.value}")
|
|
43 attach(res)
|
|
44 mcov = cbind(mcov,cov)
|
|
45 detach(res)
|
|
46 #end for
|
|
47 dev.off()
|
|
48 pdf("${out_file2}")
|
|
49 mcov = mcov[,-1]
|
|
50 nSample = length(labels)
|
|
51 if (nSample > 1) {
|
|
52 if (union == 'union') {
|
|
53 cm = matrix(0,nrow=nSample,ncol=nSample)
|
|
54 for (i in 1:(nSample-1)) {
|
|
55 cm[i,i] = 1
|
|
56 for (j in (i+1):nSample){
|
|
57 cm[i,j] = union_correlation(mcov[,i],mcov[,j])
|
|
58 cm[j,i] = cm[i,j]
|
|
59 }
|
|
60 }
|
|
61 cm[nSample,nSample] = 1
|
|
62 } else {
|
|
63 cm = cor(mcov)
|
|
64 }
|
|
65 rm(mcov)
|
|
66 ##heatmap(-cm,margins=c(8,8),sym=T,scale='none',labRow=labels,labCol=labels)
|
|
67 ##heatmap2(cm,'none',TRUE,c(8,8),labels,labels)
|
|
68 x = cm
|
|
69 h = heatmap(-x,scale='none',sym=T,margins=c(8,8),labRow=labels,labRol=labels)
|
|
70 attach(h)
|
|
71 x = x[rowInd,colInd]
|
|
72 tx = numeric(0)
|
|
73 ty = numeric(0)
|
|
74 txt = character(0)
|
|
75 for (i in 1:nrow(x)){
|
|
76 for (j in 1:ncol(x)){
|
|
77 tx = c(tx,i)
|
|
78 ty = c(ty,ncol(x)-j+1)
|
|
79 txt = c(txt,round(x[i,j]*100)/100)
|
|
80 }
|
|
81 }
|
|
82 heatmap(-x,scale='none',sym=T,margins=c(8,8),labRow=labels[rowInd],labCol=labels[colInd],add.expr=text(tx,ty,txt,col='black'))
|
|
83 library(gplots)
|
|
84 heatmap.2(cm,margins=c(8,8),scale='none',key=TRUE,trace='none', symkey=T,symbreaks=T,col=bluered,labRow=labels,labCol=labels,symm=T)
|
|
85 }
|
|
86 dev.off()
|
|
87 </configfile>
|
|
88 </configfiles>
|
|
89
|
|
90 <outputs>
|
|
91 <data format="pdf" name="out_file1" label="${tool.name} on ${on_string}: (plot)" />
|
|
92 <data format="pdf" name="out_file2" label="${tool.name} on ${on_string}: (correlation)" />
|
|
93 </outputs>
|
|
94
|
|
95 <help>
|
|
96 .. class:: infomark
|
|
97
|
|
98 This tool allows you to plot multiple intervals across all chromosomes at different resolution, and it also plots the correlation matrix if multiple intervals are provided.
|
|
99
|
|
100 -----
|
|
101
|
|
102 **Example**
|
|
103
|
|
104 .. image:: ./static/images/correlationmatrix.png
|
|
105 .. image:: ./static/images/wholegenome.png
|
|
106
|
|
107 </help>
|
|
108 </tool>
|