|
0
|
1 <tool id="signature" name="Small RNA Signatures" version="2.0.0">
|
|
|
2 <description></description>
|
|
|
3 <requirements>
|
|
|
4 <requirement type="package" version="0.12.7">bowtie</requirement>
|
|
|
5 <requirement type="package" version="0.1.18">samtools</requirement>
|
|
|
6 <requirement type="package" version="0.7.7">pysam</requirement>
|
|
|
7 <requirement type="package" version="2.14">biocbasics</requirement>
|
|
|
8 <requirement type="package" version="3.0.3">R</requirement>
|
|
|
9 </requirements>
|
|
|
10 <command interpreter="python">
|
|
|
11 signature.py
|
|
|
12 --input $refGenomeSource.input
|
|
|
13 --inputFormat $refGenomeSource.input.ext
|
|
|
14 --minquery $minquery
|
|
|
15 --maxquery $maxquery
|
|
|
16 --mintarget $mintarget
|
|
|
17 --maxtarget $maxtarget
|
|
|
18 --minscope $minscope
|
|
|
19 --maxscope $maxscope
|
|
|
20 --outputOverlapDataframe $output
|
|
|
21 #if $refGenomeSource.genomeSource == "history":
|
|
|
22 --referenceGenome $refGenomeSource.ownFile
|
|
|
23 #else:
|
|
|
24 #silent reference= filter( lambda x: str( x[0] ) == str( $input.dbkey ), $__app__.tool_data_tables[ 'bowtie_indexes' ].get_fields() )[0][-1]
|
|
|
25 --referenceGenome $reference
|
|
|
26 --extract_index
|
|
|
27 #end if
|
|
|
28 --graph $graph_type
|
|
|
29 --rcode $sigplotter
|
|
|
30 </command>
|
|
|
31
|
|
|
32 <inputs>
|
|
|
33 <conditional name="refGenomeSource">
|
|
|
34 <param name="genomeSource" type="select" label="Will you select a reference genome from your history or use a built-in index?" help="Built-ins were indexed using default options">
|
|
|
35 <option value="indexed">Use a built-in index</option>
|
|
|
36 <option value="history">Use one from the history</option>
|
|
|
37 </param>
|
|
|
38 <when value="indexed">
|
|
|
39 <param name="input" type="data" format="tabular,sam,bam" label="Compute signature from this bowtie standard output">
|
|
|
40 <validator type="dataset_metadata_in_data_table" table_name="bowtie_indexes" metadata_name="dbkey" metadata_column="0" message="database not set for this bowtie output. Select the database(=genome used for matching) manually, or select a reference fasta from your history."/>
|
|
|
41 </param>
|
|
|
42 </when>
|
|
|
43 <when value="history">
|
|
|
44 <param name="ownFile" type="data" format="fasta" label="Select the fasta reference" />
|
|
|
45 <param name="input" type="data" format="tabular,sam,bam" label="Compute signature from this bowtie standard output"/>
|
|
|
46 </when>
|
|
|
47 </conditional> <!-- refGenomeSource -->
|
|
|
48 <param name="minquery" type="integer" size="3" value="23" label="Min size of query small RNAs" help="'23' = 23 nucleotides"/>
|
|
|
49 <param name="maxquery" type="integer" size="3" value="29" label="Max size of query small RNAs" help="'29' = 29 nucleotides"/>
|
|
|
50 <param name="mintarget" type="integer" size="3" value="23" label="Min size of target small RNAs" help="'23' = 23 nucleotides"/>
|
|
|
51 <param name="maxtarget" type="integer" size="3" value="29" label="Max size of target small RNAs" help="'29' = 29 nucleotides"/>
|
|
|
52 <param name="minscope" type="integer" size="3" value="1" label="Minimal relative overlap analyzed" help="'1' = 1 nucleotide overlap"/>
|
|
|
53 <param name="maxscope" type="integer" size="3" value="26" label="Maximal relative overlap analyzed" help="'1' = 1 nucleotide overlap"/>
|
|
|
54 <param name="graph_type" type="select" label="Graph type" help="Signature can be computed globally or by item present in the alignment file">
|
|
|
55 <option value="global" selected="True">Global</option>
|
|
|
56 <option value="lattice">Lattice</option>
|
|
|
57 </param>
|
|
|
58 </inputs>
|
|
|
59
|
|
|
60 <configfiles>
|
|
|
61 <configfile name="sigplotter">
|
|
|
62 graph_type = "${graph_type}"
|
|
|
63
|
|
|
64 globalgraph = function () {
|
|
|
65 ## Setup R error handling to go to stderr
|
|
|
66 options( show.error.messages=F,
|
|
|
67 error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
|
|
|
68 signature = read.delim("${output}", header=TRUE)
|
|
|
69 signaturez=(signature[,2] -mean(signature[,2]))/sd(signature[,2])
|
|
|
70 YLIM=max(signature[,2])
|
|
|
71
|
|
|
72 ## Open output2 PDF file
|
|
|
73 pdf( "${output2}" )
|
|
|
74 par(mfrow=c(2,2),oma = c(0, 0, 3, 0))
|
|
|
75
|
|
|
76 plot(signature[,1:2], type = "h", main="Numbers of pairs", cex.main=1, xlab="overlap (nt)", ylim=c(0,YLIM), ylab="Numbers of pairs", col="darkslateblue", lwd=4)
|
|
|
77
|
|
|
78 plot(signaturez, type = "l", main="Number of pairs Z-scores", cex.main=1, xlab="overlap (nt)", ylab="z-score", pch=19, cex=0.2, col="darkslateblue", lwd=2, cex.lab=1, cex.axis=1, xaxt="n")
|
|
|
79 axis(1, at=seq(from=1, to=length(signature[,1]), by=3) )
|
|
|
80
|
|
|
81 plot(signature[,1], signature[,3]*100, type = "l", main="Overlap probabilities",
|
|
|
82 cex.main=1, xlab="overlap (nt)", ylab="Probability [%]", ylim=c(0,50),
|
|
|
83 pch=19, col="darkslateblue", lwd=2, cex.lab=1, cex.axis=1, xaxt="n")
|
|
|
84 axis(1, at=seq(from=1, to=length(signature[,1]), by=3) )
|
|
|
85
|
|
|
86 overlap_prob_z=(signature[,3] -mean(signature[,3]))/sd(signature[,3])
|
|
|
87 plot(overlap_prob_z, type = "l", main="Overlap Probability Z-scores", cex.main=1, xlab="overlap (nt)", ylab="z-score", pch=19, cex=0.2, col="darkslateblue", lwd=2, cex.lab=1, cex.axis=1, xaxt="n")
|
|
|
88 axis(1, at=seq(from=1, to=length(signature[,1]), by=3) )
|
|
|
89
|
|
|
90 mtext("Overlap Signatures of ${minquery}-${maxquery} against ${mintarget}-${maxtarget}nt small RNAs", outer = TRUE, cex=1)
|
|
|
91 devname = dev.off()
|
|
|
92 ## Close the PDF file
|
|
|
93 }
|
|
|
94
|
|
|
95 treillisgraph = function () {
|
|
|
96 ## Open output2 PDF file
|
|
|
97 pdf( "${output2}", paper="special", height=11.69, width=8.2677 )
|
|
|
98 signature = read.delim("${output}", header=TRUE)
|
|
|
99 options( show.error.messages=F,
|
|
|
100 error = function () { cat( geterrmessage(), file=stderr() ); q( "no", 1, F ) } )
|
|
|
101 library(lattice)
|
|
|
102 print (xyplot(signature[,3]*100~signature[,1]|signature[,4], type = "l", xlim=c(1,26), main="ping-pong Signature of ${minquery}-${maxquery} against ${mintarget}-${maxtarget}nt small RNAs",
|
|
|
103 par.strip.text=list(cex=.5), strip=strip.custom(which.given=1, bg="lightblue"), scales=list(cex=0.5),
|
|
|
104 cex.main=1, cex=.5, xlab="overlap (nt)", ylab="ping-pong signal [%]",
|
|
|
105 pch=19, col="darkslateblue", lwd =1.5, cex.lab=1.2, cex.axis=1.2,
|
|
|
106 layout=c(4,12), as.table=TRUE, newpage = T) )
|
|
|
107 devnname = dev.off()
|
|
|
108 }
|
|
|
109
|
|
|
110 if (graph_type=="global") {
|
|
|
111 globalgraph()
|
|
|
112
|
|
|
113 }
|
|
|
114 if(graph_type=="lattice") {
|
|
|
115 treillisgraph()
|
|
|
116 }
|
|
|
117 </configfile>
|
|
|
118 </configfiles>
|
|
|
119
|
|
|
120 <outputs>
|
|
|
121 <data name="output" format="tabular" label = "signature data frame"/>
|
|
|
122 <data name="output2" format="pdf" label="Overlap probabilities"/>
|
|
|
123 </outputs>
|
|
|
124
|
|
|
125 <help>
|
|
|
126
|
|
|
127 **What it does**
|
|
|
128
|
|
|
129 This tool computes the number of pairs by overlap classes (in nt) from a bowtie output file, the z-score calculated from these numbers of pairs, and the ping-pong signal as described in Brennecke et al (2009) Science.
|
|
|
130 The numerical options set the min and max size of both the query small rna class and the target small rna class
|
|
|
131 Three type of signals are plotted in separate pdf files, the number of pairs founds, the z-score calculated from these numbers of pairs, and the ping-pong signal as described in Brennecke et al (2009) Science.
|
|
|
132
|
|
|
133 </help>
|
|
|
134
|
|
|
135 <test>
|
|
|
136 <param name="genomeSource" value="history" />
|
|
|
137 <param name="ownFile" value ="transposons.fasta" ftype="fasta" />
|
|
|
138 <param name="input" value="sr_bowtie.output" ftype="tabular" />
|
|
|
139 <param name="minquery" value="23" />
|
|
|
140 <param name="maxquery" value="29" />
|
|
|
141 <param name="mintarget" value="23" />
|
|
|
142 <param name="maxtarget" value="29" />
|
|
|
143 <param name="minscope" value="1" />
|
|
|
144 <param name="maxscope" value="26" />
|
|
|
145 <param name="graph_type" value="global" />
|
|
|
146 <output name="readmap_dataframe" ftype="tabular" value="signature_data_frame.tab"/>
|
|
|
147 <output name="readmap_PDF" ftype="pdf" value="Overlap_probabilities.pdf"/>
|
|
|
148 </test>
|
|
|
149
|
|
|
150
|
|
|
151
|
|
|
152 </tool>
|
|
|
153
|