Nothing
test_that("ReduceTrees() handles invalid input", {
library("TreeTools", quietly = TRUE)
expect_error(ReduceTrees("STRING", as.phylo(1, 4)), "must be a `phylo`")
expect_error(ReduceTrees(as.phylo(1, 4), logical(2)), "must be a `phylo`")
expect_error(ReduceTrees(as.phylo(1, 4), as.phylo(1, 5)), "same leaf labels")
expect_error(ReduceTrees(BalancedTree(5), StarTree(5)), "binary")
expect_null(reduce_trees(BalancedTree(3)$edge,
PectinateTree(3)$edge, letters[1:3])[[1]])
})
test_that("ReduceTrees()", {
bal9 <- TreeTools::BalancedTree(9)
pec9 <- TreeTools::PectinateTree(9)
expect_null(ReduceTrees(bal9, bal9))
if (interactive()) {
par(mai = rep(0.1, 4), mfrow = c(2, 2))
plot(RootTree(bal9, 1)); nodelabels()
plot(RootTree(pec9, 1)); nodelabels()
}
confl <- ReduceTrees(bal9, pec9)
expect_true(
all.equal(confl[[1]],
ape::read.tree(text = "(t1, ((t4, t5), ((t6, t7), t9)));")))
expect_true(all.equal(confl[[2]], DropTip(pec9, c(2, 3, 8))))
pec9b <- RenumberTips(TreeTools::PectinateTree(paste0('t', c(2:9, 1))),
pec9)
pecred <- ReduceTrees(pec9b, pec9)
expect_true(all.equal(pecred[[2]], PectinateTree(5)))
expect_true(all.equal(pecred[[1]], PectinateTree(paste0('t', c(1, 5:2)))))
long1 <- ape::read.tree(
text = "(a, (b, (c, (d, (e, (f, ((g, (X, Y)), (h, (i, j)))))))));")
long2 <- ape::read.tree(
text = "(b, (c, (d, (e, (f, (g, ((h, (X, Y)), (i, (j, a)))))))));")
longRed <- ReduceTrees(long1, long2)
expect_true(all.equal(longRed[[1]],
DropTip(long1, c("b", "c", "X"))))
expect_true(all.equal(longRed[[2]],
RootTree(DropTip(long2, c("b", "c", "X")), "a")))
long1 <- ape::read.tree(
text = "(r, (oo, (t, (a, (b, (c, (d, (e, (f, ((g, (X, Y)), (h, (i, j))))))))))));")
long2 <- ape::read.tree(
text = "(r, (oo, (t, (b, (c, (d, (e, (f, (g, ((h, (X, Y)), (i, (j, a))))))))))));")
longRed <- ReduceTrees(long1, long2)
expect_true(all.equal(longRed[[1]],
DropTip(long1, c("t", "oo", "b", "c", "X"))))
expect_true(all.equal(longRed[[2]],
DropTip(long2, c("t", "oo", "b", "c", "X"))))
tree1 <- ape::read.tree(
text = "(t3, ((t21, t17), (t4, (((((t9, t22), t25), t23), t24), t20))));")
tree2 <- ape::read.tree(
text = "(t3, ((t17, t21), (t4, (((((t9, t25), t23), t22), t24), t20))));")
expect_true(all.equal(ReduceTrees(tree1, tree2)[[1]],
DropTip(tree1, c("t4", "t17", "t21", "t20", "t24"))))
# Lift root AND reduce chain to new root base
keptRoot1 <- ape::read.tree(text = "((a,(b,((((c,(d,(((e,(((f,((g,(h,((((((i,j),k),l),m),n),o))),p)),q),r)),s),t))),u),v),x))),root);")
keptRoot2 <- ape::read.tree(text = "((a,(b,(((c,(d,(((e,(((f,((g,(h,(((((((x,i),j),k),l),m),n),o))),p)),q),r)),s),t))),u),v))),root);")
tree1 <- RenumberTips(keptRoot1, c("root", letters))
tree2 <- keptRoot2
expect_equal(c("root", "x", "a", "b") %in% TipLabels(ReduceTrees(tree1, tree2)),
c(TRUE, TRUE, FALSE, FALSE))
})
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.