Nothing
bed_tbl <- tibble::tribble(
~chrom, ~start, ~end, ~strand,
"chr1", 100, 150, "+",
"chr1", 200, 250, "+",
"chr2", 300, 350, "+",
"chr2", 400, 450, "-",
"chr3", 500, 550, "-",
"chr3", 600, 650, "-"
)
genome <- tibble::tribble(
~chrom, ~size,
"chr1", 1000,
"chr2", 2000,
"chr3", 3000
)
test_that("pos increment works", {
size <- 100
out <- bed_shift(bed_tbl, genome, size)
expect_true(
all(out$start - bed_tbl$start == size),
all(out$end - bed_tbl$end == size)
)
})
test_that("neg increment works", {
size <- -50
out <- bed_shift(bed_tbl, genome, size)
expect_true(
all(out$start - bed_tbl$start == size),
all(out$end - bed_tbl$end == size)
)
})
test_that("starts forced to 0", {
size <- -120
out <- bed_shift(bed_tbl, genome, size)
expect_true(all(out$start >= 0))
})
test_that("end forced to chrom length", {
size <- 1675
out <- bed_shift(bed_tbl, genome, size) |>
left_join(genome, by = "chrom")
expect_true(all(out$end <= out$size))
})
test_that("fraction increment works", {
fraction <- 0.5
interval <- bed_tbl$end - bed_tbl$start
out <- bed_shift(bed_tbl, genome, fraction = fraction)
expect_true(all(
out$start - bed_tbl$start == fraction * interval,
all(out$end - bed_tbl$end == fraction * interval)
))
})
test_that("negative fraction increment works", {
fraction <- -0.5
interval <- bed_tbl$end - bed_tbl$start
out <- bed_shift(bed_tbl, genome, fraction = fraction)
expect_true(all(
out$start - bed_tbl$start == fraction * interval,
all(out$end - bed_tbl$end == fraction * interval)
))
})
test_that("rounding fraction increment works", {
fraction <- 0.51234
interval <- bed_tbl$end - bed_tbl$start
out <- bed_shift(bed_tbl, genome, fraction = fraction)
expect_true(all(
out$start - bed_tbl$start == round(fraction * interval),
all(out$end - bed_tbl$end == round(fraction * interval))
))
})
test_that("shift by strand works", {
size <- 100
x <- group_by(bed_tbl, strand)
out <- bed_shift(x, genome, size)
expect_true(all(
ifelse(out$strand == "+",
out$start - bed_tbl$start == size,
out$start - bed_tbl$start == -size
),
ifelse(out$strand == "+",
out$end - bed_tbl$end == size,
out$end - bed_tbl$end == -size
)
))
})
test_that("shift by strand and fraction works", {
fraction <- 0.5
x <- group_by(bed_tbl, strand)
sizes <- bed_tbl$end - bed_tbl$start
out <- bed_shift(x, genome, fraction = fraction)
expect_true(all(
ifelse(out$strand == "+",
out$start - bed_tbl$start == sizes * fraction,
out$start - bed_tbl$start == -sizes * fraction
),
ifelse(out$strand == "+",
out$end - bed_tbl$end == sizes * fraction,
out$end - bed_tbl$end == -sizes * fraction
)
))
})
# from https://github.com/arq5x/bedtools2/blob/master/test/shift/test-shift.sh
a <- tibble::tribble(
~chrom, ~start, ~end, ~name, ~score, ~strand,
"chr1", 100, 200, "a1", 1, "+",
"chr1", 100, 200, "a2", 2, "-"
)
tiny.genome <- tibble::tribble(
~chrom, ~size,
"chr1", 1000
)
test_that("test going beyond the start of the chrom", {
out <- bed_shift(a, tiny.genome, size = -300, trim = TRUE)
expect_true(all(
out$start == c(0, 0),
out$end == c(1, 1)
))
})
test_that("test going beyond the start of the chrom", {
out <- bed_shift(a, tiny.genome, size = -200, trim = TRUE)
expect_true(all(
out$start == c(0, 0),
out$end == c(1, 1)
))
})
test_that("test going beyond the end of the chrom", {
out <- bed_shift(a, tiny.genome, size = 1000, trim = TRUE)
expect_true(all(
out$start == c(999, 999),
out$end == c(1000, 1000)
))
})
test_that("test shift being larger than a signed int", {
out <- bed_shift(a, tiny.genome, size = 3000000000, trim = TRUE)
expect_true(all(
out$start == c(999, 999),
out$end == c(1000, 1000)
))
})
test_that("test chrom boundaries", {
tiny2.genome <- tibble::tribble(
~chrom, ~size,
"chr1", 10
)
b <- tibble::tribble(
~chrom, ~start, ~end, ~name, ~score, ~strand,
"chr1", 5, 10, "cds1", 0, "+"
)
out <- bed_shift(b, tiny2.genome, size = 2, trim = TRUE)
expect_true(all(
out$start == 7,
out$end == 10
))
})
test_that("test shift huge genome", {
tiny2.genome <- tibble::tribble(
~chrom, ~size,
"chr1", 249250621
)
b <- tibble::tribble(
~chrom, ~start, ~end, ~name, ~score, ~strand,
"chr1", 66999638L, 67216822L, "NM_032291", 0L, "+",
"chr1", 92145899L, 92351836L, "NR_036634", 0L, "-"
)
out <- bed_shift(b, tiny2.genome, size = 1000, trim = TRUE)
expect_true(all(
out$start == c(67000638, 92146899),
out$end == c(67217822, 92352836)
))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.