tests/testthat/test-frequencies.R

context("frequencies.R")

test_that("frequencies.locus", {
  AA <- locus( c("A","A") )
  AB <- locus( c("A","B") )
  BB <- locus( c("B","B") )
  AC <- locus( c("A","C") )
  AD <- locus( c("A","D") )
  BC <- locus( c("B","C") )
  BD <- locus( c("B","D") )
  CC <- locus( c("C","C") )
  CD <- locus( c("C","D") )
  DD <- locus( c("D","D") )
  loc1 <- c(AA,AB,AC,AD,BB,BC,BD,CC,CD,DD)
  
  f <- frequencies( loc1 )
  expect_that( f, is_a("data.frame"))
  expect_that( names(f), is_equivalent_to(c("Allele","Frequency") ) )
  expect_that( unique(sort(alleles(loc1))), is_equivalent_to(sort(f$Allele) ) )
  expect_that( sum( f$Frequency ), equals(1))
    
})


test_that("frequencies.data.frame", {
  AA <- locus( c("A","A") )
  AB <- locus( c("A","B") )
  BB <- locus( c("B","B") )
  AC <- locus( c("A","C") )
  AD <- locus( c("A","D") )
  BC <- locus( c("B","C") )
  BD <- locus( c("B","D") )
  CC <- locus( c("C","C") )
  CD <- locus( c("C","D") )
  DD <- locus( c("D","D") )
  loc1 <- c(AA,AB,AC,AD,BB,BC,BD,CC,CD,DD)
  loc2 <- c(AA,AA,AC,AA,CC,CC,AC,CC,AA,AC)
  
  df <- data.frame( Population=c(rep("A",5),rep("B",5)), TPI=loc1, PGM=loc2 )
  f <- frequencies(df,loci="TPI")
  expect_that(f, is_a("data.frame"))
  expect_that(names(f), is_equivalent_to(c("Locus","Allele","Frequency")))
  
  f <- frequencies(df)
  expect_that( length(unique(f$Locus)), equals(2) )
  expect_that( sum( f$Frequency), equals(2) )
  
  expect_that( f <- frequencies( df, loci="bob"), throws_error() )
  expect_that( f <- frequencies( df, loci=c("bob","TPI")), throws_error() )
  expect_that( f <- frequencies( df, stratum="bob"), throws_error() )
  
  
  
})

# TODO: implement snp frequencies
# test_that("frequencies.data.frame", {
#   x <- matrix( abs( rnorm(30)), ncol=3)
#   x <- x / rowSums(x)
#   df <- data.frame( Loc1_1=x[,1], Loc1_2=x[,2], Loc1_3=x[,3])
#   
#   f <- frequencies(df)
#   expect_that( f, is_a("data.frame"))
#   expect_that( names(f), is_equivalent_to(c("Locus","Allele","Frequency")))
#   expect_that( f$Allele, is_equivalent_to(c("A","B")))
#   expect_that( f$Locus, is_equivalent_to(c("Loc1","Loc1")))
#   expect_that( sum(f$Frequency), is_equivalent_to(1))
# 
# })
# 
dyerlab/gstudio documentation built on Feb. 2, 2024, 8:24 p.m.