Mercurial > repos > iuc > edger
changeset 15:119f41ec0ada draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/edger commit 76bd257ee51e9d7b912f570fb9ced1084ef44212
| author | iuc |
|---|---|
| date | Wed, 15 Oct 2025 10:24:03 +0000 |
| parents | c5fa04118f83 |
| children | 09965c918573 |
| files | edger.R edger.xml test-data/factorinfo-extended.txt test-data/matrix-extended.txt |
| diffstat | 4 files changed, 269 insertions(+), 106 deletions(-) [+] |
line wrap: on
line diff
--- a/edger.R Wed Sep 04 15:49:53 2024 +0000 +++ b/edger.R Wed Oct 15 10:24:03 2025 +0000 @@ -330,6 +330,8 @@ } contrast_data <- sanitise_equation(contrast_data) contrast_data <- gsub(" ", ".", contrast_data, fixed = TRUE) +# Convert colons to dots to match design matrix column name processing +contrast_data <- gsub(":", ".", contrast_data, fixed = TRUE) bcv_pdf <- make_out("bcvplot.pdf") bcv_png <- make_out("bcvplot.png") @@ -431,6 +433,9 @@ colnames(design) <- gsub(factor_list[i], "", colnames(design), fixed = TRUE) } +# Ensure column names are syntactically valid +colnames(design) <- make.names(colnames(design)) + # Calculating normalising factor, estimating dispersion data <- calcNormFactors(data, method = opt$normOpt)
--- a/edger.xml Wed Sep 04 15:49:53 2024 +0000 +++ b/edger.xml Wed Oct 15 10:24:03 2025 +0000 @@ -4,7 +4,7 @@ </description> <macros> <token name="@TOOL_VERSION@">3.36.0</token> - <token name="@VERSION_SUFFIX@">5</token> + <token name="@VERSION_SUFFIX@">6</token> </macros> <edam_topics> <edam_topic>topic_3308</edam_topic> @@ -212,7 +212,7 @@ <repeat name="rep_contrast" title="Contrast" min="1" default="1"> <param name="contrast" type="text" label="Contrast of Interest" help="Names of two groups to compare separated by a hyphen e.g. Mut-WT. If the order is Mut-WT the fold changes in the results will be up/down in Mut relative to WT. If you have more than one contrast enter each separately using the Insert Contrast button below. For differences between contrasts use e.g. (MT.t1-MT.t0)-(WT.t1-WT.t0). For more info, see Chapter 8 in the limma User's guide: https://www.bioconductor.org/packages/release/bioc/vignettes/limma/inst/doc/usersguide.pdf or https://bioconductor.org/packages/release/bioc/vignettes/edgeR/inst/doc/edgeRUsersGuide.pdf page 36 for nested comparisons."> <validator type="empty_field"/> - <validator type="regex" message="Please only use letters, numbers, parentheses or underscores">^[\w\-()]+$</validator> + <validator type="regex" message="Please only use letters, numbers, parentheses, colon or underscores">^[\w\-():]+$</validator> </param> </repeat> </when> @@ -295,20 +295,21 @@ <tests> <!-- Ensure report is output --> <test expect_num_outputs="2"> - <param name="format" value="matrix"/> - <param name="counts" value="matrix.txt"/> - <repeat name="rep_factor"> + <param name="input|format" value="matrix"/> + <param name="input|counts" value="matrix.txt"/> + <param name="input|fact|ffile" value="no"/> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Genotype"/> <param name="groupNames" value="Mut,Mut,Mut,WT,WT,WT"/> </repeat> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="Mut-WT"/> </repeat> - <repeat name="rep_contrast"> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="WT-Mut"/> </repeat> - <param name="normalisationOption" value="TMM"/> + <param name="adv|normalisationOption" value="TMM"/> <output_collection name="outTables" count="2"> <element name="edgeR_Mut-WT" ftype="tabular"> <assert_contents> @@ -334,17 +335,18 @@ </test> <!-- Complex contrasts constructions --> <test expect_num_outputs="2"> - <param name="format" value="matrix"/> - <param name="counts" value="matrix-complex.txt"/> - <repeat name="rep_factor"> + <param name="input|format" value="matrix"/> + <param name="input|counts" value="matrix-complex.txt"/> + <param name="input|fact|ffile" value="no"/> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Genotype"/> <param name="groupNames" value="MutA,MutA,MutA,MutB,MutB,MutB,WTA,WTA,WTA,WTB,WTB,WTB"/> </repeat> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="(MutA-MutB)-(WTA-WTB)"/> </repeat> - <param name="normalisationOption" value="TMM"/> + <param name="adv|normalisationOption" value="TMM"/> <output_collection name="outTables" count="1"> <element name="edgeR_(MutA-MutB)-(WTA-WTB)" ftype="tabular"> <assert_contents> @@ -364,19 +366,20 @@ </test> <!-- Ensure annotation file input works --> <test expect_num_outputs="2"> - <param name="format" value="matrix"/> - <param name="annoOpt" value="yes"/> - <param name="geneanno" value="anno.txt"/> - <param name="counts" value="matrix.txt"/> - <repeat name="rep_factor"> + <param name="input|format" value="matrix"/> + <param name="anno|annoOpt" value="yes"/> + <param name="anno|geneanno" value="anno.txt"/> + <param name="input|counts" value="matrix.txt"/> + <param name="input|fact|ffile" value="no"/> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Genotype"/> <param name="groupNames" value="Mut,Mut,Mut,WT,WT,WT"/> </repeat> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="Mut-WT"/> </repeat> - <param name="normalisationOption" value="TMM"/> + <param name="adv|normalisationOption" value="TMM"/> <output_collection name="outTables" count="1"> <element name="edgeR_Mut-WT" ftype="tabular"> <assert_contents> @@ -388,19 +391,20 @@ </test> <!-- Ensure RScript and RData file can be output --> <test expect_num_outputs="3"> - <param name="format" value="matrix"/> - <param name="rscript" value="True"/> - <param name="rdaOption" value="true"/> - <param name="counts" value="matrix.txt"/> - <repeat name="rep_factor"> + <param name="input|format" value="matrix"/> + <param name="out|rscript" value="True"/> + <param name="out|rdaOption" value="true"/> + <param name="input|counts" value="matrix.txt"/> + <param name="input|fact|ffile" value="no"/> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Genotype"/> <param name="groupNames" value="Mut,Mut,Mut,WT,WT,WT"/> </repeat> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="Mut-WT"/> </repeat> - <param name="normalisationOption" value="TMM"/> + <param name="adv|normalisationOption" value="TMM"/> <output name="outReport"> <assert_contents> <has_text text="RData"/> @@ -414,21 +418,22 @@ </test> <!-- Ensure secondary factors work --> <test expect_num_outputs="2"> - <param name="format" value="matrix"/> - <param name="counts" value="matrix.txt"/> - <repeat name="rep_factor"> + <param name="input|format" value="matrix"/> + <param name="input|counts" value="matrix.txt"/> + <param name="input|fact|ffile" value="no"/> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Genotype"/> <param name="groupNames" value="Mut,Mut,Mut,WT,WT,WT"/> </repeat> - <repeat name="rep_factor"> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Batch"/> <param name="groupNames" value="b1,b2,b3,b1,b2,b3"/> </repeat> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="Mut-WT"/> </repeat> - <param name="normalisationOption" value="TMM"/> + <param name="adv|normalisationOption" value="TMM"/> <output_collection name="outTables" count="1"> <element name="edgeR_Mut-WT" ftype="tabular"> <assert_contents> @@ -440,15 +445,15 @@ </test> <!-- Ensure factors file with unordered samples works --> <test expect_num_outputs="2"> - <param name="format" value="matrix"/> - <param name="ffile" value="yes"/> - <param name="finfo" value="factorinfo.txt"/> - <param name="counts" value="matrix.txt"/> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="input|format" value="matrix"/> + <param name="input|fact|ffile" value="yes"/> + <param name="input|fact|finfo" value="factorinfo.txt"/> + <param name="input|counts" value="matrix.txt"/> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="Mut-WT"/> </repeat> - <param name="normalisationOption" value="TMM"/> + <param name="adv|normalisationOption" value="TMM"/> <output_collection name="outTables" count="1"> <element name="edgeR_Mut-WT" ftype="tabular"> <assert_contents> @@ -460,18 +465,19 @@ </test> <!-- Ensure normalised counts file output works--> <test expect_num_outputs="2"> - <param name="format" value="matrix"/> - <param name="normCounts" value="true"/> - <param name="counts" value="matrix.txt"/> - <repeat name="rep_factor"> + <param name="input|format" value="matrix"/> + <param name="out|normCounts" value="true"/> + <param name="input|counts" value="matrix.txt"/> + <param name="input|fact|ffile" value="no"/> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Genotype"/> <param name="groupNames" value="Mut,Mut,Mut,WT,WT,WT"/> </repeat> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="Mut-WT"/> </repeat> - <param name="normalisationOption" value="TMM"/> + <param name="adv|normalisationOption" value="TMM"/> <output_collection name="outTables" count="2"> <element name="edgeR_Mut-WT" ftype="tabular"> <assert_contents> @@ -489,18 +495,19 @@ </test> <!-- Ensure likelihood ratio option works --> <test expect_num_outputs="2"> - <param name="format" value="matrix"/> - <param name="counts" value="matrix.txt"/> - <repeat name="rep_factor"> + <param name="input|format" value="matrix"/> + <param name="input|counts" value="matrix.txt"/> + <param name="input|fact|ffile" value="no"/> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Genotype"/> <param name="groupNames" value="Mut,Mut,Mut,WT,WT,WT"/> </repeat> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="Mut-WT"/> </repeat> - <param name="normalisationOption" value="TMM"/> - <param name="lrtOption" value="true"/> + <param name="adv|normalisationOption" value="TMM"/> + <param name="adv|lrtOption" value="true"/> <output name="outReport"> <assert_contents> <has_text text="likelihood ratio"/> @@ -510,8 +517,8 @@ </test> <!-- Ensure multiple counts files input works --> <test expect_num_outputs="2"> - <param name="format" value="files"/> - <repeat name="rep_factor"> + <param name="input|format" value="files"/> + <repeat name="input|rep_factor"> <param name="factorName" value="Genotype"/> <repeat name="rep_group"> <param name="groupName" value="WT"/> @@ -522,7 +529,7 @@ <param name="countsFile" value="Mut1.counts,Mut2.counts,Mut3.counts"/> </repeat> </repeat> - <repeat name="rep_factor"> + <repeat name="input|rep_factor"> <param name="factorName" value="Batch"/> <repeat name="rep_group"> <param name="groupName" value="b1"/> @@ -537,16 +544,16 @@ <param name="countsFile" value="WT3.counts,Mut3.counts"/> </repeat> </repeat> - <param name="annoOpt" value="yes"/> - <param name="geneanno" value="anno.txt"/> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="anno|annoOpt" value="yes"/> + <param name="anno|geneanno" value="anno.txt"/> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="Mut-WT"/> </repeat> - <repeat name="rep_contrast"> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="WT-Mut"/> </repeat> - <param name="normCounts" value="true"/> + <param name="out|normCounts" value="true"/> <output_collection name="outTables" count="3"> <element name="edgeR_Mut-WT" ftype="tabular"> <assert_contents> @@ -570,23 +577,24 @@ </test> <!-- Ensure filtering on CPM in Mnimum Samples works --> <test expect_num_outputs="2"> - <param name="format" value="matrix"/> - <param name="counts" value="matrix.txt"/> - <repeat name="rep_factor"> + <param name="input|format" value="matrix"/> + <param name="input|counts" value="matrix.txt"/> + <param name="input|fact|ffile" value="no"/> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Genotype"/> <param name="groupNames" value="Mut,Mut,Mut,WT,WT,WT"/> </repeat> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="Mut-WT"/> </repeat> - <param name="normalisationOption" value="TMM"/> - <param name="filt_select" value="yes"/> - <param name="format_select" value="cpm"/> + <param name="adv|normalisationOption" value="TMM"/> + <param name="f|filt|filt_select" value="yes"/> + <param name="f|filt|cformat|format_select" value="cpm"/> <!-- real cpmReq values would be a lot lower this is just for this tiny test dataset --> - <param name="cpmReq" value="1000"/> - <param name="cpmSampleReq" value="3"/> + <param name="f|filt|cformat|cpmReq" value="1000"/> + <param name="f|filt|cformat|cpmSampleReq" value="3"/> <output name="outReport"> <assert_contents> <has_text text="CPM in at least"/> @@ -606,22 +614,23 @@ </test> <!-- Ensure filtering on Count in Minmum Samples works --> <test expect_num_outputs="2"> - <param name="format" value="matrix"/> - <param name="counts" value="matrix.txt"/> - <repeat name="rep_factor"> + <param name="input|format" value="matrix"/> + <param name="input|counts" value="matrix.txt"/> + <param name="input|fact|ffile" value="no"/> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Genotype"/> <param name="groupNames" value="Mut,Mut,Mut,WT,WT,WT"/> </repeat> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="Mut-WT"/> </repeat> - <param name="normalisationOption" value="TMM"/> - <param name="filt_select" value="yes"/> - <param name="format_select" value="counts"/> - <param name="cntReq" value="10"/> - <param name="count_select" value="sample"/> - <param name="cntSampleReq" value="3"/> + <param name="adv|normalisationOption" value="TMM"/> + <param name="f|filt|filt_select" value="yes"/> + <param name="f|filt|cformat|format_select" value="counts"/> + <param name="f|filt|cformat|cntReq" value="10"/> + <param name="f|filt|cformat|samples|count_select" value="sample"/> + <param name="f|filt|cformat|samples|cntSampleReq" value="3"/> <output name="outReport"> <assert_contents> <has_text text="counts in at least"/> @@ -641,23 +650,24 @@ </test> <!-- Ensure filtering on Total Count works --> <test expect_num_outputs="2"> - <param name="format" value="matrix"/> - <param name="counts" value="matrix.txt"/> - <repeat name="rep_factor"> + <param name="input|format" value="matrix"/> + <param name="input|counts" value="matrix.txt"/> + <param name="input|fact|ffile" value="no"/> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Genotype"/> <param name="groupNames" value="Mut,Mut,Mut,WT,WT,WT"/> </repeat> - <param name="contrastOpt" value="manual"/> - <repeat name="rep_contrast"> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> <param name="contrast" value="Mut-WT"/> </repeat> - <param name="normalisationOption" value="TMM"/> - <param name="filt_select" value="yes"/> - <param name="format_select" value="counts"/> + <param name="adv|normalisationOption" value="TMM"/> + <param name="f|filt|filt_select" value="yes"/> + <param name="f|filt|cformat|format_select" value="counts"/> <!-- real cntReq values would be a lot lower this is just for this tiny test dataset --> - <param name="cntReq" value="1000"/> - <param name="count_select" value="total"/> + <param name="f|filt|cformat|cntReq" value="1000"/> + <param name="f|filt|cformat|samples|count_select" value="total"/> <output name="outReport"> <assert_contents> <has_text text="after summing counts for all samples"/> @@ -677,20 +687,21 @@ </test> <!-- Ensure formula and contrast file work --> <test expect_num_outputs="2"> - <param name="format" value="matrix"/> - <param name="counts" value="matrix.txt"/> - <repeat name="rep_factor"> + <param name="input|format" value="matrix"/> + <param name="input|counts" value="matrix.txt"/> + <param name="input|fact|ffile" value="no"/> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Genotype"/> <param name="groupNames" value="Mut,Mut,Mut,WT,WT,WT"/> </repeat> - <repeat name="rep_factor"> + <repeat name="input|fact|rep_factor"> <param name="factorName" value="Batch"/> <param name="groupNames" value="b1,b2,b3,b1,b2,b3"/> </repeat> - <param name="contrastOpt" value="file"/> - <param name="cinfo" value="contrasts_file.txt"/> + <param name="contrasts|contrastOpt" value="file"/> + <param name="contrasts|cinfo" value="contrasts_file.txt"/> <param name="formula" value="~ 0 + Genotype + Batch"/> - <param name="normalisationOption" value="TMM"/> + <param name="adv|normalisationOption" value="TMM"/> <output_collection name="outTables" count="3"> <element name="edgeR_Mut-WT" ftype="tabular"> <assert_contents> @@ -710,6 +721,78 @@ </element> </output_collection> </test> + <!-- Test interaction contrasts with extended dataset (tests make.names fix for interaction terms) --> + <test expect_num_outputs="2"> + <param name="input|format" value="matrix"/> + <param name="input|counts" value="matrix-extended.txt"/> + <param name="input|fact|ffile" value="yes"/> + <param name="input|fact|finfo" value="factorinfo-extended.txt"/> + <param name="formula" value="~ 0 + Genotype:Batch"/> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> + <param name="contrast" value="Mut:b1-WT:b1"/> + </repeat> + <repeat name="contrasts|rep_contrast"> + <param name="contrast" value="Mut:b2-Mut:b3"/> + </repeat> + <param name="adv|normalisationOption" value="TMM"/> + <output_collection name="outTables" count="2"> + <element name="edgeR_Mut.b1-WT.b1" ftype="tabular"> + <assert_contents> + <has_text_matching expression="GeneID.*logFC.*logCPM.*F.*PValue.*FDR"/> + <has_text_matching expression="11304"/> + </assert_contents> + </element> + <element name="edgeR_Mut.b2-Mut.b3" ftype="tabular"> + <assert_contents> + <has_text_matching expression="GeneID.*logFC.*logCPM.*F.*PValue.*FDR"/> + <has_text_matching expression="11304"/> + </assert_contents> + </element> + </output_collection> + <output name="outReport"> + <assert_contents> + <has_text text="edgeR Analysis Output"/> + <has_text text="quasi-likelihood"/> + </assert_contents> + </output> + </test> + <!-- Test full factorial interaction model (tests make.names fix with different interaction formula) --> + <test expect_num_outputs="2"> + <param name="input|format" value="matrix"/> + <param name="input|counts" value="matrix-extended.txt"/> + <param name="input|fact|ffile" value="yes"/> + <param name="input|fact|finfo" value="factorinfo-extended.txt"/> + <param name="formula" value="~ Genotype * Batch"/> + <param name="contrasts|contrastOpt" value="manual"/> + <repeat name="contrasts|rep_contrast"> + <param name="contrast" value="WT:b2"/> + </repeat> + <repeat name="contrasts|rep_contrast"> + <param name="contrast" value="WT:b3-WT:b2"/> + </repeat> + <param name="adv|normalisationOption" value="TMM"/> + <output_collection name="outTables" count="2"> + <element name="edgeR_WT.b2" ftype="tabular"> + <assert_contents> + <has_text_matching expression="GeneID.*logFC.*logCPM.*F.*PValue.*FDR"/> + <has_text_matching expression="11304"/> + </assert_contents> + </element> + <element name="edgeR_WT.b3-WT.b2" ftype="tabular"> + <assert_contents> + <has_text_matching expression="GeneID.*logFC.*logCPM.*F.*PValue.*FDR"/> + <has_text_matching expression="11304"/> + </assert_contents> + </element> + </output_collection> + <output name="outReport"> + <assert_contents> + <has_text text="edgeR Analysis Output"/> + <has_text text="quasi-likelihood"/> + </assert_contents> + </output> + </test> </tests> <help><