tests/testthat/test-periodogram.R

context("periodogram")

test_that("periodrogram works in normal conditions", {
  data(dams_sample)

  pdt <- periodogram(activity, dams_sample, FUN=ac_periodogram)
  pdt <- rejoin(pdt)


  pdt <- periodogram(activity, dams_sample, FUN=ls_periodogram, oversampling = 4)
  pdt[power > signif_threshold, max(p_value)]
  pdt[power < signif_threshold]
  pdt <- rejoin(pdt)

 # ggplot2::ggplot(pdt, ggplot2::aes(y=power, x=period, colour = period_group, group=id)) + ggplot2::geom_line()

  #expect_equal(pdt[,mean(power),by=period_group][,V1], c(38.68601,23.71387,49.16648), tolerance=1e-5)

  pdt <- periodogram(activity, dams_sample, FUN=chi_sq_periodogram)
  pdt <- rejoin(pdt)
  # expect_equal(pdt[,mean(power),by=period_group][,V1], c(1386.653,1332.233,1367.157), tolerance=1e-3)
#  ggplot2::ggplot(pdt, ggplot2::aes(y=power, x=period, colour = period_group, group=id)) + ggplot2::geom_line()


  pdt <- periodogram(activity, dams_sample, FUN=fourier_periodogram)
  pdt <- rejoin(pdt)
  #expect_equal(pdt[,mean(power),by=period_group][,V1], c(177.92472,56.70639,287.12976), tolerance=1e-5)

})


test_that("periodrogram warns when id have no data", {
  data(dams_sample)

  dams_sample2 <- copy(dams_sample)
  dams_sample2[id == "2017-01-16 08:00:00|dams_sample.txt|01", activity := 1]
  dams_sample2[id == "2017-01-16 08:00:00|dams_sample.txt|01"]

  reg_data_nval <- dams_sample2[, .(n_val =length(unique(activity))),
                                by = c(data.table::key(dams_sample2))]

  expect_warning(
            periodogram(activity, dams_sample2, FUN=chi_sq_periodogram),
            "2017-01-16 08:00:00\\|dams_sample\\.txt\\|01")

})



# https://github.com/rethomics/ggetho/issues/32
test_that("periodrogram runs when the is not named `id`", {
  data(dams_sample)
  dams_sample2 <- copy(dams_sample)
  dams_sample2[id == "2017-01-16 08:00:00|dams_sample.txt|01", activity := 1]
  dams_sample2[id == "2017-01-16 08:00:00|dams_sample.txt|01"]

  setnames(dams_sample2, 'id', 'ID')
  m <- dams_sample2[meta=T]
  setnames(m, 'id', 'ID')
  dams_sample2 <- behavr(dams_sample2, m)


  reg_data_nval <- dams_sample2[, .(n_val =length(unique(activity))),
                                by = c(data.table::key(dams_sample2))]

  expect_warning(
    periodogram(activity, dams_sample2, FUN=chi_sq_periodogram),
    "2017-01-16 08:00:00\\|dams_sample\\.txt\\|01")
})
rethomics/zeitgebr documentation built on April 11, 2024, 2:28 a.m.