Mercurial > repos > vandelj > giant_limma_analysis
comparison galaxy/wrappers/DiffExprLimma.xml @ 0:f274c8d45613 draft
"planemo upload for repository https://github.com/juliechevalier/GIANT/tree/master commit cb276a594444c8f32e9819fefde3a21f121d35df"
author | vandelj |
---|---|
date | Fri, 26 Jun 2020 09:43:41 -0400 |
parents | |
children | 9f2ddab68c9e |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:f274c8d45613 |
---|---|
1 <tool name="GIANT-Differential Expression with LIMMA" id="giant_limma_analysis" version="0.3.8"> | |
2 <description>Use LIMMA to detect differentially expressed genes</description> | |
3 <requirements> | |
4 <requirement type="package" version="1.7.1">r-r.methodss3</requirement> | |
5 <requirement type="package" version="3.36.5">bioconductor-limma</requirement> | |
6 <requirement type="package" version="2.36.1">bioconductor-biomart</requirement> | |
7 <requirement type="package" version="3.0.0">r-ggplot2</requirement> | |
8 <requirement type="package" version="4.8.0">r-plotly</requirement> | |
9 <requirement type="package" version="1.3.1">r-stringr</requirement> | |
10 <requirement type="package" version="1.1_2">r-rcolorbrewer</requirement> | |
11 <requirement type="package" version="1.4.32">r-statmod</requirement> | |
12 </requirements> | |
13 <code file="../../src/LIMMA_options.py"/> | |
14 <stdio> | |
15 <regex match="Execution halted" | |
16 source="both" | |
17 level="fatal" | |
18 description="Execution halted, please contact tool developer or administrators." /> | |
19 <regex match="Error in" | |
20 source="both" | |
21 level="fatal" | |
22 description="An error occured during R execution, please contact tool developer." /> | |
23 <exit_code range="15" level="fatal" description="Error during formating scripts, see log file for more information." /> | |
24 <exit_code range="10" level="fatal" description="Missing file during html report, see log file for more information." /> | |
25 <exit_code range="1:9" level="fatal" description="Error in R execution, see log file for more information." /> | |
26 </stdio> | |
27 <command> <![CDATA[ | |
28 bash $scriptPrepareTable; | |
29 ret_code=\$?; | |
30 if [ \$ret_code != 0 ]; then | |
31 exit \$ret_code; | |
32 fi; | |
33 | |
34 cp '$__tool_directory__/../../src/LIMMA_options.py' ./LIMMA_options.py; | |
35 | |
36 #if $blockingSection.blockingConditional.addBlocking == "true": | |
37 python -c 'import LIMMA_options;LIMMA_options.replaceNamesBlockInFiles("$inputSection.inputData","./factorTable.csv","./blockingTable.csv","./expressionRenamed.csv","./factorTableRenamed.csv","./blockingTableRenamed.csv","./dictionnaryRenamed.csv")'; | |
38 #else: | |
39 python -c 'import LIMMA_options;LIMMA_options.replaceNamesInFiles("$inputSection.inputData","./factorTable.csv","./expressionRenamed.csv","./factorTableRenamed.csv","./dictionnaryRenamed.csv")'; | |
40 #end if | |
41 | |
42 | |
43 if [ -f ./dictionnaryRenamed.csv ]; then | |
44 printf "[INFO]Renaming is done\n" >> $log; | |
45 Rscript '$__tool_directory__/../../src/LIMMAscriptV4.R' -i 'expressionRenamed.csv' -l '$log' -o '$outputData' -z '$outputDfData' -f 'pdf' | |
46 -a 'factorTableRenamed.csv' -s 'sumSquareFtest' -g 'dictionnaryRenamed.csv' | |
47 #if $blockingSection.blockingConditional.addBlocking == "true": | |
48 -b 'blockingTableRenamed.csv' | |
49 -u $advSection.confoundingPolicy | |
50 #end if | |
51 -r '${contrastSection.factorSelection}' | |
52 #for $i, $s in enumerate( $contrastSection.contrastList ) | |
53 -p '${s.groupName}' | |
54 -m '${s.firstGroupToCompare}' | |
55 -n '${s.secondGroupToCompare}' | |
56 #end for | |
57 #if $contrastSection.interactionSelection.interactionContrast == "true": | |
58 -c '$contrastSection.interactionSelection.controlSelection' | |
59 #end if | |
60 -t $plotSection.cutoffTh | |
61 -d $plotSection.FCthreshold | |
62 #if $plotSection.histogramToPlot: | |
63 -h 'Histograms' | |
64 #end if | |
65 #if $plotSection.volcanoToPlot: | |
66 -v 'Volcanos' | |
67 #end if | |
68 #if $plotSection.geneInformation.addGeneInfo: | |
69 -x '$plotSection.geneInformation.organismID' | |
70 -y '$plotSection.geneInformation.infoInRowType' | |
71 #end if | |
72 ; | |
73 ret_code=\$?; | |
74 if [ \$ret_code != 0 ]; then | |
75 exit \$ret_code; | |
76 else | |
77 bash $scriptTransfer; | |
78 ret_code=\$?; | |
79 if [ \$ret_code != 0 ]; then | |
80 exit \$ret_code; | |
81 fi | |
82 fi; | |
83 else | |
84 printf "[ERROR]Error during renaming, factor information file should not contain special characters '*',':',',','|' in factor names and possible values\n" >> $log; | |
85 exit 15; | |
86 fi; | |
87 printf "[INFO]End of tool script" >> $log; | |
88 ]]> | |
89 </command> | |
90 | |
91 | |
92 | |
93 <configfiles> | |
94 <configfile name="scriptPrepareTable"> | |
95 <![CDATA[ | |
96 awk -v fact="$contrastSection.factorSelection" 'BEGIN{OFS="";ORS="";FS="\t";split(fact,tab,",");for(i in tab)dico[tab[i]]=1} FNR==1{for(i=2;i<=NF;i++){if(\$i in dico)colToSelect[i]=1}} {print \$1;for(i in colToSelect)print "\t"\$i ; print "\n"}' $inputSection.conditionInformation > ./factorTable.csv; | |
97 | |
98 if [ ! -e ./factorTable.csv ]; then | |
99 printf "[ERROR]factorTable.csv is missing" >> $log; | |
100 exit 15 | |
101 fi | |
102 | |
103 | |
104 #if $blockingSection.blockingConditional.addBlocking == "true": | |
105 awk -v fact="$blockingSection.blockingConditional.blockingToInclude" ' BEGIN{OFS="";ORS="";FS="\t";split(fact, facto, ",");for(i in facto)factors[facto[i]]=1} FNR==1{for(i=2;i<=NF;i++)if(\$i in factors)dico[i]=1} {print $1;for(factorID in dico)print "\t"\$factorID; print "\n"}' $inputSection.conditionInformation > ./blockingTable.csv; | |
106 | |
107 if [ ! -e ./blockingTable.csv ]; then | |
108 printf "[ERROR]blockingTable.csv is missing" >> $log; | |
109 exit 15 | |
110 fi | |
111 | |
112 #end if | |
113 printf "[INFO]End of scriptPrepareTable\n" >> $log | |
114 ]]> | |
115 </configfile> | |
116 | |
117 <configfile name="scriptTableToHtml"> | |
118 <![CDATA[ | |
119 printf "<!DOCTYPE html> | |
120 <html> | |
121 <head> | |
122 <meta http-equiv=\"Content-type\" content=\"text/html; charset=utf-8\"> | |
123 <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.datatables.net/1.10.16/css/jquery.dataTables.min.css\"> | |
124 <script type=\"text/javascript\" language=\"javascript\" src=\"https://code.jquery.com/jquery-1.12.4.js\"> | |
125 </script> | |
126 <script type=\"text/javascript\" language=\"javascript\" src=\"https://cdn.datatables.net/1.10.16/js/jquery.dataTables.min.js\"> | |
127 </script> | |
128 <script type=\"text/javascript\" class=\"init\"> | |
129 \\$(document).ready(function() { | |
130 \\$(\'\#example\').DataTable( { | |
131 \"columnDefs\": [ { | |
132 \"visible\": false, | |
133 \"targets\": -1 | |
134 } ] | |
135 } ); | |
136 } ); | |
137 </script> | |
138 </head> | |
139 <body style=\"background-color:white;\"> | |
140 <table id=\"example\" class=\"display\" cellspacing=\"0\"> | |
141 " > ${html_file.extra_files_path}/outputLIMMA.html | |
142 | |
143 printf "<colgroup>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
144 printf "<col span=\"2\" style=\"background-color:rgb(224,235,235)\">\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
145 awk 'BEGIN{odd=1;FS="\t"} NR==1{for(i=3;i<=NF;i=i+5){if(odd==1){odd=0;printf "<col span=\"5\" style=\"background-color:rgb(224,238,255)\">\n"}else{odd=1;printf "<col span=\"5\" style=\"background-color:rgb(255,221,224)\">\n"}}}' $outputData >> ${html_file.extra_files_path}/outputLIMMA.html | |
146 printf "</colgroup>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
147 | |
148 | |
149 printf "<thead>\n<tr>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
150 printf "<th rowspan=\"2\">Gene</th>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
151 printf "<th rowspan=\"2\">Info</th>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
152 awk 'BEGIN{FS="\t"} NR==1{for(i=3;i<=NF;i=i+5)printf "<th colspan=\"5\">"\$i"</th>\n"}' $outputData >> ${html_file.extra_files_path}/outputLIMMA.html | |
153 printf "<th></th>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
154 printf "</tr>\n<tr>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
155 awk 'BEGIN{FS="\t"} NR==2{for(i=3;i<=NF;i++)printf "<th>"\$i"</th>\n"}' $outputData >> ${html_file.extra_files_path}/outputLIMMA.html | |
156 printf "<th></th>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
157 printf "</tr>\n</thead>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
158 | |
159 printf "<tfoot>\n<tr>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
160 awk 'BEGIN{FS="\t"} NR==2{for(i=1;i<=NF;i++)printf "<th>"\$i"</th>\n"}' $outputData >> ${html_file.extra_files_path}/outputLIMMA.html | |
161 printf "<th></th>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
162 printf "</tr>\n</tfoot>\n">> ${html_file.extra_files_path}/outputLIMMA.html | |
163 | |
164 printf "<tbody>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
165 awk 'BEGIN{FS="\t"} NR>2{printf "<tr>\n";for(i=1;i<=NF;i++){printf "<th>"\$i"</th>\n"};printf "<th></th>\n";printf "</tr>\n"}' $outputData >> ${html_file.extra_files_path}/outputLIMMA.html | |
166 printf "</tbody>\n" >> ${html_file.extra_files_path}/outputLIMMA.html | |
167 | |
168 printf "</table> | |
169 </body> | |
170 </html>" >> ${html_file.extra_files_path}/outputLIMMA.html | |
171 | |
172 ]]> | |
173 </configfile> | |
174 | |
175 <configfile name="scriptTransfer"> | |
176 <![CDATA[ | |
177 | |
178 | |
179 ##for LIMMA output table | |
180 | |
181 mkdir -p $html_file.extra_files_path | |
182 | |
183 ##create HTML file for limma output table | |
184 source $scriptTableToHtml | |
185 | |
186 ##check outputLIMMA.html is here | |
187 if ! [ -e ${html_file.extra_files_path}/outputLIMMA.html ]; then | |
188 printf "[ERROR]outputLIMMA.html is missing" >> $log; | |
189 exit 10 | |
190 fi | |
191 | |
192 ##create header of main HTML file | |
193 printf "<!DOCTYPE html>\n<html>\n<body>" > $html_file | |
194 | |
195 ##first add reference of the LIMMA output table | |
196 printf "<h3>LIMMA statistics (p.val, FC)</h3>\n" >> $html_file | |
197 printf "<a href=\"outputLIMMA.html\">LIMMA results</a>\n" >> $html_file | |
198 | |
199 | |
200 | |
201 #if $plotSection.histogramToPlot: | |
202 | |
203 printf "<h3>P-val histograms</h3>\n" >> $html_file | |
204 | |
205 ##create folders in media | |
206 counter=1 | |
207 for histogram in \$(ls ./plotLyDir/Histograms_*html) | |
208 do | |
209 histogramShort=\${histogram%\.*} | |
210 histogramShort=\${histogramShort\#\#*/} | |
211 | |
212 conditionName=\${histogram%\.*} | |
213 conditionName=\${conditionName\#\#*Histograms_} | |
214 | |
215 echo \$conditionName > ./temporaryConditionName | |
216 conditionFormatedName=\$(awk 'BEGIN{FS="\t"} ARGIND==1{dico[\$1]=\$2} ARGIND==2{print dico[\$1]}' ./correspondanceFileNames.csv ./temporaryConditionName) | |
217 | |
218 ##modify HTML to point to plotLy folder | |
219 sed -i "s/\${histogramShort}_files/PlotLy_Histogram_scripts/g" \$histogram | |
220 | |
221 ##copy HTML files in both folders | |
222 cp \$histogram ${html_file.extra_files_path}/Histogram_\$conditionName.html | |
223 | |
224 ##add HTML link | |
225 printf "<p>\n<a href=\"Histogram_\$conditionName.html\">Histogram \$conditionFormatedName</a>\n</p>\n" >> $html_file | |
226 | |
227 if [ \$counter = 1 ]; then | |
228 #if $plotSection.imagePlotlyFormat=="svg": | |
229 ##before copying scripts folder modify them to replace png snapshot with svg (not proud of solution but seems to work) | |
230 cd ./plotLyDir/\${histogramShort}_files/plotly-main-*/ | |
231 awk '{gsub("\"png\"","\"svg\"",\$0);print \$0}' ./plotly-latest.min.js > ./plotly-latest.minTemp.js | |
232 awk '{gsub("Download plot as a png","Download plot as a svg",\$0);print \$0}' ./plotly-latest.minTemp.js > ./plotly-latest.min.js | |
233 rm ./plotly-latest.minTemp.js | |
234 cd ../../../ | |
235 #end if | |
236 | |
237 ##now copy only scripts folder for the first histogram and rename | |
238 cp -r ./plotLyDir/\${histogramShort}_files $html_file.extra_files_path | |
239 mv ${html_file.extra_files_path}/\${histogramShort}_files ${html_file.extra_files_path}/PlotLy_Histogram_scripts | |
240 fi | |
241 | |
242 ((counter++)) | |
243 done | |
244 | |
245 if [ \$counter = 1 ]; then | |
246 printf "[ERROR]Histograms are missing" >> $log; | |
247 exit 10 | |
248 fi | |
249 | |
250 #end if | |
251 | |
252 | |
253 if [ -e ./plotLyDir/sumSquareFtest.html ]; then | |
254 | |
255 printf "<h3>Source of variation</h3>\n" >> $html_file | |
256 | |
257 ##modify HTML to point to the first script folder | |
258 sed -i "s/sumSquareFtest_files/PlotLy_sumSquareFtest_scripts/g" ./plotLyDir/sumSquareFtest.html | |
259 | |
260 ##copy HTML files in both folders | |
261 cp ./plotLyDir/sumSquareFtest.html ${html_file.extra_files_path}/ | |
262 | |
263 ##add HTML link | |
264 printf "<a href=\"sumSquareFtest.html\">F-ratio barplot</a>\n" >> $html_file | |
265 | |
266 #if $plotSection.imagePlotlyFormat=="svg": | |
267 ##before copying scripts folder modify them to replace png snapshot with svg (not proud of solution but seems to work) | |
268 cd ./plotLyDir/sumSquareFtest_files/plotly-main-*/ | |
269 awk '{gsub("\"png\"","\"svg\"",\$0);print \$0}' ./plotly-latest.min.js > ./plotly-latest.minTemp.js | |
270 awk '{gsub("Download plot as a png","Download plot as a svg",\$0);print \$0}' ./plotly-latest.minTemp.js > ./plotly-latest.min.js | |
271 rm ./plotly-latest.minTemp.js | |
272 cd ../../../ | |
273 #end if | |
274 | |
275 ##now copy scripts folder | |
276 cp -r ./plotLyDir/sumSquareFtest_files $html_file.extra_files_path | |
277 mv ${html_file.extra_files_path}/sumSquareFtest_files ${html_file.extra_files_path}/PlotLy_sumSquareFtest_scripts | |
278 | |
279 else | |
280 printf "[ERROR]sumSquareFtest plot is missing" >> $log; | |
281 exit 10 | |
282 fi | |
283 | |
284 | |
285 | |
286 #if $plotSection.volcanoToPlot: | |
287 | |
288 printf "<h3>Volcanos</h3>\n" >> $html_file | |
289 | |
290 ##create folders in media | |
291 counter=1 | |
292 for volcano in \$(ls ./plotLyDir/Volcanos_*html) | |
293 do | |
294 volcanoShort=\${volcano%\.*} | |
295 volcanoShort=\${volcanoShort\#\#*/} | |
296 | |
297 conditionName=\${volcano%\.*} | |
298 conditionName=\${conditionName\#\#*Volcanos_} | |
299 | |
300 echo \$conditionName > ./temporaryConditionName | |
301 conditionFormatedName=\$(awk 'BEGIN{FS="\t"} ARGIND==1{dico[\$1]=\$2} ARGIND==2{print dico[\$1]}' ./correspondanceFileNames.csv ./temporaryConditionName) | |
302 | |
303 | |
304 ##modify HTML to point to plotLy folder | |
305 sed -i "s/\${volcanoShort}_files/PlotLy_Volcano_scripts/g" \$volcano | |
306 | |
307 ##copy HTML files in both folders | |
308 cp \$volcano ${html_file.extra_files_path}/Volcano_\$conditionName.html | |
309 | |
310 ##add HTML link | |
311 printf "<p>\n<a href=\"Volcano_\$conditionName.html\">Volcano \$conditionFormatedName</a>\n</p>\n" >> $html_file | |
312 | |
313 if [ \$counter = 1 ]; then | |
314 | |
315 #if $plotSection.imagePlotlyFormat=="svg": | |
316 ##before copying scripts folder modify them to replace png snapshot with svg (not proud of solution but seems to work) | |
317 cd ./plotLyDir/\${volcanoShort}_files/plotly-main-*/ | |
318 awk '{gsub("\"png\"","\"svg\"",\$0);print \$0}' ./plotly-latest.min.js > ./plotly-latest.minTemp.js | |
319 awk '{gsub("Download plot as a png","Download plot as a svg",\$0);print \$0}' ./plotly-latest.minTemp.js > ./plotly-latest.min.js | |
320 rm ./plotly-latest.minTemp.js | |
321 cd ../../../ | |
322 #end if | |
323 | |
324 ##now copy only scripts folder for the first volcano and rename | |
325 cp -r ./plotLyDir/\${volcanoShort}_files $html_file.extra_files_path | |
326 mv ${html_file.extra_files_path}/\${volcanoShort}_files ${html_file.extra_files_path}/PlotLy_Volcano_scripts | |
327 fi | |
328 | |
329 ((counter++)) | |
330 done | |
331 | |
332 if [ \$counter = 1 ]; then | |
333 printf "[ERROR]Volcano plots are missing" >> $log; | |
334 exit 10 | |
335 fi | |
336 | |
337 #end if | |
338 | |
339 | |
340 ##create footer of HTML file | |
341 printf "</body>\n</html>" >> $html_file | |
342 ]]> | |
343 </configfile> | |
344 </configfiles> | |
345 | |
346 | |
347 | |
348 <inputs> | |
349 <section name="inputSection" title="Input files" expanded="True"> | |
350 <param type="text" name="title" value="LIMMA_toPersonalize" label="Title for output"/> | |
351 | |
352 <param type="data" name="inputData" format="tabular" label="Normalized expression tabular file" optional="false" multiple="false" help="Expression data have to be log2 transformed."/> | |
353 | |
354 <param type="data" name="conditionInformation" format="tabular" label="Factor information tabular file" optional="false" multiple="false"> | |
355 </param> | |
356 </section> | |
357 | |
358 <section name="contrastSection" title="Contrast definition" expanded="True"> | |
359 | |
360 <param name="factorSelection" type="select" label="Select all factors to include in the global model (excepting confounding factors)" refresh_on_change="true" display="checkboxes" optional="false" multiple="true" dynamic_options="get_column_names(inputSection['conditionInformation'].file_name)" help="Confounding factors are selected in the coresponding section below." /> | |
361 | |
362 <repeat name="contrastList" title="Contrast"> | |
363 <param type="text" name="groupName" value="" label="Contrast name"/> | |
364 | |
365 <param name="firstGroupToCompare" type="select" label="Select factor levels of 1st group" display="checkboxes" multiple="true" refresh_on_change="true" dynamic_options="get_row_names_allInteractions(inputSection['conditionInformation'].file_name,factorSelection)"> | |
366 </param> | |
367 | |
368 <param name="secondGroupToCompare" type="select" label="Select factor levels of 2nd group" display="checkboxes" multiple="true" refresh_on_change="true" dynamic_options="get_row_names_allInteractions(inputSection['conditionInformation'].file_name,factorSelection)"> | |
369 </param> | |
370 </repeat> | |
371 | |
372 <conditional name="interactionSelection"> | |
373 <param name="interactionContrast" type="boolean" label="Add interaction contrasts" checked="false" help="If you have selected two factors at least."/> | |
374 <when value="true"> | |
375 <param name="controlSelection" type="select" label="Select one control level for each factor (and only one)" display="checkboxes" multiple="true" refresh_on_change="true" dynamic_options="get_allrow_names(inputSection['conditionInformation'].file_name,factorSelection)"> | |
376 </param> | |
377 </when> | |
378 <when value="false"> | |
379 </when> | |
380 </conditional> | |
381 | |
382 </section> | |
383 | |
384 | |
385 | |
386 <section name="blockingSection" title="Paired analysis/confounding factor" expanded="True"> | |
387 <conditional name="blockingConditional"> | |
388 <param name="addBlocking" type="boolean" label="Add confounding factors" checked="false" help="To control factors producing spurious association as batch effects or to analyze paired data"/> | |
389 <when value="true"> | |
390 <param name="blockingToInclude" type="select" label="Select confounding factors" multiple="true" dynamic_options="get_column_names(inputSection['conditionInformation'].file_name)"> | |
391 <validator type="empty_field" message="You should select at least one factor"></validator> | |
392 </param> | |
393 </when> | |
394 <when value="false"> | |
395 </when> | |
396 </conditional> | |
397 </section> | |
398 | |
399 <section name="plotSection" title="Output section" expanded="True"> | |
400 <param name="cutoffTh" type="float" value="0.05" label="Output FDR p-val threshold" > | |
401 <validator type="in_range" min="0" max="1" message="Threshold should be between 0 and 1"/> | |
402 </param> | |
403 <param name="FCthreshold" type="float" value="2" label="Output Fold Change threshold (both 'log2(threshold)' and 'log2(1/threshold)' values will be used)" > | |
404 <validator type="in_range" min="1" exclude_min="false" message="Threshold should be greater or equal to 1"/> | |
405 </param> | |
406 <param type="boolean" name="histogramToPlot" checked="true" label="Plot histograms" help="Plot nominal p-val distribution for each comparison."> | |
407 </param> | |
408 <param type="boolean" name="volcanoToPlot" checked="true" label="Plot volcanos" help="Plot volcano for each comparison."> | |
409 </param> | |
410 | |
411 <conditional name="geneInformation"> | |
412 <param name="addGeneInfo" type="boolean" label="Add gene/probe information" checked="false"/> | |
413 <when value="true"> | |
414 <param name="organismID" label="Organism" type="select"> | |
415 <options from_data_table="LimmaTool" > | |
416 <column name="name" index="1"/> | |
417 <column name="value" index="0"/> | |
418 <filter type="unique_value" column="0"/> | |
419 </options> | |
420 </param> | |
421 <param name="infoInRowType" label="Nature of row names" type="select"> | |
422 <options from_data_table="LimmaTool" > | |
423 <column name="name" index="3"/> | |
424 <column name="value" index="2"/> | |
425 <filter type="param_value" ref="organismID" column="0"/> | |
426 </options> | |
427 </param> | |
428 </when> | |
429 <when value="false"> | |
430 </when> | |
431 </conditional> | |
432 | |
433 <param type="select" name="imagePlotlyFormat" display="radio" label="Html snapshot format"> | |
434 <option value="png">PNG format</option> | |
435 <option value="svg">SVG format</option> | |
436 </param> | |
437 </section> | |
438 | |
439 <section name="advSection" title="Advanced parameters" expanded="False"> | |
440 <param type="select" name="confoundingPolicy" display="radio" label="Confounding effect policy" help="DO NOT modify this parameter unless you know what you are doing!"> | |
441 <option value="additive">As an additive factor (default)</option> | |
442 <option value="correlated">As a correlation constraint</option> | |
443 </param> | |
444 </section> | |
445 | |
446 </inputs> | |
447 | |
448 | |
449 | |
450 <outputs> | |
451 <data format="tabular" name="outputData" label="${inputSection.title}_LIMMAstatistics"/> | |
452 | |
453 <data format="tabular" name="outputDfData" label="${inputSection.title}_LIMMAdetailed"/> | |
454 | |
455 <data format="html" name="html_file" label="${inputSection.title}_HTML.html"/> | |
456 <!-- | |
457 <collection name="outputHistogramsList" label="${inputSection.title}_HistogramsList" type="list"> | |
458 <discover_datasets pattern="(?P<designation>Histograms[0-9]+)\.(?P<ext>[^\._]+)?" directory="plotDir" visible="false"/> | |
459 <filter>plotSection['histogramToPlot']</filter> | |
460 </collection> | |
461 | |
462 <collection name="outputVolcanosList" label="${inputSection.title}_VolcanosList" type="list"> | |
463 <discover_datasets pattern="(?P<designation>Volcanos\_.*)\.(?P<ext>[^\._]+)?" directory="plotDir" visible="false"/> | |
464 <filter>plotSection['volcanoToPlot']</filter> | |
465 </collection> | |
466 | |
467 <data name="fRatioOutput" format="png" label="${inputSection.title}_F-ratio"> | |
468 <change_format> | |
469 <when input="plotSection['imageFormat']" value="pdf" format="pdf" /> | |
470 </change_format> | |
471 </data> | |
472 --> | |
473 <data format="txt" name="log" label="${inputSection.title}_Log" /> | |
474 </outputs> | |
475 | |
476 | |
477 | |
478 <tests> | |
479 <test maxseconds="3600"> | |
480 <param name="wfile" value="wiggle.wig" /> | |
481 <param name="bfile" value="bedfile.bed" /> | |
482 <param name="span" value="3000" /> | |
483 <param name="pfres" value="50" /> | |
484 <param name="lowersize" value="1000" /> | |
485 <param name="middlesize" value="2000" /> | |
486 <param name="uppersize" value="3000" /> | |
487 <param name="lowerbisize" value="2500" /> | |
488 <param name="upperbisize" value="5000" /> | |
489 <param name="reldist" value="3000" /> | |
490 <param name="genome" value="hg18" /> | |
491 <param name="imagetype" value="PDF" /> | |
492 <param name="enable" value="no" /> | |
493 <output name="outputData" file="ceas_1/ceas_1.pdf" /> | |
494 <output name="outputDfData" file="ceas_1/ceas_1.pdf" /> | |
495 </test> | |
496 </tests> | |
497 <help> | |
498 <![CDATA[ | |
499 **What it does ?** | |
500 | |
501 This tool compute differential expressions for a set of genes. | |
502 This tool use the LIMMA function from R package limma. (only adapted for arrays data) | |
503 | |
504 ----- | |
505 | |
506 **Parameters** | |
507 | |
508 \- **Input Files** | |
509 | |
510 - **Title** to personalize output file names (please avoid special characters). | |
511 - **Normalized expression tabular file** with samples as columns and genes as rows (header contains sample names and first column gene identifiers). WARNING Expression data have to be already log2 transformed. | |
512 | |
513 :: | |
514 | |
515 Conditions 157_(HuGene-2_0-st).CEL 156_(HuGene-2_0-st).CEL 155_(HuGene-2_0-st).CEL 154_(HuGene-2_0-st).CEL | |
516 DDX11L2 4.500872 4.429759 4.780281 4.996189 | |
517 MIR1302-2 3.415065 3.520472 3.471503 3.567988 | |
518 OR4F5 3.737956 3.011586 3.424494 3.497545 | |
519 VWA1 5.189621 5.129595 4.806793 5.227014 | |
520 | |
521 - **Factor information tabular file** with factors as columns and samples as rows (header contains factor names and first column sample names). | |
522 | |
523 :: | |
524 | |
525 Conditions Sex Treatment Reaction | |
526 138_(HuGene-2_0-st).CEL 1 TreatA Pos | |
527 148_(HuGene-2_0-st).CEL 0 NoTreat Pos | |
528 139_(HuGene-2_0-st).CEL 0 TreatB Neg | |
529 149_(HuGene-2_0-st).CEL 0 NoTreat Neg | |
530 | |
531 \- **Contrast definition** | |
532 | |
533 - **Select all factors to include in the global model** : automatically extracted from factor information file. Confounding factors or paired-analysis information (replicates number,dates...) should not be selected here, but in specific section below. | |
534 | |
535 - **Contrast** | |
536 | |
537 \- **Contrast Name** displayed in output file | |
538 | |
539 \- **Select factor levels of 1st group** : the contrast will be computed with the formula "1st group versus 2nd group" so "1st group - 2nd group". | |
540 | |
541 \- **Select factor levels of 2nd group** : see below for some examples | |
542 | |
543 :: | |
544 | |
545 Nb Factors List of Factors Factor levels Expected Contrast Select as 1st gr Select as 2nd gr | |
546 1 Strain WT, KO KO vs WT KO WT | |
547 2 Strain, Treatment WT, KO, NoTreat,TreatA TreatA vs NoTreat in WT mice TreatA*WT NoTreat*WT | |
548 2 Strain, Treatment WT, KO, NoTreat,TreatA Treatment effect on Strain dependent genes See results of interaction contrast | |
549 | |
550 - **Add interaction contrasts** : to compute automatically each level of interaction | |
551 | |
552 \- **Control groups** for each factor, select its level used as control. Thus interaction contrasts will be computed for each factor level regarding to this control level. | |
553 | |
554 \- **Paired analysis / confounding factors** | |
555 | |
556 - **Add confounding factors** which can define "blocks" in the data different from those selected previously in the global model. Typically confounding factors are linked to batch effect (dates...) or paired-analysis situation (replicates number...). | |
557 | |
558 \- **Output section** | |
559 | |
560 - **Output FDR p-val threshold**, only genes with FDR <= this threshold (in at least one of defined contrasts) are kept in tabular result file and displayed dynamically in volcano plot. | |
561 | |
562 - **Plot histograms** of unadjusted p-values for each defined contrast. | |
563 | |
564 - **Plot volcanos** for each defined contrast with specified FDR p-val and FC thresholds. | |
565 | |
566 - **Output Fold Change threshold** only genes with absolute FC >= this threshold (in at least one of defined contrast) are kept in tabular result file and displayed dynamically in volcano plot (both 'log2(threshold)' and 'log2(1/threshold)' values will be used). | |
567 | |
568 - **Add gene/probe information** : if yes, add description of genes to the result tab. | |
569 | |
570 \- **Organism** coresponding to experimental data used. | |
571 | |
572 \- **Nature of row names** coresponding to experimental data used in input. | |
573 | |
574 - **Html snapshot format** : for interactive plotly plots. | |
575 | |
576 \- **Advanced Parameters** | |
577 | |
578 - **Confounding effect policy** : DO NOT modify this parameter unless you know what you are doing! See Limma documentation for more information. | |
579 | |
580 ----- | |
581 | |
582 **Outputs** | |
583 | |
584 - **LIMMA statistic tabular** is the main result file for LIMMA, represented as tab delimited matrix. First and second columns contain respectively gene names and information grabbed from BiomaRt R package. Then, the following colums contain differential expression statistics (p.val, FDR, FC, log2FC and t-statistic) for defined contrasts, for each gene (in rows). | |
585 | |
586 - **LIMMA detailed tabular** contains specific statistics required for additional analysis tools (eg SMAGEXP tool), represented as tab delimited matrix where each colum contains specific statistics (residual, eBayes prior and total degree of freedom) between groups for each gene (in rows). | |
587 | |
588 - **HTML file** to access interactive version of histograms, F-Ratio barplots and volcanos through PlotLy html pages and tabulated differential results. | |
589 | |
590 - **LOG file** for job log. If you see errors, please attached this in the bug report | |
591 | |
592 ]]> </help> | |
593 | |
594 | |
595 <citations> | |
596 <citation type="bibtex">@misc{vandel_jimmy_2018_1477870, author = {Vandel, J. and Gheeraert, C. and Eeckhoute, J. and Staels, B. and Lefebvre, P. and Dubois-Chevalier, J.}, title = {GIANT: Galaxy-based Interactive tools for ANalaysis of Transcriptomic data}, month = nov, year = 2018, doi = {10.5281/zenodo.1477870}, url = {https://doi.org/10.5281/zenodo.1477870} | |
597 }</citation> | |
598 | |
599 <citation type="bibtex">@article{doi:10.1093/nar/gkv007, | |
600 author = {Ritchie, Matthew E. and Phipson, Belinda and Wu, Di and Hu, Yifang and Law, Charity W. and Shi, Wei and Smyth, Gordon K.}, | |
601 title = {limma powers differential expression analyses for RNA-sequencing and microarray studies}, | |
602 journal = {Nucleic Acids Research}, | |
603 volume = {43}, | |
604 number = {7}, | |
605 pages = {e47}, | |
606 year = {2015}, | |
607 doi = {10.1093/nar/gkv007}, | |
608 URL = {http://dx.doi.org/10.1093/nar/gkv007}, | |
609 eprint = {/oup/backfile/content_public/journal/nar/43/7/10.1093_nar_gkv007/2/gkv007.pdf} | |
610 }</citation> | |
611 | |
612 <citation type="bibtex">@online{plotly, author = {Plotly Technologies Inc.}, title = {Collaborative data science}, publisher = {Plotly Technologies Inc.}, address = {Montreal, QC}, year = {2015}, url = {https://plot.ly} | |
613 }</citation> | |
614 </citations> | |
615 | |
616 </tool> |