tests/testthat/test_dimensional_reduction.R

context("test-dimensional_reduction")

test_that("different ways of passing distance matrix", {
  # Generate dummy data exp matrix
  set.seed(1)
  dummyexpMat <- matrix(data = sample(x = c(1:50), size = 1e4, replace = TRUE), 
                        ncol = 100, nrow = 100)
  colnames(dummyexpMat) <- paste0("cell", seq(ncol(dummyexpMat)))
  row.names(dummyexpMat) <- paste0("gene", seq(nrow(dummyexpMat)))
  
  # Create Seurat object for testing
  obj <- CreateSeuratObject(counts = dummyexpMat)
  
  # Manually make a distance object to test
  distMat <- dist(t(dummyexpMat))
  
  expect_equivalent(RunTSNE(obj, distance.matrix = distMat),
                    RunTSNE(obj, distance.matrix = as.matrix(distMat)))
  expect_equivalent(RunTSNE(obj, distance.matrix = distMat)@reductions$tsne,
                    RunTSNE(distMat, assay = "RNA"))
  expect_equivalent(RunTSNE(obj, distance.matrix = distMat)@reductions$tsne,
                    RunTSNE(as.matrix(distMat), assay = "RNA", is_distance = TRUE))
})

test_that("pca returns total variance (see #982)", {
  # Generate dummy data exp matrix
  set.seed(seed = 1)
  dummyexpMat <- matrix(data = sample(x = c(1:50), size = 1e4, replace = TRUE),
                        ncol = 100, nrow = 100)
  colnames(x = dummyexpMat) <- paste0("cell", seq(ncol(x = dummyexpMat)))
  row.names(x = dummyexpMat) <- paste0("gene", seq(nrow(x = dummyexpMat)))

  # Create Seurat object for testing
  obj <- CreateSeuratObject(counts = dummyexpMat)

  # Scale and compute PCA, using RunPCA
  obj <- ScaleData(object = obj, verbose = FALSE)
  pca_result <- suppressWarnings(expr = RunPCA(object = obj, features = rownames(x = obj), verbose = FALSE))

  # Using stats::prcomp
  scaled_data <- Seurat::GetAssayData(object = obj, slot = "scale.data")
  prcomp_result <- stats::prcomp(scaled_data, center = FALSE, scale. = FALSE)

  # Compare
  expect_equivalent(slot(object = pca_result[["pca"]], name = "misc")$total.variance,
                    sum(prcomp_result$sdev^2))

})
gcday/seurat_fresh documentation built on June 23, 2019, 12:02 a.m.