Repository 'anova'
hg clone https://toolshed.g2.bx.psu.edu/repos/lecorguille/anova

Changeset 10:b147b17759a6 (2018-02-28)
Previous changeset 9:4f06e1796334 (2017-10-26) Next changeset 11:102049093b7d (2018-03-13)
Commit message:
planemo upload for repository https://github.com/workflow4metabolomics/anova commit 28838bb8dafd6d286157db77f181ed8a1b586664
modified:
README.rst
abims_anova.r
abims_anova.xml
added:
test-data/dataMatrix.tsv_anova_signif.pdf
test-data/variableMetadata.tsv
test-data/variableMetadata.tsv_anova_pvalue.tabular
removed:
static/images/anova_filtered.png
static/images/anova_pvalue.png
static/images/anova_workflow.png
test-data/dataMatrix.tsv_anova_filtered.tabular
test-data/dataMatrix.tsv_anova_pvalue.tabular
b
diff -r 4f06e1796334 -r b147b17759a6 README.rst
--- a/README.rst Thu Oct 26 09:30:56 2017 -0400
+++ b/README.rst Wed Feb 28 07:44:13 2018 -0500
b
@@ -2,6 +2,14 @@
 Changelog/News
 --------------
 
+**Version 1.2.0 23/02/2018**
+
+- Fix for bug in multiple testing correction when more than one factor.
+- Adding results in variable metadata file instead of putting it in data matrix
+- Adding mean calculation
+- Converting filtered output into a pdf file with Venn diagram and boxplots + a "selected.var" column
+- New dependency : R package 'venn'
+
 
 **Version 1.1.4 04/04/2016**
 
