# setup shared test fixtures
path_to_counts <- system.file("extdata", "pbmc_raw.txt", package = "Seurat")
build_test_data <- function(multi_layer = FALSE) {
counts <- read.table(path_to_counts, sep = "\t", row.names = 1)
counts <- as.sparse(as.matrix(counts))
if (multi_layer) {
barcodes <- colnames(counts)
counts.layer1 <- counts
colnames(counts.layer1) <- paste0(barcodes, "_layer1")
counts.layer2 <- counts
colnames(counts.layer1) <- paste0(barcodes, "_layer2")
counts_layers <- c(
counts.layer1 = counts.layer1,
counts.layer2 = counts.layer2
)
test_data <- CreateSeuratObject(counts_layers)
} else{
test_data <- CreateSeuratObject(counts)
}
test_data <- NormalizeData(test_data, verbose = FALSE)
test_data <- FindVariableFeatures(test_data, verbose = FALSE)
return (test_data)
}
context("SketchData")
test_that("SketchData defaults work", {
test_case <- build_test_data()
result <- suppressWarnings(
SketchData(
test_case,
assay = "RNA",
ncells = 50,
method = "LeverageScore",
sketched.assay = "sketch",
set.seed = 42
)
)
expect_equal(
dim(result[["sketch"]]),
c(230, 50)
)
expect_equal(
as.numeric(result$leverage.score[1]),
0.9036446,
tolerance = 1e-5
)
expect_equal(
colnames(result[["sketch"]])[1],
"ATGCCAGAACGACT"
)
result_2 <- suppressWarnings(
SketchData(
test_case,
assay = "RNA",
ncells = c("data" = 50),
method = "LeverageScore",
sketched.assay = "sketch"
)
)
expect_equal(
dim(result_2[["sketch"]]),
dim(result[["sketch"]])
)
expect_equal(
as.numeric(result_2$leverage.score[1]),
as.numeric(result$leverage.score[1]),
tolerance = 1e-6
)
expect_equal(
colnames(result_2[["sketch"]])[1],
colnames(result[["sketch"]])[1]
)
})
test_that("SketchData with multiple layers works", { # (and one is less than the number of cells in that layer)
test_case <- build_test_data(multi_layer = TRUE)
result <- suppressWarnings(
SketchData(
test_case,
assay = "RNA",
ncells = 80,
method = "LeverageScore",
sketched.assay = "sketch",
set.seed = 42
)
)
expect_equal(
dim(result[["sketch"]]$data.layer1),
c(230, 80)
)
expect_equal(
dim(result[["sketch"]]$data.layer2),
c(230, 80)
)
expect_equal(
as.numeric(result$leverage.score[1]),
0.9036446,
tolerance = 1e-6
)
expect_equal(
colnames(result[["sketch"]])[1],
"ATGCCAGAACGACT_layer2"
)
})
test_that("SketchData with a different number of cells per layer works", {
test_case <- build_test_data(multi_layer = TRUE)
result <- suppressWarnings(
SketchData(
test_case,
assay = "RNA",
ncells = c(50, 30),
method = "LeverageScore",
sketched.assay = "sketch",
set.seed = 42
)
)
expect_equal(
dim(result[["sketch"]]$data.layer1),
c(230, 50)
)
expect_equal(
dim(result[["sketch"]]$data.layer2),
c(230, 30)
)
expect_equal(
as.numeric(result$leverage.score[1]),
0.9036446,
tolerance = 1e-5
)
expect_equal(
colnames(result[["sketch"]])[1],
"ATGCCAGAACGACT_layer2"
)
result_2 <- suppressWarnings(
SketchData(
test_case,
assay = "RNA",
ncells = c("data.layer1" = 50, "data.layer2" = 30),
method = "LeverageScore",
sketched.assay = "sketch",
set.seed = 42
)
)
expect_equal(
dim(result_2[["sketch"]]$data.layer1),
dim(result[["sketch"]]$data.layer1)
)
expect_equal(
dim(result_2[["sketch"]]$data.layer2),
dim(result[["sketch"]]$data.layer2)
)
expect_equal(
as.numeric(result_2$leverage.score[1]),
as.numeric(result$leverage.score[1]),
tolerance = 1e-5
)
expect_equal(
colnames(result_2[["sketch"]])[1],
colnames(result[["sketch"]])[1]
)
})
test_that("SketchData with specified features works", {
test_case <- build_test_data()
result <- suppressWarnings(
SketchData(
test_case,
assay = "RNA",
ncells = 50,
method = "LeverageScore",
sketched.assay = "sketch",
features = VariableFeatures(test_case)[1:100]
)
)
expect_equal(
dim(result[["sketch"]]),
c(230, 50)
)
expect_equal(
as.numeric(result$leverage.score[1]),
0.7202897,
tolerance = 1e-6
)
expect_equal(
colnames(result[["sketch"]])[1],
"ATGCCAGAACGACT"
)
})
test_that("SketchData with specified features and multiple layers works", {
test_case <- build_test_data(multi_layer = TRUE)
result <- suppressWarnings(
SketchData(
test_case,
assay = "RNA",
ncells = c(50, 30),
method = "LeverageScore",
sketched.assay = "sketch",
features = VariableFeatures(test_case)[1:100],
set.seed = 42
)
)
expect_equal(
dim(result[["sketch"]]$data.layer1),
c(230, 50)
)
expect_equal(
dim(result[["sketch"]]$data.layer2),
c(230, 30)
)
expect_equal(
as.numeric(result$leverage.score[1]),
0.7202896,
tolerance = 1e-6
)
expect_equal(
colnames(result[["sketch"]])[1],
"ATGCCAGAACGACT_layer2"
)
})
test_that("SketchData when setting your own variable features and specifying features works", {
test_case <- build_test_data()
top_features <- VariableFeatures(test_case)[1:100]
VariableFeatures(test_case) <- top_features
result <- suppressWarnings(
SketchData(
test_case,
assay = "RNA",
ncells = 50,
method = "LeverageScore",
sketched.assay = "sketch",
features = top_features,
set.seed = 42
)
)
expect_equal(
dim(result[["sketch"]]),
c(230,50)
)
expect_equal(
as.numeric(result$leverage.score[1]),
0.7202896,
tolerance = 1e-6
)
expect_equal(
colnames(result[["sketch"]])[1],
"ATGCCAGAACGACT"
)
})
test_that("SketchData when setting your own variable features and not specifying features errors out", {
test_case <- build_test_data()
top_features <- VariableFeatures(test_case)[1:100]
VariableFeatures(test_case) <- top_features
expect_error(
suppressWarnings(
SketchData(
pbmc_new,
assay = "RNA",
ncells = 50,
method = "LeverageScore",
sketched.assay = "sketch"
)
)
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.