tests/testthat/test-RogueTaxa.R

library("TreeTools", warn.conflicts = FALSE, quietly = TRUE)

test_that("RogueTaxa() handles bad input", {
  sameNamed <- BalancedTree(c(letters[c(1:5, 5, 6:7)]))
  bal8 <- BalancedTree(8)
  expect_error(RogueTaxa(c(sameNamed, sameNamed)))

  expect_error(RogueTaxa(c(bal8, BalancedTree(9), PectinateTree(8))))
  expect_error(RogueTaxa(c(bal8, PectinateTree(1:8))))

  expect_equal(RogueTaxa(c(bal8, bal8)), RogueTaxa(bal8))
})

test_that("Rogues found", {
  trees <- AddTipEverywhere(BalancedTree(8), "Rogue")
  if (!inherits(trees, "multiPhylo")) {
    if (inherits(trees, "phylo")) return (NA)
    trees <- structure(trees, class = "multiPhylo")
  }

  expect_equal("Rogue", RogueTaxa(trees[2:13], info = "rbic", dropsetSize = 1L,
                                  labelPenalty = 0,
                                  verbose = FALSE)[2, "taxon"])
  expect_equal("Rogue", RogueTaxa(trees, info = "rbic", labelPenalty = 0,
                                  verbose = FALSE)[2, "taxon"])


  trees <- lapply(trees, AddTip, "Rogue", "Rogue2")

  # Interesting aside: Majority rule consensus favours balanced splits!
  bc <- RogueTaxa(trees, info = "rbic",
                  labelPenalty = 0, verbose = FALSE)
  expect_equal(1, nrow(bc))

  bc <- RogueTaxa(trees[-11], info = "rb",
                  labelPenalty = 0, verbose = FALSE, dropset = 2)
  expect_equal(2, nrow(bc)) # Row 1 contains a 2-taxon dropset.

  trees <- read.tree(system.file("example/150.bs", package = "Rogue"))[1:50]
  expect_lt(1, nrow(RogueTaxa(trees, info = "R", mreOptimization = TRUE)))
  expect_lt(1, nrow(RogueTaxa(trees, info = "rBi", threshold = 100)))
})

test_that("Wilkinson & Crotti's examples are satisfied", {
  scaffold <- BalancedTree(c(6:4, 1:3))
  fig2 <- list(AddTip(scaffold, "3", "X"),
               AddTip(scaffold, "4", "X"))
  trees <- fig2
  expect_equal("X", RogueTaxa(fig2, info = "rbic", verbose = FALSE)[2, "taxon"])
  expect_equal("X", RogueTaxa(fig2)[2, "taxon"])

  fig2b <- fig2[rep(1:2, c(67, 33))]
  expect_equal(1, nrow(RogueTaxa(fig2b, info = "rbic",
                                 labelPenalty = 0, verbose = FALSE)))
  expect_equal(1, nrow(RogueTaxa(fig2b)))

  fig3 <- lapply(list(AddTip(scaffold, "1", "X"),
                      AddTip(scaffold, "6", "X")), AddTip, "X", "Y")

  trees <- fig3
  expect_equal(1, nrow(RogueTaxa(fig3, info = "rbic", verbose = FALSE)))
  expect_equal(1, nrow(RogueTaxa(fig3)))

  fig3b <- fig3[rep(1:2, c(60, 40))]
  expect_equal(1, nrow(RogueTaxa(fig3b, info = "rbic", verbose = FALSE)))
  expect_equal(1, nrow(RogueTaxa(fig3b)))
})

Try the Rogue package in your browser

Any scripts or data that you put into this service are public.

Rogue documentation built on April 1, 2023, 12:14 a.m.