diff tests/multivariate_tests.R @ 0:fafba524dca6 draft

planemo upload for repository https://github.com/workflow4metabolomics/multivariate.git commit 6596dbd39d20ee1962d9ebdd87eec04821239760
author ethevenot
date Wed, 27 Jul 2016 11:22:56 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/multivariate_tests.R	Wed Jul 27 11:22:56 2016 -0400
@@ -0,0 +1,166 @@
+#!/usr/bin/env Rscript
+
+args <- commandArgs(trailingOnly = F)
+script.path <- sub("--file=","",args[grep("--file=",args)])
+library(RUnit)
+library(ropls)
+
+#############
+# CONSTANTS #
+#############
+
+exaDirOutC <- file.path(dirname(script.path), 'output')
+
+###################
+# LOAD DATA FRAME #
+###################
+
+load.df <- function(file) {
+	file.exists(file) || stop(paste0("No output file \"", file ,"\"."))
+	return(read.table(file = file, header = TRUE, sep = "\t", stringsAsFactors = FALSE))
+}
+
+#############################
+# CALL MULTIVARIATE WRAPPER #
+#############################
+
+call.multivariate.wrapper <- function(params) {
+
+	# Set program path
+	prog <- file.path(dirname(script.path), '..', 'multivariate_wrapper.R')
+
+	# Set arguments
+	args <- NULL
+	for (a in names(params))
+		args <- c(args, a, params[[a]])
+
+	# Call
+	call <- paste(c(prog, args), collapse = ' ')
+	retcode <- system(call)
+	if (retcode != 0)
+		stop("Error when running multivariate_wrapper.R.")
+
+	# Get output
+	out <- list()
+	if ('ropls_out' %in% names(params)) {
+		load(file = params[['ropls_out']])
+		out[['ropLs']] <- ropLs
+	}
+	if ('sampleMetadata_out' %in% names(params))
+		out[['samDF']] <- load.df(params[['sampleMetadata_out']])
+	if ('variableMetadata_out' %in% names(params))
+		out[['varDF']] <- load.df(params[['variableMetadata_out']])
+
+	return(out)
+}
+
+########
+# MAIN #
+########
+
+## Create output folder
+##---------------------
+file.exists(exaDirOutC) || dir.create(exaDirOutC)
+
+# Define data sets
+tesArgLs <- list(input_pca = c(respC = "none",
+                     predI = "NA",
+                     orthoI = "0",
+                     testL = "FALSE"),
+                 input_pcaGender = c(respC = "none",
+                     predI = "NA",
+                     orthoI = "0",
+                     testL = "FALSE",
+                     parMahalC = "gender"),
+                 input_plsdaGender = c(respC = "gender",
+                     predI = "NA",
+                     orthoI = "0",
+                     testL = "FALSE"),
+                 input_oplsAge = c(respC = "age",
+                     predI = "1",
+                     orthoI = "1",
+                     testL = "FALSE"),
+                 input_oplsdaGender = c(respC = "gender",
+                     predI = "1",
+                     orthoI = "1",
+                     testL = "FALSE"),
+                 sacurine_pca = c(respC = "none",
+                     predI = "NA",
+                     orthoI = "0",
+                     testL = "FALSE"),
+                 sacurine_pcaGender = c(respC = "none",
+                     predI = "NA",
+                     orthoI = "0",
+                     testL = "FALSE",
+                     parMahalC = "gender"),
+                 sacurine_plsAge = c(respC = "age",
+                     predI = "NA",
+                     orthoI = "0",
+                     testL = "FALSE"),
+                 sacurine_plsdaGender = c(respC = "gender",
+                     predI = "NA",
+                     orthoI = "0",
+                     testL = "FALSE",
+                     .chkC = "checkEqualsNumeric(getSummaryDF(outLs[['ropLs']])[, 'Q2(cum)'], 0.584, tolerance = 1e-3)"),
+                 sacurineTest_pls = c(respC = "age",
+                     predI = "2",
+                     orthoI = "0",
+                     testL = "TRUE",
+                     .chkC = "checkEqualsNumeric(outLs[['samDF']][181, 'age_PLS_predictions'], 40.82252, tolerance = 1e-5)"),
+                 sacurineTest_opls = c(respC = "age",
+                     predI = "1",
+                     orthoI = "2",
+                     testL = "TRUE",
+                     .chkC = "checkEqualsNumeric(outLs[['samDF']][181, 'age_OPLS_predictions'], 40.28963, tolerance = 1e-5)"),
+                 sacurineTest_plsda = c(respC = "gender",
+                     predI = "2",
+                     orthoI = "0",
+                     testL = "TRUE",
+                     .chkC = "checkEquals(outLs[['samDF']][181, 'gender_PLSDA_predictions'], 'F')"),
+                 sacurineTest_oplsda = c(respC = "gender",
+                     predI = "1",
+                     orthoI = "1",
+                     testL = "TRUE",
+                     .chkC = "checkEquals(outLs[['samDF']][181, 'gender_OPLSDA_predictions'], 'F')"),
+                 sacurine_oplsAge = c(respC = "age",
+                     predI = "1",
+                     orthoI = "1",
+                     testL = "FALSE",
+                     .chkC = "checkEqualsNumeric(outLs[['varDF']][1, 'age_OPLS_VIP_ortho'], 0.3514378, tolerance = 1e-7)"),
+                 sacurine_oplsdaGender = c(respC = "gender",
+                     predI = "1",
+                     orthoI = "1",
+                     testL = "FALSE"),
+                 example1_plsda = c(respC = "traitment",
+                     predI = "3",
+                     orthoI = "0",
+                     testL = "FALSE",
+                     .chkC = "checkEqualsNumeric(nrow(outLs[['ropLs']]@modelDF), 3, tolerance = 0.5)"),
+                 example2_pca = c(respC = "none",
+                     predI = "NA",
+                     orthoI = "0",
+                     testL = "FALSE"))
+
+# Add file information for each dataset
+for(tesC in names(tesArgLs))
+    tesArgLs[[tesC]] <- c(tesArgLs[[tesC]],
+                          dataMatrix_in = file.path(unlist(strsplit(tesC, "_"))[1], "dataMatrix.tsv"),
+                          sampleMetadata_in = file.path(unlist(strsplit(tesC, "_"))[1], "sampleMetadata.tsv"),
+                          variableMetadata_in = file.path(unlist(strsplit(tesC, "_"))[1], "variableMetadata.tsv"),
+                          sampleMetadata_out = file.path(exaDirOutC, "sampleMetadata.tsv"),
+                          variableMetadata_out = file.path(exaDirOutC, "variableMetadata.tsv"),
+                          ropls_out = file.path(exaDirOutC, "ropls.bin"),
+                          figure = file.path(exaDirOutC, "figure.pdf"),
+                          information = file.path(exaDirOutC, "information.txt"))
+
+# Run tests on each dataset
+for(tesC in names(tesArgLs)) {
+    print(tesC)
+	args <- as.list(tesArgLs[[tesC]])
+	args[['.chkC']] <- NULL
+    outLs <- call.multivariate.wrapper(args)
+    if(".chkC" %in% names(tesArgLs[[tesC]]))
+        stopifnot(eval(parse(text = tesArgLs[[tesC]][[".chkC"]])))
+}
+
+message("Checks successfully completed")