Nothing
context("eigen decomposition of kinship matrix")
test_that("eigen decomposition works", {
iron <- read_cross2(system.file("extdata", "iron.zip", package="qtl2"))
iron <- iron[1:30, c(1,3,5)]
map <- insert_pseudomarkers(iron$gmap, step=1)
probs <- calc_genoprob(iron, map, error_prob=0.002) # <- use just 3 chromosomes, for speed
K <- calc_kinship(probs)
Ke <- decomp_kinship(K)
expected <- eigen(K)
expect_equal(sort(Ke$values), sort(expected$values))
expect_equivalent(K, t(Ke$vectors) %*% diag(Ke$values) %*% Ke$vectors)
# run it through again and get same answer
Ke2 <- decomp_kinship(Ke)
expect_equal(Ke2, Ke)
# list of matrices
K <- calc_kinship(probs, "loco")
Ke <- decomp_kinship(K)
for(i in seq(along=K)) {
expected <- eigen(K[[i]])
expect_equal(sort(Ke[[i]]$values), sort(expected$values))
expect_equivalent(K[[i]], t(Ke[[i]]$vectors) %*% diag(Ke[[i]]$values) %*% Ke[[i]]$vectors)
}
# run it through again and get same answer
Ke2 <- decomp_kinship(Ke)
expect_equal(Ke2, Ke)
# make sure it gives an error input has 0 rows and 0 cols
expect_error(decomp_kinship(K[[1]][numeric(0),numeric(0),drop=FALSE]))
# make sure it gives an error input isn't square
expect_error(decomp_kinship(K[[1]][1:5,1:4]))
# make sure it gives an error input isn't a matrix
expect_error(decomp_kinship(K[[1]][5,5]))
})
test_that("multi-core eigen decomposition works", {
skip_if(isnt_karl(), "this test only run locally")
iron <- read_cross2(system.file("extdata", "iron.zip", package="qtl2"))
map <- insert_pseudomarkers(iron$gmap, step=1)
probs <- calc_genoprob(iron, map, error_prob=0.002)
K <- calc_kinship(probs, "loco", cores=2)
Ke <- decomp_kinship(K)
Ke_multicore <- decomp_kinship(K, cores=2)
expect_equal(Ke_multicore, Ke)
K <- calc_kinship(probs, "chr", cores=2)
Ke <- decomp_kinship(K)
Ke_multicore <- decomp_kinship(K, cores=2)
expect_equal(Ke_multicore, Ke)
})
test_that("eigen decomposition gives error with non-square matrix", {
k <- matrix(runif(100), ncol=5)
expect_error(decomp_eigen(k))
k <- list(k, matrix(runif(100), ncol=20))
expect_error(decomp_eigen(k))
})
test_that("eigen decomposition works with scan1", {
iron <- read_cross2(system.file("extdata", "iron.zip", package="qtl2"))
iron <- iron[1:50, c(1,3,5)]
map <- insert_pseudomarkers(iron$gmap, step=1)
probs <- calc_genoprob(iron[,c(1,3,5)], map, error_prob=0.002) # <- use just 3 chromosomes, for speed
K <- calc_kinship(probs)
Ke <- decomp_kinship(K)
out <- scan1(probs, iron$pheno, K)
expect_equal(scan1(probs, iron$pheno, Ke), out)
K_loco <- calc_kinship(probs, "loco")
Ke_loco <- decomp_kinship(K_loco)
out_loco <- scan1(probs, iron$pheno, K_loco)
expect_equal(scan1(probs, iron$pheno, Ke_loco), out_loco)
})
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.