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&lt;designation&gt;Histograms[0-9]+)\.(?P&lt;ext&gt;[^\._]+)?" 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&lt;designation&gt;Volcanos\_.*)\.(?P&lt;ext&gt;[^\._]+)?" 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>