Nothing
# 1D covering -------------------------------------------------------------
# get two random numbers between -1 and 1 for the left and right endpoints
vars = sort(runif(2, -1, 1))
left_end = vars[1]
right_end = vars[2]
# ethan's breaking case
ethan_left = 0
ethan_right = 1
# get a random number of bins between 1 and 200
num_bins = sample(1:200, 1)
ethan_bins = 5
# get a random percent overlap between 0 and 100
percent_overlap = runif(1)*100
ethan_overlap = 40
# create cover with random parameters
no_overlap_cover = create_width_balanced_cover(left_end, right_end, num_bins, 0)
full_overlap_cover = create_width_balanced_cover(left_end, right_end, num_bins, 100)
cover = create_width_balanced_cover(left_end, right_end, num_bins, percent_overlap)
ethan_cover = create_width_balanced_cover(ethan_left, ethan_right, ethan_bins, ethan_overlap)
# length of the first interval
no_length = as.numeric(abs(no_overlap_cover[1,1] - no_overlap_cover[1,2]))
full_length = as.numeric(abs(full_overlap_cover[1,1] - full_overlap_cover[1,2]))
interval_length = as.numeric(abs(cover[1,1] - cover[1,2]))
ethan_length = as.numeric(abs(ethan_cover[1,1] - ethan_cover[1,2]))
test_that("1D width balanced cover endpoints are correct", {
expect_true(abs(cover[1,1] - left_end) < 1e-15)
expect_true(abs(right_end - cover[nrow(cover), 2]) < 1e-15)
expect_true(abs(ethan_cover[1,1] - ethan_left) < 1e-15)
expect_true(abs(ethan_right - ethan_cover[nrow(ethan_cover), 2]) < 1e-15)
})
test_that("1D width balanced cover intervals are equally sized", {
# each interval in the cover should be the same length, so the same as the first interval
if (num_bins > 1) {
sapply(1:(num_bins - 1), function(i) expect_equal(as.numeric(abs(cover[i, 1] - cover[i, 2])), interval_length))
}
sapply(1:(ethan_bins - 1), function(i) expect_equal(as.numeric(abs(ethan_cover[i, 1] - ethan_cover[i, 2])), ethan_length))
})
test_that("1D width balanced cover overlaps are correct and consistent", {
if (num_bins > 1) {
# check that bins have correct overlap with the bin behind them
sapply(2:num_bins, function(i) expect_equal(as.numeric(100*abs(cover[i, 1] - cover[i - 1, 2])/interval_length), percent_overlap))
sapply(2:ethan_bins, function(i) expect_equal(as.numeric(100*abs(ethan_cover[i, 1] - ethan_cover[i - 1, 2])/ethan_length), ethan_overlap))
# check that bins have correct overlap with the bin ahead of them
sapply(1:(num_bins - 1), function(i) expect_equal(as.numeric(100*abs(cover[i, 2] - cover[i+1, 1])/interval_length), percent_overlap))
sapply(1:(ethan_bins - 1), function(i) expect_equal(as.numeric(100*abs(ethan_cover[i, 2] - ethan_cover[i+1, 1])/ethan_length), ethan_overlap))
# first and last bin overlaps should also be correct
expect_equal(as.numeric(100*abs(cover[1, 2] - cover[2, 1])/interval_length), percent_overlap)
expect_equal(as.numeric(100*abs(cover[nrow(cover), 1] - cover[nrow(cover)-1, 2])/interval_length), percent_overlap)
expect_equal(as.numeric(100*abs(ethan_cover[1, 2] - ethan_cover[2, 1])/ethan_length), ethan_overlap)
expect_equal(as.numeric(100*abs(ethan_cover[nrow(ethan_cover), 1] - ethan_cover[nrow(ethan_cover)-1, 2])/ethan_length), ethan_overlap)
}
})
test_that("1D width balanced cover can handle no or full overlap", {
expect_true(abs(no_overlap_cover[1,1] - left_end) < 1e-15)
expect_true(abs(right_end - no_overlap_cover[nrow(no_overlap_cover), 2]) < 1e-15)
expect_true(abs(full_overlap_cover[1,1] - left_end) < 1e-15)
expect_true(abs(right_end - full_overlap_cover[nrow(full_overlap_cover), 2]) < 1e-15)
if (num_bins > 1) {
sapply(1:(num_bins - 1), function(i) expect_equal(as.numeric(abs(cover[i, 1] - cover[i, 2])), interval_length))
sapply(1:(num_bins - 1), function(i) expect_equal(as.numeric(abs(no_overlap_cover[i, 1] - no_overlap_cover[i, 2])), no_length))
sapply(1:(num_bins - 1), function(i) expect_equal(as.numeric(abs(full_overlap_cover[i, 1] - full_overlap_cover[i, 2])), full_length))
sapply(2:num_bins, function(i) expect_equal(as.numeric(100*abs(no_overlap_cover[i, 1] - no_overlap_cover[i - 1, 2])/no_length), 0))
sapply(2:num_bins, function(i) expect_equal(as.numeric(100*abs(full_overlap_cover[i, 1] - full_overlap_cover[i - 1, 2])/full_length), 100))
sapply(1:(num_bins - 1), function(i) expect_equal(as.numeric(100*abs(no_overlap_cover[i, 2] - no_overlap_cover[i+1, 1])/no_length), 0))
sapply(1:(num_bins - 1), function(i) expect_equal(as.numeric(100*abs(full_overlap_cover[i, 2] - full_overlap_cover[i+1, 1])/full_length), 100))
expect_equal(as.numeric(100*abs(no_overlap_cover[1, 2] - no_overlap_cover[2, 1])/no_length), 0)
expect_equal(as.numeric(100*abs(full_overlap_cover[1, 2] - full_overlap_cover[2, 1])/full_length), 100)
expect_equal(as.numeric(100*abs(no_overlap_cover[nrow(no_overlap_cover), 1] - no_overlap_cover[nrow(no_overlap_cover)-1, 2])/no_length), 0)
expect_equal(as.numeric(100*abs(full_overlap_cover[nrow(full_overlap_cover), 1] - full_overlap_cover[nrow(full_overlap_cover)-1, 2])/full_length), 100)
}
})
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.