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