Nothing
# test
# Lin not centred
test_that("rppca on Linv", {
expect_no_condition(
pc <- rppca(pedLInv)
)
expect_warning(summary(pc))
expect_false(pc$center)
expect_false(pc$scale)
expect_null(pc$varProps)
})
# Lin not centred
test_that("rppca on Linv with totVar", {
expect_no_condition(
pc <- rppca(pedLInv, totVar = 3521.534)
)
expect_no_condition(summary(pc))
expect_true(dim(summary(pc)$importance)[1] == 3) # three rows
expect_false(pc$center)
expect_false(pc$scale)
expect_true(!is.null(pc$varProps))
})
# Linv centred
test_that("rppca on Linv centred", {
expect_no_condition(
pc <- rppca(pedLInv, center=T)
)
expect_warning(summary(pc))
expect_true(pc$center)
expect_false(pc$scale)
expect_null(pc$varProps)
})
# Linv centred
test_that("rppca on Linv centred with totVar", {
expect_no_condition(
pc <- rppca(pedLInv, center=T, totVar=2694.038)
)
expect_no_condition(summary(pc))
expect_true(dim(summary(pc)$importance)[1] == 3) # three rows
expect_true(pc$center)
expect_false(pc$scale)
expect_true(!is.null(pc$varProps))
})
test_that("rppca on pedigree", {
ped <- pedigree(sire = pedMeta$fid,
dam = pedMeta$mid,
label = pedMeta$id)
expect_no_error(pc2 <- rppca(ped))
expect_no_condition(summary(pc2))
expect_true(dim(summary(pc2)$importance)[1] == 3) # three rows
expect_false(pc2$center)
expect_false(pc2$scale)
expect_true(!is.null(pc2$varProps))
})
test_that("rppca on pedigree with (redundant) totVar", {
ped <- pedigree(sire = pedMeta$fid,
dam = pedMeta$mid,
label = pedMeta$id)
expect_warning(pc2 <- rppca(ped, center=F, totVar=123))
expect_true(dim(summary(pc2)$importance)[1] == 3) # three rows
expect_no_condition(summary(pc2))
expect_false(pc2$center)
expect_false(pc2$scale)
expect_true(!is.null(pc2$varProps))
})
test_that("rppca on pedigree, centred", {
ped <- pedigree(sire = pedMeta$fid,
dam = pedMeta$mid,
label = pedMeta$id)
expect_no_error(pc2 <- rppca(ped, center=T))
expect_no_condition(summary(pc2)) # total variance known
expect_true(pc2$center)
expect_false(pc2$scale)
expect_true(!is.null(pc2$varProps))
})
test_that("rppca on pedigree, centered with totVar", {
ped <- pedigree(sire = pedMeta$fid,
dam = pedMeta$mid,
label = pedMeta$id)
expect_no_condition(pc2 <- rppca(ped, center=T, totVar=2694.038)) # this annoyingly throws a warning with an unhelpful suggestion
expect_no_condition(summary(pc2))
expect_true(dim(summary(pc2)$importance)[1] == 3) # three rows
expect_true(pc2$center)
expect_false(pc2$scale)
expect_true(!is.null(pc2$varProps))
})
# test_that("Comparing STD values between rppca on pedigree and L^-1 input. May occasionally fail due to stochasticity.", {
# expect_no_condition(
# pc <- rppca(pedLInv)
# )
#
# ped <- pedigree(sire = pedMeta$fid,
# dam = pedMeta$mid,
# label = pedMeta$id)
# expect_no_error(pc2 <- rppca(ped))
# expect_true(all(pc$sdev[1:2] - pc2$sdev[1:2] < 1e-10))
# })
# variance estimates
test_that("Comparing Hutch++ estimate to inbreeding-based vals", {
ped <- pedigree(sire = pedMeta$fid,
dam = pedMeta$mid,
label = pedMeta$id)
tv <- sum(inbreeding(ped) + 1)
expect_true(abs(log10(tv/hutchpp(pedLInv, num_queries=100))) < 0.02)
})
test_that("Comparing Hutch++ estimate to inbreeding-based vals (with centring)", {
ped <- pedigree(sire = pedMeta$fid,
dam = pedMeta$mid,
label = pedMeta$id)
ll <- getL(ped)
llc <- apply(ll, 1, function(x) x - mean(x))
a <- llc %*% t(llc)
tv <- sum(diag(a))
expect_true(abs(log10(tv/hutchpp(pedLInv, num_queries=100, center=T))) < 0.02)
})
test_that("There is a warning if Hutch++ is used with centring but rppca without and vice versa", {
ped <- pedigree(sire = pedMeta$fid,
dam = pedMeta$mid,
label = pedMeta$id)
li <- sparse2spam(getLInv(ped))
tv <- hutchpp(li, center=T)
expect_warning(rppca(li, center=F, totVar = tv))
expect_no_condition(rppca(li, center=T, totVar = tv))
tvnc <- hutchpp(li, center=F)
expect_warning(rppca(li, center=T, totVar = tvnc))
expect_no_condition(rppca(li, center=F, totVar = tvnc))
})
test_that("There is a warning if Hutch++ is used with centring but rppca without and vice versa", {
ped <- pedigree(sire = pedMeta$fid,
dam = pedMeta$mid,
label = pedMeta$id)
li <- sparse2spam(getLInv(ped))
tv <- hutchpp(li, center=T)
# two warnings (1) one about supplying totVar even though it's computed
# (2) is about mismatch of center arguments
expect_warning(expect_warning(rppca(ped, center=F, totVar = tv)))
expect_no_condition(rppca(ped, center=T, totVar = tv))
tvnc <- hutchpp(li, center=F)
expect_warning(rppca(ped, center=T, totVar = tvnc))
expect_warning(rppca(ped, center=F, totVar = tvnc)) # a warning about supplying tv even though it's computed by default
})
# Subsampling -------------------------------------------------------------
test_that("Sub-sampling", {
pc <- rppca(pedLInv)
expect_error(dspc(1)) # error, input must inherit 'rppca'
# default val of 'to' is 10k, greateer then number of individuals, no downsampling and no message
expect_no_condition(pcd <- dspc(pc))
expect_warning(pcd <- dspc(pcd)) # warning about overwriting existing index
expect_message(dspc(pc, c(T, F))) # message about to which number of individuals we downsampled
expect_message(dspc(pc, c(1,3))) # same here
# though 100000 is greater than the number of individuals in this PCA
# there is no error/warning. This is handled by R. To high index results in NA.
expect_message(dspc(pc, c(1,3, 100000)))
})
# Plotting ----------------------------------------------------------------
test_that("Plotting",{
pcNoV <- rppca(pedLInv, center=T)
pc <- rppca(pedLInv, center=T, totVar=2694.038)
# length of 'col' is different from number of individuals in the PCA
expect_warning(plot(pc, col=c("yellow", "green"), to = 0.5)) # warning that colour vector length does not match individual number
expect_no_condition(plot(pc))
expect_no_condition(plot(pcNoV))
expect_no_condition(plot(pc, col=2))
expect_no_condition(plot(pcNoV, col=2))
expect_no_condition(plot(pc, col="grey"))
expect_no_condition(plot(pcNoV, col="grey"))
expect_message(plot(pc, col=as.numeric(factor(pedMeta$population)))) # message that colours are downsampled
expect_message(plot(pcNoV, col=as.numeric(factor(pedMeta$population)))) # message that colours are downsampled
})
test_that("Plot3D",{
pcNoV <- rppca(pedLInv, center=T)
pc <- rppca(pedLInv, center=T, totVar=2694.038)
# length of 'col' is different from number of individuals in the PCA
expect_no_condition(plot3D(pc, col=c("yellow", "green")))
expect_no_condition(plot3D(pcNoV, col=c("yellow", "green")))
expect_no_condition(plot3D(pc, col=2))
expect_no_condition(plot3D(pcNoV, col=2))
expect_no_condition(plot3D(pc, col="grey"))
expect_no_condition(plot3D(pcNoV, col="grey"))
expect_no_condition(plot3D(pc, col=as.numeric(factor(pedMeta$population))))
expect_no_condition(plot3D(pcNoV, col=as.numeric(factor(pedMeta$population))))
})
test_that("Axis labels",{
pcNoV <- rppca(pedLInv, center=T)
pc <- rppca(pedLInv, center=T, totVar=2694.038)
expect_warning(plot(pc, col=c("yellow", "green"), to = 0.5, xlab="123", ylab="456")) # warning that colour vector length does not match individual number
expect_no_condition(plot(pc, xlab="123", ylab="456"))
expect_no_condition(plot(pcNoV, xlab="123", ylab="456"))
expect_no_condition(plot(pc, col=2, xlab="123", ylab="456"))
expect_no_condition(plot(pcNoV, col=2, xlab="123", ylab="456"))
expect_no_condition(plot(pc, col="grey", xlab="123", ylab="456"))
expect_no_condition(plot(pcNoV, col="grey", xlab="123", ylab="456"))
expect_message(plot(pc, col=as.numeric(factor(pedMeta$population)), xlab="123", ylab="456")) # message that colours are downsampled
expect_message(plot(pcNoV, col=as.numeric(factor(pedMeta$population)), xlab="123", ylab="456")) # message that colours are downsampled
})
test_that("Axis labels 3D",{
pcNoV <- rppca(pedLInv, center=T)
pc <- rppca(pedLInv, center=T, totVar=2694.038)
expect_no_condition(plot3D(pc, col=c("yellow", "green"), xlab="123", ylab="456")) # warning that colour vector length does not match individual number
expect_no_condition(plot3D(pc, xlab="123", ylab="456"))
expect_no_condition(plot3D(pcNoV, xlab="123", ylab="456"))
expect_no_condition(plot3D(pc, col=2, xlab="123", ylab="456"))
expect_no_condition(plot3D(pcNoV, col=2, xlab="123", ylab="456"))
expect_no_condition(plot3D(pc, col="grey", xlab="123", ylab="456"))
expect_no_condition(plot3D(pcNoV, col="grey", xlab="123", ylab="456"))
expect_no_condition(plot3D(pc, col=as.numeric(factor(pedMeta$population)), xlab="123", ylab="456"))
expect_no_condition(plot3D(pcNoV, col=as.numeric(factor(pedMeta$population)), xlab="123", ylab="456"))
})
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.