R/hasGRanges.R
9f690aca
 setClassUnion("matrixOrNULL", c("matrix", "NULL"))
 
 setClass("hasGRanges",
          representation(gr = "GRanges"))
 
 setMethod("seqnames", signature(x = "hasGRanges"), function(x) {
     seqnames(x@gr)
 })
 setReplaceMethod("seqnames", "hasGRanges", function(x, value) {
fc4e9f83
     seqnames(x@gr) <- value
9f690aca
     x
 })
 
 setMethod("seqlevels", signature(x = "hasGRanges"), function(x) {
     seqlevels(x@gr)
 })
 setReplaceMethod("seqlevels", "hasGRanges", function(x, value) {
fc4e9f83
     seqlevels(x@gr) <- value
9f690aca
     x
 })
 
 setMethod("seqlengths", signature(x = "hasGRanges"), function(x) {
     seqlengths(x@gr)
 })
 setReplaceMethod("seqlengths", "hasGRanges", function(x, value) {
fc4e9f83
     seqlengths(x@gr) <- value
9f690aca
     x
 })
 
 setMethod("granges", signature(x = "hasGRanges"),
fc4e9f83
     function(x, use.names = TRUE, use.mcols = FALSE, ...)
         granges(x@gr, use.names = use.names, use.mcols = use.mcols, ...)
 )
9f690aca
 
 ## FIXME: might want a granges replacement function
 
 setMethod("start", "hasGRanges", function(x, ...) {
     start(x@gr, ...)
 })
 setReplaceMethod("start", "hasGRanges", function(x, check = TRUE, value) {
fc4e9f83
     start(x@gr, check = check) <- value
9f690aca
     x
 })
 
 setMethod("end", "hasGRanges", function(x, ...) {
     end(x@gr, ...)
 })
 setReplaceMethod("end", "hasGRanges", function(x, check = TRUE, value) {
fc4e9f83
     end(x@gr, check = check) <- value
9f690aca
     x
 })
 
 setMethod("width", "hasGRanges", function(x) {
     width(x@gr)
 })
 setReplaceMethod("width", "hasGRanges", function(x, check = TRUE, value) {
fc4e9f83
     width(x@gr, check = check) <- value
9f690aca
     x
 })
 
 setMethod("strand", "hasGRanges", function(x) {
     strand(x@gr)
 })
 setReplaceMethod("strand", "hasGRanges", function(x, value) {
fc4e9f83
     strand(x@gr) <- value
9f690aca
     x
 })
 
 setMethod("length", "hasGRanges", function(x) length(x@gr))
 
fc4e9f83
 setMethod("[", "hasGRanges", function(x, i, ...) {
     if(missing(i))
         stop("need [i] for subsetting")
     if(missing(i))
         return(x)
     x@gr <- x@gr[i]
     x
 })
9f690aca
 
 setMethod("findOverlaps",
           signature(query = "hasGRanges", subject = "GenomicRanges"),
8f4b3264
           function (query, subject, maxgap = -1L, minoverlap = 0L,
9f690aca
                     type = c("any", "start", "end", "within", "equal"),
8657761a
                     select = c("all", "first", "last", "arbitrary"),
1d865e37
                     ignore.strand = FALSE, ...) {
fc4e9f83
               findOverlaps(query = query@gr, subject = subject,
18247272
                            maxgap = maxgap, minoverlap = minoverlap,
                            type = match.arg(type), select = match.arg(select),
                            ignore.strand = ignore.strand, ...)
9f690aca
           })
 
 setMethod("findOverlaps",
fc4e9f83
           signature(query = "GenomicRanges", subject = "hasGRanges"),
8f4b3264
           function (query, subject, maxgap = -1L, minoverlap = 0L,
9f690aca
                     type = c("any", "start", "end", "within", "equal"),
8657761a
                     select = c("all", "first", "last", "arbitrary"),
1d865e37
                     ignore.strand = FALSE, ...) {
fc4e9f83
               findOverlaps(query = query, subject = subject@gr,
18247272
                            maxgap = maxgap, minoverlap = minoverlap,
                            type = match.arg(type), select = match.arg(select),
                            ignore.strand = ignore.strand, ...)
9f690aca
           })
 
 setMethod("findOverlaps",
fc4e9f83
           signature(query = "hasGRanges", subject = "hasGRanges"),
8f4b3264
           function (query, subject, maxgap = -1L, minoverlap = 0L,
9f690aca
                     type = c("any", "start", "end", "within", "equal"),
8657761a
                     select = c("all", "first", "last", "arbitrary"),
1d865e37
                     ignore.strand = FALSE, ...) {
fc4e9f83
               findOverlaps(query = query@gr, subject = subject@gr,
18247272
                            maxgap = maxgap, minoverlap = minoverlap,
                            type = match.arg(type), select = match.arg(select),
                            ignore.strand = ignore.strand, ...)
9f690aca
           })
 
fc4e9f83
 setMethod("overlapsAny", c("hasGRanges", "GenomicRanges"),
     IRanges:::default_overlapsAny
 )
 setMethod("overlapsAny", c("GenomicRanges", "hasGRanges"),
     IRanges:::default_overlapsAny
 )
 setMethod("overlapsAny", c("hasGRanges", "hasGRanges"),
     IRanges:::default_overlapsAny
 )
 
 setMethod("subsetByOverlaps", c("hasGRanges", "GenomicRanges"),
     IRanges:::default_subsetByOverlaps
 )
 setMethod("subsetByOverlaps", c("GenomicRanges", "hasGRanges"),
     IRanges:::default_subsetByOverlaps
 )
 setMethod("subsetByOverlaps", c("hasGRanges", "hasGRanges"),
     IRanges:::default_subsetByOverlaps
 )
9f690aca