tests/testthat/test_subtract.R

context("genome_subtract")


suppressPackageStartupMessages(library(dplyr))

x1 <- tibble(id = 1:4, bla=letters[1:4],
                 chromosome = c("chr1", "chr1", "chr2", "chr1"),
                 start = c(100, 200, 300, 400),
                 end = c(150, 250, 350, 450))

x2 <- tibble(id = 1:4, BLA=LETTERS[1:4],
                 chromosome = c("chr1", "chr2", "chr1", "chr1"),
                 start = c(120, 210, 300, 400),
                 end = c(125, 240, 320, 415))

test_that("Subtraction of 2 data frames works as expected", {
  j <- genome_subtract(x1, x2, by=c("chromosome", "start", "end"))
  # print(j)
  expect_equal(colnames(j), c("id", "bla", "chromosome", "start", "end"))
  expect_equal(j$start, c(100, 126, 200, 300, 416))
  expect_equal(j$end,   c(119, 150, 250, 350, 450))
})



test_that("Edge cases of subtraction of 2 data frames works as expected", {
  x1 <- tibble(id = 1:2, bla=letters[1:2],
                   chromosome = c("chr1", "chr1"),
                   start = c(100, 200),
                   end = c(150, 250))

  x2 <- tibble(id = 1:4, BLA=LETTERS[1:4],
                   chromosome = c("chr1", "chr1", "chr1", "chr1"),
                   start = c(120, 110, 190, 400),
                   end = c(125, 122, 320, 415))

  j <- genome_subtract(x1, x2, by=c("chromosome", "start", "end"))
  print(j)
  expect_equal(colnames(j), c("id", "bla", "chromosome", "start", "end"))
  expect_equal(j$start, c(100, 126))
  expect_equal(j$end,   c(109, 150))
})


test_that("during subtraction the intervals are not unified", {
  x1 <- tibble(id = 1:3, bla=letters[1:3],
                   chromosome = c("chr1", "chr1", "chr1"),
                   start = c(100, 115, 200),
                   end = c(150, 160, 250))

  x2 <- tibble(id = 1, BLA=LETTERS[1],
                   chromosome = c("chr1"),
                   start = c(110),
                   end = c(130))

  j <- genome_subtract(x1, x2, by=c("chromosome", "start", "end"))
  print(j)
  expect_equal(colnames(j), c("id", "bla", "chromosome", "start", "end"))
  expect_equal(j$start, c(100, 131, 131, 200))
  expect_equal(j$end,   c(109, 150, 160, 250))
})
const-ae/tidygenomics documentation built on April 17, 2021, 4:27 a.m.