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

Uploaded
author melpetera
date Thu, 28 Feb 2019 05:12:34 -0500
parents
children
comparison
equal deleted inserted replaced
2:57edfd3943ab 3:2e3a23dd6c24
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