Nothing
context("Consistency of the results of 'snpClust' across various input formats")
# check function kept for possible future usage
check_snpStat_data <- function() {
sf <- system.file("data/ld.example.RData", package="snpStats")
expected <- "497fcd532b5c2bcb082a0dad7ca0d44d"
if (!(tools::md5sum(sf) == expected)) {
skip("Different version of data('ld.example', package = 'snpStats')")
}
}
test_that("'snpClust' gives identical results regardless of data input format", {
skip_if_not_installed("snpStats")
check_snpStat_data()
data("ld.example", package = "snpStats")
h <- 100
ld.ceph <- snpStats::ld(ceph.1mb, depth = h, stats = "R.squared")
p <- ncol(ceph.1mb)
nSamples <- nrow(ceph.1mb)
h <- 100
ceph.1mb[4,286]@.Data[1,1] <- as.raw(3) ## to avoid NaNs
# case0: Input belongs to class Matrix::dgCMatrix generated by snpStats::ld function
# should throw error because input is not symmetric
ld.ceph <- snpStats::ld(ceph.1mb, depth = h, stats = "R.squared")
expect_false(isSymmetric(ld.ceph))
expect_warning(expect_error(snpClust(ld.ceph, h = 100)),
"Forcing the LD similarity to be smaller than or equal to 1")
# case1: Input belongs to class Matrix::dsCMatrix generated by snpStats::ld function
# with 'symmetric=TRUE'
## diagonal elements are 0
ld.ceph <- snpStats::ld(ceph.1mb, depth = h, stats = "R.squared", symmetric = TRUE)
# ld.ceph <- round(ld.ceph, digits = 10)
expect_identical(unname(diag(ld.ceph)), rep(0, p))
ld.ceph[ld.ceph > 1] <- 1
expect_message(snpClust(ld.ceph, h = 100),
"Note: forcing the diagonal of the LD similarity matrix to be 1",
all = FALSE)
fit1 <- snpClust(ld.ceph, h = 100)
# LD values less than 0 or larger than 1
ld1 <- ld.ceph
ld1[1,2] <- 1.1
expect_warning(snpClust(ld1, h = 100))
ld1[1,2] <- -0.1
ld1[2,1] <- -0.1
expect_warning(snpClust(ld1, h = 100))
rm(ld1)
#case2: Input belongs to class snpStats::SnpMatrix
expect_warning(fit2 <- snpClust(ceph.1mb, h = 100, stats = "R.squared"),
"Forcing the LD similarity to be smaller than or equal to 1")
expect_equal(fit2$merge, fit1$merge)
expect_equal(fit2$height, fit1$height)
expect_error(snpClust(ceph.1mb, h = ncol(ceph.1mb), stats = "R.squared"),
"h should be strictly less than p")
#case3: Input belongs class base::matrix
ceph.1mb <- as.matrix(ceph.1mb)
fit3 <- expect_warning(snpClust(ceph.1mb, h = 100, stats = "R.squared"),
"Forcing the LD similarity to be smaller than or equal to 1")
expect_equal(fit3$merge, fit1$merge)
expect_equal(fit3$height, fit1$height)
# increase test coverage
ceph.1mb_nonames <- as.matrix(ceph.1mb)
colnames(ceph.1mb_nonames) <- NULL
rownames(ceph.1mb_nonames) <- NULL
expect_warning(snpClust(ceph.1mb_nonames, h = 100, stats = "R.squared"),
"Forcing the LD similarity to be smaller than or equal to 1")
#case4: default h
ld.ceph.2 <- snpStats::ld(ceph.1mb, depth = ncol(ceph.1mb) - 1, stats = "R.squared", symmetric = TRUE)
fit4 <- suppressWarnings({ snpClust(ld.ceph.2, ncol(ceph.1mb) - 1) })
fit5 <- suppressWarnings({ snpClust(ld.ceph.2) })
fit6 <- expect_warning(snpClust(ceph.1mb, stats = "R.squared"),
"Forcing the LD similarity to be smaller than or equal to 1")
expect_equal(fit4$merge, fit5$merge)
expect_equal(fit4$height, fit5$height)
expect_equal(fit4$merge, fit6$merge) ## identical heights but different merges
expect_equal(fit4$height, fit6$height)
# test that hicClust methods returns expected 'calls'
expect_identical(as.list(fit1$call)[[1]], as.symbol("snpClust"))
expect_identical(as.list(fit2$call)[[1]], as.symbol("snpClust"))
expect_identical(as.list(fit3$call)[[1]], as.symbol("snpClust"))
expect_identical(as.list(fit4$call)[[1]], as.symbol("snpClust"))
})
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.