Nothing
# Setup ----
# mock up a dummy ADAT object
# smaller than `example_data` for speed/simplicity
data <- mock_adat()
# Testing ----
# count ----
test_that("count method produces expected output", {
new <- count(data, SampleGroup)
expect_false(is.soma_adat(new))
expect_s3_class(new, "tbl_df")
expect_equal(dim(new), c(2L, 2L))
expect_named(new, c("SampleGroup", "n"))
expect_equal(new$n, c(3, 3))
new <- count(data, SampleGroup, TimePoint)
expect_false(is.soma_adat(new))
expect_s3_class(new, "tbl_df")
expect_equal(new, tibble::tibble(
SampleGroup = c("A", "A", "B", "B"),
TimePoint = c("after", "before", "after", "before"),
n = c(1L, 2L, 2L, 1L))
)
})
# arrange ----
test_that("`arrange()` method produces expected output", {
new <- arrange(data, NormScale)
expect_true(is.soma_adat(new))
expect_s3_class(new, "soma_adat")
expect_equal(class(new), class(data))
expect_equal(dim(new), dim(data))
expect_equal(names(new), names(data))
new_rn <- rownames(data)[order(data$NormScale)]
expect_equal(rownames(new), new_rn)
expect_equal(sort(data$NormScale), new$NormScale)
expect_true(is_intact_attr(new))
expect_equal(names(attributes(new)), names(attributes(data))) # atts order preserved
# check the arrange happened correctly
expect_equal(new$SampleId, c("005", "001", "002", "003", "004", "006"))
})
# rename ----
test_that("`rename()` method produces expected output", {
new <- rename(data, PID = PlateId)
expect_true(is.soma_adat(new))
expect_s3_class(new, "soma_adat")
expect_true(is_intact_attr(new))
expect_equal(class(new), class(data))
expect_equal(dim(new), dim(data))
expect_true("PID" %in% names(new))
expect_false("PlateId" %in% names(new))
expect_setequal(rownames(new), rownames(data))
expect_equal(names(attributes(new)), names(attributes(data))) # atts order preserved
expect_warning( # warning if analyte is renamed
new2 <- rename(data, PID = PlateId, seq.1111.11 = seq.3333.33),
"You are renaming analytes. Modify the SomaScan menu with care."
)
expect_true(is_intact_attr(new2))
new_cm <- attr(data, "Col.Meta")
new_cm[2L, ] <- NA # 3333-33 is renamed, NAs in Col.Meta row
expect_equal(attr(new2, "Col.Meta"), new_cm)
})
# filter ----
test_that("`filter()` method produces expected output", {
new <- filter(data, NormScale > 0.9)
expect_true(is.soma_adat(new))
expect_s3_class(new, "soma_adat")
expect_equal(class(new), class(data))
expect_equal(names(new), names(data))
expect_equal(dim(new), c(3L, ncol(data)))
expect_equal(new$NormScale, c(1.1, 1.8, 1.8))
expect_true(all(rownames(new) %in% rownames(data)))
expect_true(is_intact_attr(new))
expect_equal(names(attributes(new)), names(attributes(data))) # atts order preserved
})
# mutate ----
test_that("`mutate()` method produces expected output", {
new <- mutate(data, Subarray_2x = Subarray * 2)
expect_true(is.soma_adat(new))
expect_s3_class(new, "soma_adat")
expect_equal(class(new), class(data))
expect_true("Subarray_2x" %in% names(new)) # new column
expect_equal("Subarray_2x", setdiff(names(new), names(data)))
expect_equal(dim(new), dim(data) + c(0L, 1L)) # new column
expect_equal(rownames(new), rownames(data))
expect_equal(new$Subarray_2x, new$Subarray * 2)
expect_true(is_intact_attr(new))
expect_equal(names(attributes(new)), names(attributes(data))) # atts order preserved
})
# select ----
test_that("`select()` method produces expected output", {
apts <- head(getAnalytes(data), 2L)
meta <- head(getMeta(data), 3L)
new <- select(data, all_of(meta), all_of(apts))
expect_true(is.soma_adat(new))
expect_s3_class(new, "soma_adat")
expect_equal(class(new), class(data))
expect_named(new, c(meta, apts))
expect_equal(dim(new), c(nrow(data), 5L))
expect_equal(getAnalytes(new, n = TRUE), length(apts))
expect_length(setdiff(names(new), getAnalytes(new)), length(meta))
expect_true(all(rownames(new) %in% rownames(data)))
expect_true(is_intact_attr(new))
ad <- attributes(new)$Col.Meta
expect_equal(dim(ad), c(2L, 9L))
expect_equal(ad$SeqId, getSeqId(apts)) # apt data sync'd?
expect_equal(names(attributes(new)), names(attributes(data))) # atts order preserved
})
# left-join ----
test_that("`left_join()` method produces expected output", {
merge_data <- withr::with_seed(101,
data.frame(SampleId = sample(data$SampleId),
NewData = rnorm(6)))
new <- left_join(data, merge_data, by = "SampleId")
expect_true(is.soma_adat(new))
expect_equal(class(new), class(data))
expect_equal(dim(new), dim(data) + c(0L, 1L)) # new column
expect_true("NewData" %in% names(new)) # new column
expect_equal(rownames(new), rownames(data))
expect_equal(sum(new$NewData), sum(merge_data$NewData))
expect_false(all(new$NewData == merge_data$NewData)) # some reordered
expect_false(setequal(getMeta(new), getMeta(data)))
expect_equal("NewData", setdiff(getMeta(new), getMeta(data)))
expect_equal("NewData", tail(names(new), 1))
expect_equal("NewData", tail(getMeta(new), 1))
expect_equal(getAnalytes(new), getAnalytes(data))
expect_true(is_intact_attr(new))
expect_equal(names(attributes(new)), names(attributes(data))) # atts order preserved
})
test_that("`left_join()` method doesn't fix rownames if there aren't any", {
x <- data.frame(id = LETTERS[1:3], a = rnorm(3)) |> addClass("soma_adat")
y <- data.frame(id = LETTERS[1:3], b = rnorm(3))
df <- left_join(x, y, by = "id")
expect_false(has_rn(df))
# create non-intersecting IDs for full_join()
y <- data.frame(id = LETTERS[3:5], b = rnorm(3))
df <- full_join(x, y, by = "id")
expect_false(has_rn(df))
})
# anti-join ----
test_that("`anti_join()` method generates expected output", {
x <- data.frame(id = LETTERS[1:3], a = rnorm(3), row.names = letters[1:3]) |>
addClass("soma_adat")
y <- data.frame(id = LETTERS[2:4], b = rnorm(3))
df <- anti_join(x, y, by = "id")
expect_true(is.soma_adat(df))
expect_s3_class(df, "soma_adat")
expect_equal(rownames(df), "a")
expect_equal(class(df), class(x))
})
# slice ----
test_that("`slice()` method is correctly dispatched", {
new <- slice(data, 1:3)
expect_true(is.soma_adat(new))
expect_s3_class(new, "soma_adat")
expect_equal(class(new), class(data))
expect_equal(dim(new), c(3L, ncol(data)))
expect_equal(rownames(new), c("12345_1", "12346_2", "12347_3"))
# atts order preserved
expect_equal(names(attributes(new)), names(attributes(data)))
# check for duplicate rownames
new <- slice(data, c(2, 2, 2)) # same row 3x
expect_s3_class(new, "soma_adat")
expect_equal(class(new), class(data))
expect_equal(dim(new), c(3L, ncol(data)))
expect_equal(rownames(new), c("12346_2", "12346_2-1", "12346_2-2"))
})
# slice_sample ----
test_that("`slice_sample()` method is correctly dispatched", {
n <- 4
new <- withr::with_seed(101, slice_sample(data, n = n))
expect_true(is.soma_adat(new))
expect_s3_class(new, "soma_adat")
expect_equal(class(new), class(data))
expect_equal(dim(new), c(n, ncol(data)))
expect_equal(rownames(new), c("12345_1", "12350_3", "12346_2", "12347_3"))
# atts order preserved
expect_equal(names(attributes(new)), names(attributes(data)))
})
# sample_frac ----
test_that("`sample_frac()` method is correctly dispatched", {
new <- withr::with_seed(101, sample_frac(data, replace = TRUE))
rownames(new)
expect_s3_class(new, "soma_adat")
expect_equal(class(new), class(data))
expect_equal(dim(new), dim(data))
expect_equal(
rownames(new),
c("12345_1", "12345_1-1", "12350_3", "12345_1-2", "12346_2", "12349_2")
)
# atts order preserved
expect_equal(names(attributes(new)), names(attributes(data)))
})
# sample_n ----
test_that("`sample_n()` method is correctly dispatched", {
n <- 4
new <- withr::with_seed(101, sample_n(data, size = n))
expect_s3_class(new, "soma_adat")
expect_equal(class(new), class(data))
expect_equal(dim(new), c(n, ncol(data)))
expect_equal(rownames(new), c("12345_1", "12350_3", "12346_2", "12347_3"))
# atts order preserved
expect_equal(names(attributes(new)), names(attributes(data)))
})
# group_by & ungroup ----
test_that("`group_by()` and `ungroup()` methods generates expected output", {
df <- dplyr::group_by(data, SampleGroup)
expect_true(is.soma_adat(df))
expect_s3_class(df, "soma_adat")
expect_s3_class(df, "grouped_df")
expect_true(is_intact_attr(df))
expect_equal(rownames(df), rownames(data))
un <- ungroup(df)
expect_true(is_intact_attr(un))
expect_s3_class(un, "soma_adat")
expect_equal(rownames(un), rownames(df))
})
test_that("`grouped_df` objects handled by `nextMethod()` correctly for verbs", {
# filter
df <- dplyr::group_by(data, SampleGroup) |>
dplyr::filter(dplyr::row_number() == 1L)
expect_true(is.soma_adat(df))
expect_s3_class(df, "soma_adat")
expect_s3_class(df, "grouped_df")
expect_true(is_intact_attr(df))
expect_equal(rownames(df), c("12345_1", "12346_2"))
# mutate
df <- dplyr::group_by(data, SampleGroup) |>
dplyr::mutate(foo = "bar")
expect_true(is.soma_adat(df))
expect_s3_class(df, "soma_adat")
expect_s3_class(df, "grouped_df")
expect_true(is_intact_attr(df))
expect_equal(rownames(df), rownames(data))
# select
df <- dplyr::group_by(data, SampleGroup) |>
dplyr::select(-7L)
expect_true(is.soma_adat(df))
expect_s3_class(df, "soma_adat")
expect_s3_class(df, "grouped_df")
expect_true(is_intact_attr(df))
expect_equal(rownames(df), rownames(data))
# arrange
df <- dplyr::group_by(data, SampleGroup) |>
dplyr::arrange(SampleId)
expect_true(is.soma_adat(df))
expect_s3_class(df, "soma_adat")
expect_s3_class(df, "grouped_df")
expect_true(is_intact_attr(df))
expect_equal(rownames(df), rownames(data))
# rename
df <- dplyr::group_by(data, SampleGroup) |>
dplyr::rename(ID = SampleId)
expect_true(is.soma_adat(df))
expect_s3_class(df, "soma_adat")
expect_s3_class(df, "grouped_df")
expect_true(is_intact_attr(df))
expect_equal(rownames(df), rownames(data))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.