genome <- tibble::tribble(
~chrom, ~size,
"chr1", 10000,
"chr2", 10000,
"chr3", 10000
)
x <- tibble::tribble(
~chrom, ~start, ~end,
"chr1", 75, 125
)
y <- tibble::tribble(
~chrom, ~start, ~end,
"chr1", 50, 100,
"chr1", 100, 150
)
test_that("absdist calculation is correct", {
res <- bed_absdist(x, y, genome)
expect_true(res$.absdist_scaled == 0.005)
})
test_that("self absdist is 0", {
x <- tibble::tribble(
~chrom, ~start, ~end,
"chr1", 5, 15,
"chr1", 50, 150,
"chr2", 1000, 2000,
"chr3", 3000, 4000
)
res <- bed_absdist(x, x, genome)
expect_true(sum(res$.absdist) == 0)
})
test_that("x ivls without matching y-ivls chroms are reported with absdist = NA", {
x <- tibble::tribble(
~chrom, ~start, ~end,
"chr1", 5, 15,
"chr1", 50, 150,
"chr2", 1000, 2000,
"chr3", 3000, 4000
)
y <- tibble::tribble(
~chrom, ~start, ~end,
"chr1", 25, 125,
"chr1", 150, 250,
"chr1", 550, 580,
"chr2", 1, 1000,
"chr2", 2000, 3000
)
res <- bed_absdist(x, y, genome)
expect_true("chr3" %in% res$chrom)
expect_true(any(is.na(res$.absdist)))
expect_true(any(is.na(res$.absdist_scaled)))
})
test_that("ensure that absdist is calculated with respect to input tbls issue#108", {
x <- tibble::tribble(
~chrom, ~start, ~end, ~group,
"chr1", 100, 200, "A",
"chr1", 200, 400, "B",
"chr1", 300, 500, "C",
"chr2", 125, 175, "C",
"chr2", 150, 200, "A"
)
y <- tibble::tribble(
~chrom, ~start, ~end, ~group,
"chr1", 100, 200, "C",
"chr1", 200, 400, "B",
"chr1", 300, 500, "A",
"chr2", 125, 175, "C",
"chr2", 350, 500, "A"
)
genome <- tibble::tribble(
~chrom, ~size,
"chr1", 10000,
"chr2", 10000
)
orig <- bed_absdist(x, y, genome)
x <- arrange(x, chrom, start)
x <- group_by(x, group, chrom)
y <- arrange(y, chrom, start)
y <- group_by(y, group, chrom)
res <- bed_absdist(x, y, genome)
expect_true(any(orig[, c(1:5)] != res[, c(1:5)]))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.