tests/testthat/test-OU.R

library(testthat)
context("PCMLik, OU")

library(PCMBase)
library(PCMBaseCpp)

if(PCMBaseCppIsADevRelease()) {
  
  load("testobjects.RData")
  
  
  test_that("Equal R and Cpp likelihood on a fixed model, single regime (a)", {
    expect_silent(metaICpp <- PCMInfoCpp(X = traits.a.123[, 1:length(tree.a$tip.label)],
                                         tree = tree.a, model.a.123))
    expect_equal(PCMLik(traits.a.123, tree.a, model.a.123),
                 PCMLik(traits.a.123, tree.a, model.a.123, metaI = metaICpp))
    expect_equal(PCMLik(traits.ab.123, tree.ab, model.ab.123),
                 PCMLik(traits.ab.123, tree.ab, model.ab.123,
                        metaI = PCMInfoCpp(X = traits.ab.123[, 1:length(tree.ab$tip.label)],
                                           tree = tree.ab,
                                           model.ab.123)))
  })
  
  set.seed(1)
  
  test_that("Equal R and Cpp likelihood on a random model, single regime (a)", {
    expect_silent(model.a.123.OU <- PCM("OU", k = 3, regimes = "a"))
    expect_silent(PCMParamLoadOrStore(model.a.123.OU, 
                                      PCMParamRandomVecParams(model.a.123.OU), 
                                      offset = 0, k = 3, load = TRUE))
    expect_silent(metaICpp <- PCMInfoCpp(X = traits.a.123[, 1:length(tree.a$tip.label)],
                                         tree = tree.a, model.a.123.OU))
    expect_equal(PCMLik(traits.a.123, tree.a, model.a.123.OU),
                 PCMLik(traits.a.123, tree.a, model.a.123.OU, metaI = metaICpp))
    
  })
  
  test_that("Equal R and Cpp likelihood on a random model, multiple regimes (ab)", {
    expect_silent(model.ab.123.OU <- PCM("OU", k = 3, regimes = c("a", "b")))
    expect_silent(PCMParamLoadOrStore(model.ab.123.OU, 
                                      PCMParamRandomVecParams(model.ab.123.OU), 
                                      offset = 0, k = 3, load = TRUE))
    expect_silent(metaICpp <- PCMInfoCpp(X = traits.ab.123[, 1:length(tree.ab$tip.label)],
                                         tree = tree.ab, model.ab.123.OU))
    expect_equal(PCMLik(traits.ab.123, tree.ab, model.ab.123.OU),
                 PCMLik(traits.ab.123, tree.ab, model.ab.123.OU, metaI = metaICpp))
    
    expect_silent(metaICpp <- PCMInfoCpp(
      X = traits.ab.123[, 1:length(tree.ab$tip.label)],
      tree = tree.ab, model.ab.123.OU,
      SE = 0.05*abs(traits.ab.123[, 1:length(tree.ab$tip.label)])))
    expect_equal(PCMLik(traits.ab.123, tree.ab, model.ab.123.OU, SE = 0.05*abs(traits.ab.123[, 1:length(tree.ab$tip.label)])),
                 PCMLik(traits.ab.123, tree.ab, model.ab.123.OU, metaI = metaICpp))
  })
  
}

Try the PCMBaseCpp package in your browser

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

PCMBaseCpp documentation built on March 23, 2020, 1:06 a.m.