context("Poppr table tests")
data(Aeut, package = "poppr")
data(partial_clone, package = "poppr")
strata(Aeut) <- other(Aeut)$population_hierarchy[-1]
A.tab <- poppr(Aeut, quiet = TRUE)
afile <- system.file("files/rootrot.csv", package = "poppr")
sims <- system.file("files/simulated.dat", package = "poppr")
Aeut_comparison <- structure(list(Pop = c("Athena", "Mt. Vernon", "Total"),
N = c(97, 90, 187),
MLG = c(70, 50, 119),
eMLG = c(65.9808393377379, 50, 68.4525682280634),
SE = c(1.24567688244012, 0, 2.98857840353058),
H = c(4.06272002528149, 3.66843094399907, 4.55798828426928),
G = c(42.1928251121076, 28.7234042553191, 68.9723865877712),
lambda = c(0.976299287915825, 0.965185185185185, 0.985501444136235),
E.5 = c(0.721008688944842, 0.725926650260449, 0.720112175857993),
Hexp = c(0.169711892488954, 0.158016764758338, 0.365053352719387), #c(0.408951651286696, 0.33656220322887, 0.726202391505946),
Ia = c(2.90602921191748, 13.3024309367662, 14.3707995986407),
rbarD = c(0.0723700801886747, 0.281642324983496, 0.270617053778004),
File = rep("rootrot.csv", 3)),
.Names = c("Pop", "N", "MLG", "eMLG", "SE", "H", "G", "lambda", "E.5", "Hexp", "Ia", "rbarD", "File"),
row.names = c(NA, -3L),
class = c("popprtable", "data.frame"))
pc_comparison <- structure(list(Pop = c("1", "2", "3", "4", "Total"),
N = c(13, 13, 12, 12, 50),
MLG = c(10, 12, 11, 9, 26),
eMLG = c(9.46153846153846, 11.1538461538462, 11, 9, 9.93701353621932),
SE = c(0.498518515262143, 0.36080121229411, 0, 0, 1.12881059579593),
H = c(2.24503527412618, 2.45831132968308, 2.36938211969468, 2.09472904752765, 3.07152395656842),
G = c(8.89473684210526, 11.2666666666667, 10.2857142857143, 7.2, 17.8571428571429 ),
lambda = c(0.887573964497041, 0.911242603550296, 0.902777777777778,
0.861111111111111, 0.944),
E.5 = c(0.935312405238733, 0.960842907662783, 0.958200460752105, 0.870390481833875, 0.819311895784525),
Hexp = c(0.617846153846154, 0.614461538461539, 0.485144927536232, 0.505072463768116,
0.559212121212121), #c(0.849679487179487, 0.83629191321499, 0.714756944444444, 0.750347222222222, 0.78384),
Ia = c(2.1580763424628, 1.87492360969648, 1.15572679509632, 1.157153633392, 1.93513179817012),
rbarD = c(0.243225877705591, 0.212786561587854, 0.132460530412697, 0.13328661732193, 0.217470007471919),
File = rep("partial_clone.dat", 5)),
.Names = c("Pop", "N", "MLG", "eMLG", "SE", "H", "G", "lambda", "E.5", "Hexp", "Ia", "rbarD", "File"),
row.names = c(NA, -5L),
class = c("popprtable", "data.frame"))
p.tab <- poppr(partial_clone, quiet = TRUE)
test_that("poppr returns expected PA values", {
expect_that(A.tab$Pop, is_equivalent_to(Aeut_comparison$Pop))
expect_that(A.tab$N, equals(Aeut_comparison$N))
expect_that(A.tab$MLG, equals(Aeut_comparison$MLG))
expect_that(A.tab$eMLG, equals(Aeut_comparison$eMLG))
expect_that(A.tab$SE, equals(Aeut_comparison$SE))
expect_that(A.tab$H, equals(Aeut_comparison$H))
expect_that(A.tab$G, equals(Aeut_comparison$G))
expect_that(A.tab$lambda, equals(Aeut_comparison$lambda))
expect_that(A.tab$E.5, equals(Aeut_comparison$E.5))
expect_that(A.tab$Ia, equals(Aeut_comparison$Ia))
expect_that(A.tab$rbarD, equals(Aeut_comparison$rbarD))
})
test_that("poppr returns expected codominant values", {
expect_that(p.tab$Pop, is_equivalent_to(pc_comparison$Pop))
expect_that(p.tab$N, equals(pc_comparison$N))
expect_that(p.tab$MLG, equals(pc_comparison$MLG))
expect_that(p.tab$eMLG, equals(pc_comparison$eMLG))
expect_that(p.tab$SE, equals(pc_comparison$SE))
expect_that(p.tab$H, equals(pc_comparison$H))
expect_that(p.tab$G, equals(pc_comparison$G))
expect_that(p.tab$lambda, equals(pc_comparison$lambda))
expect_that(p.tab$E.5, equals(pc_comparison$E.5))
expect_that(p.tab$Ia, equals(pc_comparison$Ia))
expect_that(p.tab$rbarD, equals(pc_comparison$rbarD))
})
test_that("poppr perform clone correction", {
skip_on_cran()
res_na <- poppr(Aeut, clonecorrect = TRUE, strata = NA, quiet = TRUE)
res_p <- poppr(Aeut, clonecorrect = TRUE, strata = ~Pop, quiet = TRUE)
res_ps <- poppr(Aeut, clonecorrect = TRUE, strata = ~Pop/Subpop, quiet = TRUE)
res_ps2 <- poppr(Aeut, clonecorrect = TRUE, strata = ~Pop/Subpop, keep = 1:2,
quiet = TRUE)
res_naf <- poppr(afile, clonecorrect = TRUE, strata = ~Pop, quiet = TRUE)
res_mv <- poppr(Aeut, clonecorrect = TRUE, strata = ~Pop/Subpop,
quiet = TRUE, sublist = "Mt. Vernon")
expect_that(nrow(res_na), equals(nrow(Aeut_comparison)))
expect_that(nrow(res_p), equals(nrow(Aeut_comparison)))
expect_that(nrow(res_ps), equals(nrow(Aeut_comparison)))
expect_gt(nrow(res_ps2), nrow(Aeut_comparison))
expect_true(all(res_ps$N < Aeut_comparison$N))
expect_true(all(res_p$N < res_ps$N))
expect_true(all(res_na$N <= res_p$N))
expect_identical(res_ps2[-c(1, length(res_na))], res_naf[-c(1, length(res_naf))])
expect_true(all.equal(res_mv[, -c(4:5)], res_ps[2, -c(4:5)], check.attributes = FALSE))
})
test_that("poppr will correct missing values as mean for P/A markers", {
skip_on_cran()
a <- tab(Aeut)
a[117, 18] <- NA # this locus has a mean of 0.5, happily.
A <- df2genind(a, ind.names = indNames(Aeut),
pop = pop(Aeut), ploidy = 1,
type = "PA", sep = "/")
expect_warning(pm <- poppr(A, missing = "mean", quiet = TRUE, total = FALSE), "adegenet_2.0-0")
expect_lt(pm$rbarD[2], A.tab$rbarD[2]) # smaller ia value because of homogenization
expect_gt(pm$MLG[2], A.tab$MLG[2]) # more MLGs because of extra missing value
})
test_that("poppr skips over sample sizes less than three", {
skip_on_cran()
expect_warning(plt <- poppr(partial_clone[1:8], sample = 10, quiet = TRUE), "could not be plotted")
expect_is(plt, "popprtable")
expect_equivalent(signif(plt$Ia, 3), c(rep(NA, 4), 0.167))
expect_equivalent(signif(plt$rbarD, 3), c(rep(NA, 4), 0.0195))
expect_output(print(plt, digits = 2), "0.69")
expect_true(is.na(ia(partial_clone[1:2])[2]))
# Presence/absence case
a <- Aeut
pop(a) <- c("A", "A", as.character(pop(Aeut))[-(1:2)])
expect_true(is.na(poppr(a, sublist = "A")$rbarD[1]))
expect_true(is.na(ia(a[1:2])[2]))
})
test_that("poppr can produce output from input file", {
skip_on_cran()
expect_message(out <- poppr(afile, legend = TRUE, quiet = TRUE), "Simpson")
expect_message(outs <- poppr(sims, legend = TRUE, quiet = TRUE), "Simpson")
expect_is(out, "popprtable")
expect_is(outs, "popprtable")
})
test_that("poppr.all works on list of files", {
skip_on_cran()
expect_output(out <- poppr.all(list(afile, pc = partial_clone)), " | File: rootrot.csv")
})
test_that("poppr without sampling works on data without populations", {
skip_on_cran()
pop(partial_clone) <- NULL
out <- poppr(partial_clone, sample = 9, quiet = TRUE)
expect_is(out, "data.frame")
expect_equal(nrow(out), 1L)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.