1
### - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1
### =========================================================================
2
2
### Utility functions for subsetting and renaming seqlevels
7
setGeneric("keepSeqlevels", signature = c("x", "value"),
8
function(x, value, ...)
9
standardGeneric("keepSeqlevels")
12
setMethod("keepSeqlevels", c("GenomicRanges", "GenomicRanges"),
13
function(x, value, ...)
15
value <- seqlevels(value)
16
callGeneric(x, value, ...)
19
setMethod("keepSeqlevels", c("GenomicRanges", "GRangesList"),
20
function(x, value, ...)
22
value <- seqlevels(value)
23
callGeneric(x, value, ...)
26
setMethod("keepSeqlevels", c("GenomicRanges", "GappedAlignments"),
27
function(x, value, ...)
29
value <- seqlevels(value)
30
callGeneric(x, value, ...)
33
setMethod("keepSeqlevels", c("GRangesList", "GenomicRanges"),
34
function(x, value, ...)
36
value <- seqlevels(value)
37
callGeneric(x, value, ...)
40
setMethod("keepSeqlevels", c("GRangesList", "GRangesList"),
41
function(x, value, ...)
43
value <- seqlevels(value)
44
callGeneric(x, value, ...)
47
setMethod("keepSeqlevels", c("GRangesList", "GappedAlignments"),
48
function(x, value, ...)
50
value <- seqlevels(value)
51
callGeneric(x, value, ...)
54
setMethod("keepSeqlevels", c("GenomicRanges", "character"),
55
function(x, value, ...)
57
if (!identical(character(0), seqlevels(x)) &&
58
!identical(character(0), value)) {
59
str <- !value %in% seqlevels(x)
61
warning("seqlevels ", paste(value[str], collapse=", "),
66
suppressWarnings(seqlevels(x, force=TRUE) <- value[str == FALSE])
74
setMethod("keepSeqlevels", c("GRangesList", "character"),
75
function(x, value, ...)
77
if (!identical(character(0), seqlevels(x)) &&
78
!identical(character(0), value)) {
79
str <- !value %in% seqlevels(x)
81
warning("seqlevels ", paste(value[str], collapse=", "),
86
grlSeqnames <- unlist(seqnames(x), use.names=FALSE)
87
idx <- rep(runValue(grlSeqnames) %in% value, runLength(grlSeqnames))
88
grReduced <- deconstructGRLintoGR(x)[idx]
89
grlReduced <- reconstructGRLfromGR(grReduced, x)
91
seqlevels(grlReduced) <- seqlevels(x)[seqlevels(x) %in% value]
92
grlReduced[elementLengths(grlReduced) != 0]
99
setMethod("keepSeqlevels", c("GappedAlignments", "GenomicRanges"),
100
function(x, value, ...)
102
value <- seqlevels(value)
103
callGeneric(x, value, ...)
106
setMethod("keepSeqlevels", c("GappedAlignments", "GRangesList"),
107
function(x, value, ...)
109
value <- seqlevels(value)
110
callGeneric(x, value, ...)
113
setMethod("keepSeqlevels", c("GappedAlignments", "GappedAlignments"),
114
function(x, value, ...)
116
value <- seqlevels(value)
117
callGeneric(x, value, ...)
120
setMethod("keepSeqlevels", c("GappedAlignments", "character"),
121
function(x, value, ...)
123
if (!identical(character(0), seqlevels(x)) &&
124
!identical(character(0), value)) {
125
str <- !value %in% seqlevels(x)
127
warning("seqlevels ", paste(value[str], collapse=", "),
132
suppressWarnings(seqlevels(x, force=TRUE) <- value[str == FALSE])
3
### -------------------------------------------------------------------------
5
keepSeqlevels <- function(x, value, ...)
8
if (any(nomatch <- !value %in% seqlevels(x)))
9
warning("invalid seqlevels '",
10
paste(value[nomatch], collapse=","), "' were ignored")
11
seqlevels(x, force=TRUE) <- value[!nomatch]
15
dropSeqlevels <- function(x, value, ...)
17
value <- unname(value)
18
if (any(nomatch <- !value %in% seqlevels(x)))
19
warning("invalid seqlevels '",
20
paste(value[nomatch], collapse=","), "' were ignored")
21
seqlevels(x, force=TRUE) <- seqlevels(x)[!seqlevels(x) %in% value]
25
renameSeqlevels <- function(x, value, ...)
30
if (length(value) != length(seqlevels(x)))
31
stop("unnamed 'value' must be the same length as seqlevels(x)")
32
names(value) <- seqlevels(x)
35
if (any(nomatch <- !nms %in% seqlevels(x)))
36
warning("invalid seqlevels '",
37
paste(nms[nomatch], collapse=","), "' were ignored")
38
if (length(value) != length(seqlevels(x))) {
40
level[level %in% nms] <- value
143
.renameSeqlevels <- function(x, value, ...)
145
if (identical(character(0), seqlevels(x)))
147
if (is.null(old <- names(value)))
148
stop("'value' must be a named character vector")
149
new <- unlist(value, use.names=FALSE)
151
str <- !old %in% seqlevels(x)
153
warning("seqlevels ", paste(old[str], collapse=", "),
156
ord <- match(old[str == FALSE], seqlevels(x))
157
seqlevels(x)[ord] <- new[str == FALSE]
161
setGeneric("renameSeqlevels", signature = c("x", "value"),
162
function(x, value, ...)
163
standardGeneric("renameSeqlevels")
166
setMethod("renameSeqlevels", c(x="GappedAlignments", value="character"),
167
function(x, value, ...) .renameSeqlevels(x, value, ...)
170
setMethod("renameSeqlevels", c("GRangesList", "character"),
171
function(x, value, ...) .renameSeqlevels(x, value, ...)
174
setMethod("renameSeqlevels", c("GenomicRanges", "character"),
175
function(x, value, ...) .renameSeqlevels(x, value, ...)
48
## Currently applies to TranscriptDb only.
49
restoreSeqlevels <- function(x, ...)