annotate BC/test/batchcorrection_runtests.R @ 3:2e3a23dd6c24 draft default tip

Uploaded
author melpetera
date Thu, 28 Feb 2019 05:12:34 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
1 #!/usr/bin/env Rscript
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
2
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
3 ## Package
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
4 ##--------
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
5
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
6 library(RUnit)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
7
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
8 ## Constants
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
9 ##----------
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
10
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
11 testOutDirC <- "output"
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
12 argVc <- commandArgs(trailingOnly = FALSE)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
13 scriptPathC <- sub("--file=", "", argVc[grep("--file=", argVc)])
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
14
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
15
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
16 ## Functions
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
17 ##-----------
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
18
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
19 ## Reading tables (matrix or data frame)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
20 readTableF <- function(fileC, typeC = c("matrix", "dataframe")[1]) {
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
21
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
22 file.exists(fileC) || stop(paste0("No output file \"", fileC ,"\"."))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
23
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
24 switch(typeC,
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
25 matrix = return(t(as.matrix(read.table(file = fileC,
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
26 header = TRUE,
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
27 row.names = 1,
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
28 sep = "\t",
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
29 stringsAsFactors = FALSE)))),
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
30 dataframe = return(read.table(file = fileC,
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
31 header = TRUE,
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
32 row.names = 1,
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
33 sep = "\t",
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
34 stringsAsFactors = FALSE)))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
35
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
36 }
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
37
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
38 ## Call wrapper
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
39 wrapperCallF <- function(paramLs, allLoessL) {
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
40
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
41 ## Set program path
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
42 wrapperPathC <- file.path(dirname(scriptPathC), "..",
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
43 ifelse(allLoessL,
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
44 "batch_correction_all_loess_wrapper.R",
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
45 "batch_correction_wrapper.R"))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
46
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
47 ## Set arguments
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
48 argLs <- NULL
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
49 for (parC in names(paramLs))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
50 argLs <- c(argLs, parC, paramLs[[parC]])
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
51
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
52 ## Call
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
53 wrapperCallC <- paste(c(wrapperPathC, argLs), collapse = " ")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
54
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
55 if(.Platform$OS.type == "windows")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
56 wrapperCallC <- paste("Rscript", wrapperCallC)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
57
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
58
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
59 print(wrapperCallC)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
60
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
61
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
62 wrapperCodeN <- system(wrapperCallC)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
63
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
64 if (wrapperCodeN != 0)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
65 stop(paste0("Error when running 'batch_correction_",
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
66 ifelse(allLoessL, "all_loess_", ""),
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
67 "wrapper.R'"))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
68
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
69 ## Get output
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
70 outLs <- list()
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
71 if ("dataMatrix_out" %in% names(paramLs))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
72 outLs[["datMN"]] <- readTableF(paramLs[["dataMatrix_out"]], "matrix")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
73 if ("sampleMetadata_out" %in% names(paramLs))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
74 outLs[["samDF"]] <- readTableF(paramLs[["sampleMetadata_out"]], "dataframe")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
75 if ("variableMetadata_out" %in% names(paramLs))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
76 outLs[["varDF"]] <- readTableF(paramLs[["variableMetadata_out"]], "dataframe")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
77 if("information" %in% names(paramLs))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
78 outLs[["infVc"]] <- readLines(paramLs[["information"]])
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
79
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
80 if("out_preNormSummary" %in% names(paramLs))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
81 outLs[["sumDF"]] <- readTableF(paramLs[["out_preNormSummary"]], "dataframe")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
82
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
83 return(outLs)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
84
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
85 }
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
86
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
87 ## Setting default parameters
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
88 defaultArgF <- function(testInDirC, determineL) {
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
89
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
90 defaultArgLs <- list()
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
91
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
92 if(file.exists(file.path(dirname(scriptPathC), testInDirC, "dataMatrix.tsv")))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
93 defaultArgLs[["dataMatrix"]] <- file.path(dirname(scriptPathC), testInDirC, "dataMatrix.tsv")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
94 if(file.exists(file.path(dirname(scriptPathC), testInDirC, "sampleMetadata.tsv")))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
95 defaultArgLs[["sampleMetadata"]] <- file.path(dirname(scriptPathC), testInDirC, "sampleMetadata.tsv")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
96
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
97 if(!determineL)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
98 if(file.exists(file.path(dirname(scriptPathC), testInDirC, "variableMetadata.tsv")))
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
99 defaultArgLs[["variableMetadata"]] <- file.path(dirname(scriptPathC), testInDirC, "variableMetadata.tsv")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
100
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
101 if(determineL) { ## determinebc
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
102
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
103 defaultArgLs[["out_graph_pdf"]] <- file.path(dirname(scriptPathC), testOutDirC, "out_graph.pdf")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
104 defaultArgLs[["out_preNormSummary"]] <- file.path(dirname(scriptPathC), testOutDirC, "preNormSummary.txt")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
105
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
106 } else { ## batchcorrection
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
107
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
108 defaultArgLs[["dataMatrix_out"]] <- file.path(dirname(scriptPathC), testOutDirC, "dataMatrix.tsv")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
109 defaultArgLs[["variableMetadata_out"]] <- file.path(dirname(scriptPathC), testOutDirC, "variableMetadata.tsv")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
110 defaultArgLs[["graph_output"]] <- file.path(dirname(scriptPathC), testOutDirC, "graph_output.pdf")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
111 defaultArgLs[["rdata_output"]] <- file.path(dirname(scriptPathC), testOutDirC, "rdata_output.rdata")
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
112
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
113 }
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
114
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
115 defaultArgLs
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
116
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
117 }
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
118
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
119 ## Main
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
120 ##-----
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
121
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
122 ## Create output folder
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
123 file.exists(testOutDirC) || dir.create(testOutDirC)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
124
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
125 ## Run tests
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
126 test.suite <- defineTestSuite('tests', dirname(scriptPathC), testFileRegexp = paste0('^.*_tests\\.R$'), testFuncRegexp = '^.*$')
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
127 isValidTestSuite(test.suite)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
128 test.results <- runTestSuite(test.suite)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
129 print(test.results)
2e3a23dd6c24 Uploaded
melpetera
parents:
diff changeset
130