tests/testthat/test-fitch.R

library(ape)
library(inapplicable)


context("Tree search")
test_that("Profile score calculated correctly", {
  data(referenceTree)
  data(congreveLamsdellMatrices)
  tree <- referenceTree
  set.seed(0)
  dataset <- PrepareDataProfile(congreveLamsdellMatrices[[1]], 4e+04, warn=FALSE)
  score <- ProfileScore(tree, dataset)
  expect_true(abs(354.58 + score) < 9) # Range as concavity constants generated by approximation
})

test_that("Profile parsimony works in tree search", {
  sillyData <- lapply(1:22, function (i) c( rep(0, i - 1), rep(1, 22 - i), rep(1, 22 - i), rep(0, i - 1)))#, sample(2, 20, replace=TRUE)-1))
  names(sillyData) <- as.character(1:22)
  dataset <- PhyDat(sillyData, 0:1, warn=FALSE)
  readyData <- PrepareDataProfile(dataset, 12000)
  
  set.seed(0)
  rTree <- randomTree <- RandomTree(dataset, '1')
  expect_equal(FitchScore(rTree, readyData, TipsAreColumns), FitchScore(rTree, dataset, TipsAreNames))
  expect_equal(90, FitchScore(referenceTree, dataset, TipsAreNames))
  expect_equal(90, FitchScore(referenceTree, readyData, TipsAreColumns))
  
  expect_true(ProfileScore(rTree, readyData) > ProfileScore(referenceTree, readyData))

  quickTS <- TreeSearch(rTree, dataset, TreeScorer=FitchScore, Rearrange=RootedNNI, 
                        maxIter=10000, maxHits=40, verbosity=0)
  expect_equal(42, attr(quickTS, 'score'))
  quickFitch <- Ratchet(rTree, dataset, TreeScorer = FitchScore, suboptimal=max(PP_SUBOPTIMAL_VALUES),
                        ratchHits=3, searchHits=15, searchIter=500, ratchIter=500,
                        rearrangements='TBR', verbosity=-1)
  expect_equal(42, attr(quickFitch, 'score'))
                   
  quick <- Ratchet(rTree, readyData, TreeScorer = ProfileScore, returnAll = FALSE, rooted=TRUE,
                   ratchHits=5, searchHits=30, searchIter=100, ratchIter=50,
                   rearrangements='TBR', verbosity=-1)
  expect_equal(quick, quickFitch)
})
ms609/ProfileParsimony documentation built on May 23, 2019, 7:49 a.m.