PATH_TO_DATA <- system.file("extdata", "pbmc_raw.txt", package = "Seurat")
TOLERANCE = 1.0e-4
setup_test_data <- function(cluster_resolution) {
counts <- as.sparse(
as.matrix(read.table(PATH_TO_DATA, sep = "\t", row.names = 1))
)
test.data <- CreateSeuratObject(counts)
test.data <- NormalizeData(test.data)
test.data <- FindVariableFeatures(test.data)
test.data <- ScaleData(test.data)
test.data <- RunPCA(test.data, npcs = 20)
test.data <- FindNeighbors(test.data, dims = 1:20)
test.data <- FindClusters(test.data, resolution = cluster_resolution)
return(test.data)
}
context("BuildClusterTree")
test_that("BuildClusterTree works as expected", {
skip_if_not_installed("ape")
# TODO: this test doesn't really check that the phylogenic trees being
# generated are biologically valid but that would be more useful
# for testing purposes we'll over-cluster our dataset to introduce
# some structure into the resulting phylogeny
test_case <- setup_test_data(cluster_resolution = 5)
result <- BuildClusterTree(test_case, slot = "counts")
tree <- Tool(result, slot = "BuildClusterTree")
# check that the tree contains the expected number of leaf nodes
expect_equal(length(tree$tip.label), 6)
# check that the tree contains the expected number of edges
expect_equal(length(tree$edge), 20)
# spot check a few edge lengths
expect_equal(tree$edge.length[[1]], 1127.60199, tolerance = TOLERANCE)
expect_equal(tree$edge.length[[5]], 182.42944, tolerance = TOLERANCE)
expect_equal(tree$edge.length[[10]], 59.24525, tolerance = TOLERANCE)
result <- BuildClusterTree(test_case, slot = "data")
tree <- Tool(result, slot = "BuildClusterTree")
# check that the tree contains the expected number of leaf nodes
expect_equal(length(tree$tip.label), 6)
# check that the tree contains the expected number of edges
expect_equal(length(tree$edge), 20)
# spot check a few edge lengths
expect_equal(tree$edge.length[[1]], 1206.4312, tolerance = TOLERANCE)
expect_equal(tree$edge.length[[5]], 657.0097, tolerance = TOLERANCE)
expect_equal(tree$edge.length[[10]], 982.9843, tolerance = TOLERANCE)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.