75 lines
2.4 KiB
R
75 lines
2.4 KiB
R
test_Vector_merge <- function() {
|
|
library(GenomicRanges)
|
|
|
|
## Binary merge
|
|
|
|
gr <- GRanges(c("chr1:1-1000", "chr1:2000-3000"), a=1:2, b=2:1)
|
|
gr2 <- GRanges(c("chr1:1-1000", "chr1:2000-3000"), c=c(1,3), d=c(3,1))
|
|
|
|
target <- granges(gr)
|
|
mcols(target) <- DataFrame(a=1:2, b=2:1, c=c(1,3), d=c(3,1))
|
|
current <- merge(gr, gr2)
|
|
checkIdentical(target, current)
|
|
|
|
gr <- GRanges(c("chr1:1-1000", "chr1:2000-3000", "chr1:1-10"),
|
|
a=1:3, b=c(2,1,3))
|
|
|
|
target <- granges(gr2)
|
|
mcols(target) <- DataFrame(a=1:2, b=c(2,1), c=c(1,3), d=c(3,1))
|
|
current <- merge(gr, gr2)
|
|
checkIdentical(target, current)
|
|
current <- merge(gr, gr2, all.y=TRUE)
|
|
checkIdentical(target, current)
|
|
|
|
target <- granges(gr)
|
|
mcols(target) <- DataFrame(a=1:3, b=c(2,1,3), c=c(1,3,NA), d=c(3,1,NA))
|
|
current <- merge(gr, gr2, all=TRUE, sort=FALSE)
|
|
checkIdentical(target, current)
|
|
current <- merge(gr, gr2, all.x=TRUE, sort=FALSE)
|
|
checkIdentical(target, current)
|
|
target <- sort(target)
|
|
current <- merge(gr, gr2, all=TRUE, sort=TRUE)
|
|
checkIdentical(target, current)
|
|
|
|
x <- GRanges(c("chr1:1-1000", "chr2:2000-3000"),
|
|
score=c(0.45, 0.1), a1=c(5L, 7L), a2=c(6, 8))
|
|
y <- GRanges(c("chr2:150-151", "chr1:1-10",
|
|
"chr2:2000-3000", "chr2:2000-3000"),
|
|
score=c(0.7, 0.82, 0.1, 0.2),
|
|
b1=c(0L, 5L, 1L, 7L), b2=c(1, -2, 1, 1.5))
|
|
|
|
checkException(merge(x, y[-3]))
|
|
|
|
target0 <- c(granges(x), granges(y[-4]))[c(4, 1, 3, 2)]
|
|
mcols(target0) <- DataFrame(score=c(0.82, 0.45, 0.7, 0.1),
|
|
a1=c(NA, 5L, NA, 7L),
|
|
a2=c(NA, 6, NA, 8),
|
|
b1=c(5L, NA, 0L, 1L),
|
|
b2=c(-2, NA, 1, 1))
|
|
|
|
current <- merge(x, y[-4], all=TRUE)
|
|
checkIdentical(target0, current)
|
|
|
|
current <- merge(x, y[-4], all.x=TRUE)
|
|
checkIdentical(target0[c(2, 4)], current)
|
|
|
|
current <- merge(x, y[-4], all.y=TRUE)
|
|
target <- target0[c(3, 4, 1)]
|
|
seqlevels(target) <- seqlevels(current)
|
|
checkIdentical(target, current)
|
|
|
|
current <- merge(x, y[-4])
|
|
checkIdentical(target0[4], current)
|
|
|
|
## Self merge is a no-op if 'sort=FALSE' (or object already sorted) and
|
|
## if the object has no duplicates
|
|
|
|
checkIdentical(x, merge(x, x))
|
|
|
|
## N-ary merge
|
|
|
|
current <- merge(x, y[-4], x, all=TRUE)
|
|
checkIdentical(target0, current)
|
|
}
|
|
|