b
diff -r 4f06e1796334 -r b147b17759a6 abims_anova.r
--- a/abims_anova.r Thu Oct 26 09:30:56 2017 -0400
+++ b/abims_anova.r Wed Feb 28 07:44:13 2018 -0500
[
@@ -3,7 +3,7 @@
 
 # date: 06-06-2012
 # update: 18-02-2014
-# **Authors** Gildas Le Corguille  ABiMS - UPMC/CNRS - Station Biologique de Roscoff - gildas.lecorguille|at|sb-roscoff.fr 
+# **Authors** Gildas Le Corguille  ABiMS - UPMC/CNRS - Station Biologique de Roscoff - gildas.lecorguille|at|sb-roscoff.fr
 
 # abims_anova.r version 20140218
 
@@ -11,25 +11,35 @@
 
 
 # function avova
-anova = function (file, sampleinfo, mode="column", condition=1, interaction=F, method="BH", threshold=0.01, selection_method="intersection", sep=";", dec=".", outputdatapvalue="anova.data.output", outputdatafiltered="anova.datafiltered.output") {
-

+anova = function (file, sampleinfo, varinfo, mode="column", condition=1, interaction=F, method="BH", threshold=0.01, selection_method="intersection", sep=";", dec=".", outputdatapvalue="anova.data.output", outputdatasignif="anova.datasignif.output") {
+
+
  if (sep=="tabulation") sep="\t"
      if (sep=="semicolon") sep=";"
      if (sep=="comma") sep=","
 
  anova_formula_operator = "+"
  if (interaction) anova_formula_operator = "*"
-  
+
    # -- import --
- data=read.table(file, header = TRUE, row.names=1, sep = sep, quote="\"", dec = dec, fill = TRUE, comment.char="",na.strings = "NA")
-
+ data=read.table(file, header = TRUE, row.names=1, sep = sep, quote="\"", dec = dec, fill = TRUE, comment.char="",na.strings = "NA", check.names=FALSE)
+
    if (mode == "row") data=t(data)
-
+
  sampleinfoTab=read.table(sampleinfo, header = TRUE, row.names=1, sep = sep, quote="\"")
  rownames(sampleinfoTab) = make.names(rownames(sampleinfoTab))
 
-
+ varinfoTab=read.table(varinfo, header = TRUE, sep = sep, quote="\"")
+ if(sum(colnames(data)!=varinfoTab[,1])!=0){ # if ID not exactly identical
+ if(sum(colnames(data)[order(colnames(data))]!=varinfoTab[order(varinfoTab[,1]),1])==0){
+ # reorder data matrix to match variable metadata order
+ data = data[,match(varinfoTab[,1],colnames(data))]
+ }else{
+ stop(paste0("\nVariables' ID do not match between your data matrix and your variable",
+ "metadata file. \nPlease check your data."))
+ }
+ }
+
  # -- group --
  match_data_sampleinfoTab = match(rownames(data),rownames(sampleinfoTab))
  if (sum(is.na(match_data_sampleinfoTab)) > 0) {
@@ -41,10 +51,10 @@
    write(head(rownames(sampleinfoTab)), stderr())
    quit("no",status=10)
  }
-  
-
+
+
  # -- anova --
-  
+
    # formula
  grps=list()
  anova_formula_s = "data ~ "
@@ -60,16 +70,16 @@
  anova_formula = as.formula(anova_formula_s)
 
 
-
+
  # anova
  manovaObjectList = manova(anova_formula)
  manovaList = summary.aov(manovaObjectList)
-
+
    # condition renaming
  manovaRownames = gsub(" ","",rownames(manovaList[[1]]))
  manovaNbrPvalue = length(manovaRownames)-1
  manovaRownames = manovaRownames[-(manovaNbrPvalue+1)]
-
+
  for (i in 1:length(condition)) {
    manovaRownames = sub(paste("grps\\[\\[",i,"\\]\\]",sep=""),condition[i],manovaRownames)
      anova_formula_s = sub(paste("grps\\[\\[",i,"\\]\\]",sep=""),condition[i],anova_formula_s)
@@ -77,45 +87,94 @@
 
    # log
    cat("\nanova_formula",anova_formula_s,"\n")
-
+
  # p-value
  aovPValue = sapply(manovaList,function(x){x[-(manovaNbrPvalue+1),5]})
  if(length(condition) == 1) aovPValue = t(aovPValue)
  rownames(aovPValue) = paste("pvalue_",manovaRownames,sep="")
-  
+
  # p-value adjusted
  if(length(condition) == 1) {
  aovAdjPValue = t(p.adjust(aovPValue,method=method))
  } else {
- aovAdjPValue = apply(aovPValue,2,p.adjust, method=method)
+ aovAdjPValue = t(apply(aovPValue,1,p.adjust, method=method))
  }
- rownames(aovAdjPValue) = paste("pvalueadjusted.",method,".",manovaRownames,sep="")
-
+ rownames(aovAdjPValue) = paste("pval.",method,".",manovaRownames,sep="")
+
  # selection
  colSumThreshold = colSums(aovAdjPValue <= threshold)
  if (selection_method == "intersection") {
- datafiltered = data[,colSumThreshold == nrow(aovAdjPValue )]
+ datafiltered = data[,colSumThreshold == nrow(aovAdjPValue ), drop=FALSE]
  } else {
- datafiltered = data[,colSumThreshold != 0]
+ datafiltered = data[,colSumThreshold != 0, drop=FALSE]
  }
-
+ selected.var = rep("no",ncol(data))
+ selected.var[colnames(data)%in%colnames(datafiltered)] = "yes"
+
  #data=rbind(data, aovPValue, aovAdjPValue)
- data=rbind(data, aovAdjPValue)
+ varinfoTab=cbind(varinfoTab, round(t(aovAdjPValue),10), selected.var)
+
+ # group means
+ for (i in 1:length(condition)) {
+ for(j in levels(grps[[i]])){
+ subgp = rownames(sampleinfoTab[which(sampleinfoTab[,condition[i]]==j),])
+ modmean = colMeans(data[which(rownames(data)%in%subgp),],na.rm=TRUE)
+ varinfoTab=cbind(varinfoTab, modmean)
+ colnames(varinfoTab)[ncol(varinfoTab)] = paste0("Mean_",condition[i],".",j)
+ }
+ }
+ colnames(varinfoTab) = make.unique(colnames(varinfoTab))
 
-
- if (mode == "row") {
-   data=t(data)
-   datafiltered=t(datafiltered)
+ # pdf for significant variables
+ pdf(outputdatasignif)
+ ### Venn diagram
+ if(nrow(aovAdjPValue)>5){
+ pie(100,labels=NA,main=paste0("Venn diagram only available for maximum 5 terms\n",
+     "(your analysis concerns ",nrow(aovAdjPValue)," terms)\n\n",
+ "Number of significant variables relatively to\nyour chosen threshold and ",
+ "selection method: ",ncol(datafiltered)),cex.main=0.8)
+ }else{
+ vennlist = list(NULL)
+ names(vennlist) = rownames(aovAdjPValue)[1]
+ if(length(colnames(aovAdjPValue))==0){colnames(aovAdjPValue)=varinfoTab[,1]}
+ for(i in 1:nrow(aovAdjPValue)){
+ vennlist[[rownames(aovAdjPValue)[i]]]=colnames(aovAdjPValue[i,which(aovAdjPValue[i,]<=threshold),drop=FALSE])
+ }
+ if(length(vennlist)==0){ pie(100,labels=NA,main="No significant ions was found.")
+ }else{ library(venn) ; venn(vennlist, zcolor="style", cexil=2, cexsn=1.5) }
  }
-
+ ### Boxplot
+ par(mfrow=c(2,2),mai=rep(0.5,4))
+ data <- as.data.frame(data)
+ for(i in 1:nrow(aovAdjPValue)){
+ factmain = gsub(paste0("pval.",method,"."),"",rownames(aovAdjPValue)[i])
+ factsignif = aovAdjPValue[i,which(aovAdjPValue[i,]<=threshold),drop=FALSE]
+ if((ncol(factsignif)!=0)&(factmain%in%colnames(sampleinfoTab))){
+ for(j in 1:ncol(factsignif)){
+ varsignif = gsub(" Response ","",colnames(factsignif)[j])
+ boxplot(as.formula(paste0("data$",varsignif," ~ sampleinfoTab$",factmain)),
+         main=paste0(factmain,"\n",varsignif), col="grey", mai=7)
+ }
+ }
+ }
+ dev.off()
+
+ # summary for significant variables
+ cat("\n\n- - - - - - - number of significant variables - - - - - - -\n\n")
+ for(i in 1:nrow(aovAdjPValue)){
+ cat(rownames(aovAdjPValue)[i],"-",
+     sum(aovAdjPValue[i,]<=threshold),"significant variable(s)\n")
+ }
+ cat("\nIf some of your factors are missing here, this may be due to\neffects",
+     "not estimable; your design may not be balanced enough.\n")
+
  # -- output / return --
- write.table(data, outputdatapvalue, sep=sep, quote=F, col.names = NA)
- write.table(datafiltered, outputdatafiltered, sep=sep, quote=F, col.names = NA)
-
- # log 
+ write.table(varinfoTab, outputdatapvalue, sep=sep, quote=F, row.names=FALSE)
+
+ # log
  cat("\nthreshold:",threshold,"\n")
- cat("result:",nrow(datafiltered),"/",nrow(data),"\n")
-  
+ cat("result:",ncol(datafiltered),"/",ncol(data),"\n\n")
+
  quit("no",status=0)
 }
 
@@ -127,6 +186,3 @@
 
 listArguments = parseCommandArgs(evaluate=FALSE)
 do.call(anova, listArguments)
-
-
-
b
diff -r 4f06e1796334 -r b147b17759a6 abims_anova.xml
--- a/abims_anova.xml Thu Oct 26 09:30:56 2017 -0400
+++ b/abims_anova.xml Wed Feb 28 07:44:13 2018 -0500
b
b'@@ -1,9 +1,10 @@\n-<tool id="abims_anova" name="Anova" version="1.1.4">\n-    \n+<tool id="abims_anova" name="Anova" version="1.2.0">\n+\n     <description>N-way anova. With ou Without interactions</description>\n-    \n+\n     <requirements>\n \t<requirement type="package" version="1.1_4">r-batch</requirement>\n+\t<requirement type="package" version="1.2">r-venn</requirement>\n     </requirements>\n \n     <stdio>\n@@ -11,39 +12,40 @@\n     </stdio>\n \n     <command>\n-Rscript $__tool_directory__/abims_anova.r file \'$input\' sampleinfo \'$sampleinfo\' mode \'$mode\' \n+Rscript $__tool_directory__/abims_anova.r file \'$input\' sampleinfo \'$sampleinfo\' varinfo \'$varinfo\' mode \'$mode\'\n condition "c(\'$condition_1\'\n #for $i, $s in enumerate( $conditions )\n ,\'${s.condition}\'\n #end for\n )"\n-interaction $interaction \n-method $method \n-threshold $threshold \n-selection_method $selection_method \n-sep \'$sep\' \n-dec \'$dec\' \n-outputdatapvalue \'$dataMatrixPValue\' \n-outputdatafiltered \'$dataMatrixFiltered\'\n-    </command> \n+interaction $interaction\n+method $method\n+threshold $threshold\n+selection_method $selection_method\n+sep \'$sep\'\n+dec \'$dec\'\n+outputdatapvalue \'$varMetaPValue\'\n+outputdatasignif \'$dataSignif\'\n+    </command>\n \n     <inputs>\n         <param name="input" type="data" label="Data Matrix file" format="tabular" help="Matrix of numeric data with headers." />\n         <param name="sampleinfo" type="data" label="Sample Metadata file" format="tabular" help="Tabular file with the data metadata : one sample per line and at least two columns : ids and one condition" />\n-        \n-        <param name="mode" type="select" help="Perform the anova tests on column/row" format="text" optional="true">\n+        <param name="varinfo" type="data" label="Variable Metadata file" format="tabular" help="Tabular file with information about your tested variables. Only used to aggregate generated information." />\n+\n+        <param name="mode" type="select" help="Perform the anova tests on column/row; for W4M 3-tables format, use \'row\'." format="text" optional="true">\n             <label>Mode</label>\n-            <option value="row">row</option>\n+            <option value="row" selected="True">row</option>\n             <option value="column">column</option>\n         </param>\n-    \n+\n         <param name="condition_1" type="text" label="Condition" value="" help="The column name of the condition. ex: hour or treatment" optional="false" />\n         <repeat name="conditions" title="Conditions for N-ways anova">\n             <param name="condition" type="text" label="Condition" value="" help="The column name of the condition. ex: hour or treatment" />\n         </repeat>\n \n         <param name="interaction" type="boolean" label="Enable interaction response p-values" truevalue="T" falsevalue="F" help="Used if more than 1 conditon. The anova will produse p-value according to the interaction between your condition (ex: condition1:conditions2, condition1:conditions3, condition2:conditions3 and condition1:condition2:conditions3)" />\n-            \n+\n         <param name="method" type="select" help="Method used to apply a correction on the pvalue because of the number of test" >\n             <label>PValue adjusted method</label>\n             <option value="BH">BH</option>\n@@ -53,9 +55,9 @@\n             <option value="hommel">hommel</option>\n             <option value="BY">BY</option>\n             <option value="fdr">fdr</option>\n-            <option value="none">none</option>\t\t\n-        </param>        \n-        \n+            <option value="none" selected="True">none</option>\n+        </param>\n+\n         <param name="threshold" type="float" label="Threshold" value="0.01" help="max adjusted p.value accepted" />\n \n         <param name="selection_method" type="select" help="Intersection: all condition p-value must be under the threshold. Union: at least condition p-value must be under the threshold. ">\n@@ -70,20 +72,21 @@\n             <option value="semicolon">;</option>\n             <option valu'..b'ierarchical Clustering\n+***.anova_signif.pdf**\n \n-    \n-    \n----------------------------------------------------\n-\n----------------\n-Working example\n----------------\n+    | A pdf file containing a Venn diagram and boxplots of significant variables.\n \n \n-Input files\n------------\n-\n-**>A part of an example of Data Matrix file input**\n-    \n+------\n \n-+--------+------------------+----------------+\n-| Name   | Bur-eH_FSP_12    | Bur-eH_FSP_24  |\t                                       \n-+========+==================+================+\n-|M202T601| 91206595.7559783 |106808979.08546 |\n-+--------+------------------+----------------+\n-|M234T851| 27249137.275504  |28824971.3177926|  \n-+--------+------------------+----------------+       \n+.. class:: infomark\n \n-**>A part of an example of Sample Metadata file input**\n-    \n-    \n-+---------------------------+------------+------------+------------+\n-| Sample name               |   class    |   time     |   batch    |\n-+===========================+============+============+============+\n-| Bur-eH_FSP_12             | Bur-eH     |    12      |     1      |\n-+---------------------------+------------+------------+------------+\n-| Bur-eH_FSP_24             | Bur-eH     |    24      |     1      |\n-+---------------------------+------------+------------+------------+\n-| Bur-NI_FSP_12             | Bur-NI     |    12      |     2      |\n-+---------------------------+------------+------------+------------+\n-| Bur-NI_FSP_24             | Bur-NI     |    24      |     2      |\n-+---------------------------+------------+------------+------------+\n-\n-Parameters\n-----------\n+The outputs ***.anova_filtered.tabular** is a tabular file. You can continue your analysis using it in the following tools:\n \n-    | Mode -> **row**\n-    | column name of condition -> **class**\n-    | Separator of columns: -> **tabulation**\n-    | Decimal separator -> **.**\n-    | PValue adjusted method -> **BH**\n-    | Threshold -> **0.001**\n-    \n-\n+    | Generic_filter\n+    | Hierarchical Clustering\n \n-Output files\n-------------\n-\n-**Part of an example of xset.anova_filtered.tabular:**\n-\n-.. image:: anova_pvalue.png\n-\n-**Part of an example of xset.anova_pvalue.tabular:**\n-\n-.. image:: anova_filtered.png\n \n \n ---------------------------------------------------\n \n-    \n----------------------------\n-Position in workflow4metabo\n----------------------------\n \n \n-**Upstream tools**\n-\n-+---------------------------+----------------------------------------+--------+------------------------+\n-| Name                      | Output file                            | Format | parameter              |   \n-+===========================+========================================+========+========================+\n-|CAMERA.annotateDiffreport  |xset.annotatediffreport.data_matrix.tsv | Tabular| Data table file        |   \n-+---------------------------+----------------------------------------+--------+------------------------+\n-|xcms.xcmsSet               |sample_info.tab                         | Tabular| sample info table file |\n-+---------------------------+----------------------------------------+--------+------------------------+\n-\n-\n-**Downstream tools**\n-\n-+---------------------------+---------------------------------------------------------+--------+\n-| Name                      | Output file                                             | Format | \n-+===========================+=========================================================+========+\n-|PCA                        |xset.anova_pvalue.tabular OR xset.anova_filtered.tabular | Tabular|\n-+---------------------------+---------------------------------------------------------+--------+\n-|Hierarchical Clustering    |xset.anova_pvalue.tabular OR xset.anova_filtered.tabular | Tabular|\n-+---------------------------+---------------------------------------------------------+--------+\n-\n-\n-**General schema of the metabolomic workflow**\n-\n-.. image:: anova_workflow.png\n-\n     </help>\n \n     <citations>\n'
b
diff -r 4f06e1796334 -r b147b17759a6 static/images/anova_filtered.png
b
Binary file static/images/anova_filtered.png has changed
b
diff -r 4f06e1796334 -r b147b17759a6 static/images/anova_pvalue.png
b
Binary file static/images/anova_pvalue.png has changed
b
diff -r 4f06e1796334 -r b147b17759a6 static/images/anova_workflow.png
b
Binary file static/images/anova_workflow.png has changed
b
diff -r 4f06e1796334 -r b147b17759a6 test-data/dataMatrix.tsv_anova_filtered.tabular
--- a/test-data/dataMatrix.tsv_anova_filtered.tabular Thu Oct 26 09:30:56 2017 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,3 +0,0 @@
- HU_017 HU_028 HU_034 HU_051 HU_060 HU_078 HU_091 HU_093 HU_099 HU_110 HU_130 HU_134 HU_138 HU_149 HU_152 HU_175 HU_178 HU_185 HU_204 HU_208
-HMDB00208 747080 13420742 595872 1172376 7172632 3143654 4059767 1433702 5593888 5402629 2477288 3346077 4230072 7621236 8960828 10335722 7037373 1574738 3359238 2540044
-HMDB00512 53304 319783 280560 85009 1333877 556003 590779 209285 342532 198512 569970 525240 246282 1140422 542345 1171008 827723 222953 438839 85554
b
diff -r 4f06e1796334 -r b147b17759a6 test-data/dataMatrix.tsv_anova_pvalue.tabular
--- a/test-data/dataMatrix.tsv_anova_pvalue.tabular Thu Oct 26 09:30:56 2017 -0400
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
b
@@ -1,16 +0,0 @@
- HU_017 HU_028 HU_034 HU_051 HU_060 HU_078 HU_091 HU_093 HU_099 HU_110 HU_130 HU_134 HU_138 HU_149 HU_152 HU_175 HU_178 HU_185 HU_204 HU_208 pvalueadjusted.BH.age pvalueadjusted.BH.gender
-HMDB03193 76043 412165 44943 27242 436566 173175 242549 57066 559869 3732 339188 471368 262271 127285 451270 212500 79673 NA 891129 43907 0.740856975457218 0.740856975457218
-HMDB01101 30689 6877586 52217 3158 10789748 229568 4763576 3878773 976436 831937 608298 1605075 72021 442510 1107705 1464339 31250 2724553 72900 32742 0.347623051099051 0.234554902330543
-HMDB10348 47259 544877 60885 34582 529874 168264 176500 76457 610110 16262 279156 524468 451573 591487 433529 161069 214392 13781 1580343 39315 0.720303175717481 0.720303175717481
-HMDB59717 357351 1030464 301983 67604 306862 1028110 1530493 270027 1378535 289677 808334 1132813 871209 895435 715190 1563158 784738 146195 994336 239030 0.252979062487671 0.517822514350462
-HMDB00822 483755 579287 1132413 157113 1577570 1469735 1085454 477909 814755 245417 610681 763706 2406336 827531 992508 569605 355321 150259 1334200 271010 0.808532959173048 0.808532959173048
-HMDB13189 2644620 727587 1661412 619181 136278 2755434 593863 837865 3526136 2003278 1608814 3446611 1941527 113937 3132404 2893445 2092753 1034666 1517319 841661 0.329174238111018 0.329174238111018
-HMDB00299 250551 1046138 456162 159386 1013302 808657 614370 250403 768004 242085 504108 1014041 1362408 1057660 1110050 566050 411886 142233 1992420 284775 0.995859884733937 0.995859884733937
-HMDB00191 560002 771533 575790 392284 888498 785428 645785 591569 960658 910201 639437 1092885 1409045 2292023 1246459 1945577 710519 773384 1061418 622898 0.15341384456659 0.15341384456659
-HMDB00518 34236 58249 85944 NA 342102 129886 175800 13154 230242 NA 440223 315368 10657 419508 48673 28361 514579 23108 867108 73831 0.439012867631325 0.596200901535843
-HMDB00715 1252089 2547452 905408 371059 4983588 5140022 2658555 814523 2558923 859466 4184204 3865723 3236644 2615560 3820724 3577833 2295288 625924 7517724 1341900 0.814406453193777 0.814406453193777
-HMDB01032 2569205 26023086 1604999 430453 8103558 26222916 257139 675754 59906109 263055 31151730 18648127 14989438 1554658 20249262 5588731 871010 15920 9120781 44276 0.288354536353544 0.288354536353544
-HMDB00208 747080 13420742 595872 1172376 7172632 3143654 4059767 1433702 5593888 5402629 2477288 3346077 4230072 7621236 8960828 10335722 7037373 1574738 3359238 2540044 0.659785284053633 0.00376251274734483
-HMDB04824 374028 1144386 539206 178517 1046190 959381 605191 310260 1253319 477259 477995 825691 1157093 1089284 1411802 1020206 782673 346761 1824553 387811 0.646714644805001 0.646714644805001
-HMDB00512 53304 319783 280560 85009 1333877 556003 590779 209285 342532 198512 569970 525240 246282 1140422 542345 1171008 827723 222953 438839 85554 0.13976111393526 0.0491480895853803
-HMDB00251 368600 616555 94936 622468 180988 293988 352855 767894 268331 167246 310918 1248919 577184 10985 335711 403815 80614 63393 454489 616061 0.565910223149305 0.565910223149305
b
diff -r 4f06e1796334 -r b147b17759a6 test-data/dataMatrix.tsv_anova_signif.pdf
b
Binary file test-data/dataMatrix.tsv_anova_signif.pdf has changed
b
diff -r 4f06e1796334 -r b147b17759a6 test-data/variableMetadata.tsv
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/variableMetadata.tsv Wed Feb 28 07:44:13 2018 -0500
b
@@ -0,0 +1,16 @@
+variables numHMDB
+HMDB03193 03193
+HMDB01101 01101
+HMDB10348 10348
+HMDB59717 59717
+HMDB00822 00822
+HMDB13189 13189
+HMDB00299 00299
+HMDB00191 00191
+HMDB00518 00518
+HMDB00715 00715
+HMDB01032 01032
+HMDB00208 00208
+HMDB04824 04824
+HMDB00512 00512
+HMDB00251 00251
b
diff -r 4f06e1796334 -r b147b17759a6 test-data/variableMetadata.tsv_anova_pvalue.tabular
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test-data/variableMetadata.tsv_anova_pvalue.tabular Wed Feb 28 07:44:13 2018 -0500
b
@@ -0,0 +1,16 @@
+variables numHMDB pval.BH.age pval.BH.gender selected.var Mean_age.20-30 Mean_age.30-40 Mean_age.40-50 Mean_age.50-60 Mean_age.60-70 Mean_gender.F Mean_gender.M
+HMDB03193 3193 0.7937753308 0.7855401401 no 270572 392525.5 279004.4 135576.75 161111 199371.111111111 311760.1
+HMDB01101 1101 0.7449065381 0.4721949521 no 530010.25 647011.75 1923248.66666667 3888168.75 2397413 2430552.8 1228955.3
+HMDB10348 10348 0.780857123 0.8311190489 no 279384 653013.75 291703.666666667 170869.5 195446 257916.8 397501.5
+HMDB59717 59717 0.7449065381 0.7855401401 no 600089.75 1065315.75 761023.666666667 292137.25 1157615.5 603835.3 867319.1
+HMDB00822 822 0.8085329592 0.7855401401 no 558846.5 835504.25 975513 858327.25 720387.5 572562.1 1057894.4
+HMDB13189 13189 0.7449065381 0.5606315068 no 2029845.5 1533378.75 2091740.83333333 1159708.25 1343308 1359519 2053360.1
+HMDB00299 299 0.780857123 0.9958598847 no 580553.75 1030059.5 770671.333333333 490488 513128 603356.5 802112.4
+HMDB00191 191 0.7449065381 0.4721949521 no 805574.75 1484613.75 898712.833333333 741514.5 678152 1055337.6 832201.7
+HMDB00518 518 0.7449065381 0.7855401401 no 117582 438800 95250.6666666667 147066.666666667 345189.5 188551.375 230261.8
+HMDB00715 715 0.780857123 0.8725783427 no 2023151.5 4473830.25 2777975.66666667 1890746.25 2476921.5 2303879.4 3213381.5
+HMDB01032 1032 0.7449065381 0.5606315068 no 20157525 11853975 14744782 2661841.5 564074.5 6314400.9 16514619.8
+HMDB00208 208 0.780857123 0.0282188456 yes 4566784 5948371 4410393.83333333 3651208.75 5548570 6523832 2898663.8
+HMDB04824 4824 0.780857123 0.7855401401 no 807862.25 1103009.5 801223.333333333 593228.75 693932 788488.9 832671.7
+HMDB00512 512 0.7449065381 0.1843053359 no 263860 830059.75 320594.166666667 505558.5 709251 592718.6 381279.4
+HMDB00251 251 0.780857123 0.7855401401 no 460642.75 295051.75 528106.5 302766 216734.5 309783.6 473811.4