tests/testthat/test-preprocess.R

test_that("collapse_lineages merges rare lineages", {
  sim <- simulate_dynamics(
    n_lineages   = 5,
    advantages   = c(A = 1.3, B = 1.1, C = 0.5, D = 0.3),
    n_timepoints = 15, total_per_tp = 1000, seed = 1
  )
  collapsed <- collapse_lineages(sim, min_freq = 0.20)

  expect_s3_class(collapsed, "lfq_data")
  expect_true(
    length(attr(collapsed, "lineages")) <= length(attr(sim, "lineages"))
  )
  # At least some lineages should have been collapsed
  expect_true("Other" %in% attr(collapsed, "lineages"))
})

test_that("collapse_lineages with custom mapping", {
  sim <- simulate_dynamics(
    n_lineages   = 4,
    advantages   = c(A = 1.2, B = 0.9, C = 0.8),
    n_timepoints = 10, seed = 1
  )
  mapping   <- c("A" = "GroupX", "B" = "GroupX", "C" = "GroupY")
  collapsed <- collapse_lineages(sim, mapping = mapping)

  expect_true("GroupX" %in% attr(collapsed, "lineages"))
  expect_true("GroupY" %in% attr(collapsed, "lineages"))
})

test_that("filter_sparse removes low-count time points", {
  sim <- simulate_dynamics(
    n_lineages   = 2,
    advantages   = c("A" = 1.1),
    n_timepoints = 10,
    total_per_tp = c(5, 5, 500, 500, 500, 500, 500, 500, 500, 500),
    seed         = 1
  )
  filtered <- filter_sparse(sim, min_total = 100)

  expect_s3_class(filtered, "lfq_data")
  expect_true(all(filtered$.total >= 100))
})

Try the lineagefreq package in your browser

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

lineagefreq documentation built on April 3, 2026, 9:09 a.m.