1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
|
context("listToMap converts a DataFrame list to sampleMap")
test_that("listToMap works with data.frame", {
samp <- data.frame(
assay = rep(letters[1:3], each = 3),
primary = rep(paste0(letters[1:3], 1:3), each = 3),
colname = as.character(1:9)
)
ssamp <- split(samp[-1], samp[["assay"]])
Dsamp <- as(samp, "DataFrame")
Dsamp[["assay"]] <- as.factor(Dsamp[["assay"]])
identical(Dsamp, listToMap(ssamp))
})
test_that("listToMap works with DataFrame", {
assayA <- DataFrame(primary = "pt1", colname = "samp1")
assayB <- DataFrame(primary = "pt1", colname = "samp2")
expect_identical(
listToMap(list(A = assayA, B = assayB)),
DataFrame(assay = factor(c("A", "B")),
primary = c("pt1", "pt1"),
colname = c("samp1", "samp2"))
)
expect_error(listToMap(list(DataFrame(letters[1:3], letters[3:1]))))
newMap <- listToMap(
list(
assay1 = DataFrame(
primary = paste0("pt", 1:3),
colname = paste0("samp", 1:3)),
assay2 = DataFrame(
primary = paste0("pt", 1:3),
colname = paste0("samp", 4:6))
)
)
expect_identical(
newMap,
DataFrame(
assay = factor(rep(c("assay1", "assay2"),
times = c(3, 3))),
primary = rep(paste0("pt", 1:3), 2),
colname = paste0("samp", 1:6)
)
)
})
test_that("listToMap works with SplitDataFrameList", {
samp <- data.frame(
assay = rep(letters[1:3], each = 3),
primary = rep(paste0(letters[1:3], 1:3), each = 3),
colname = as.character(1:9)
)
ssamp <- split(samp[-1], samp[["assay"]])
SDFLsamp <- as(ssamp, "SplitDataFrameList")
DFsamp <- as(samp, "DataFrame")
DFsamp[["assay"]] <- as.factor(DFsamp[["assay"]])
expect_identical(DFsamp, listToMap(SDFLsamp))
})
test_that("listToMap fill works with empty elements", {
samps <- paste0("samp", 1:2)
listMap <- list(
a1 = DataFrame(primary = samps, colname = samps),
a2 = DataFrame(primary = character(0L), colname = character(0L))
)
nmap <- listToMap(listMap, fill = FALSE)
expect_identical(
nmap,
DataFrame(
assay = factor(c("a1", "a1"), levels = c("a1", "a2")),
primary = samps,
colname = samps
)
)
nmap <- listToMap(listMap, fill = TRUE)
expect_identical(
nmap,
DataFrame(
assay = factor(c("a1", "a1", "a2"), levels = c("a1", "a2")),
primary = c(samps, NA_character_),
colname = c(samps, NA_character_)
)
)
})
test_that("listToMap uses list names as factor levels", {
listMap <- list(
assay1 =
DataFrame(primary = paste0("A", 1:4), colname = paste0("A", 1:4)),
assay2 =
DataFrame(primary = character(0L), colname = character(0L))
)
result <- listToMap(listMap, fill = FALSE)
expect_identical(
levels(result[["assay"]]),
c("assay1", "assay2")
)
})
|