fl <- system.file("extdata", "ex1.bam", package = "Rsamtools")
gr <- GRanges(c(rep("seq2", 3), "seq1"),
IRanges(c(75, 1, 100, 1), width = 2))
## Ranges are packed by order within chromosome and grouped
## around gaps greater than 'inter_range_len'. See ?pack for details.
pk <- pack(gr, inter_range_len = 25)
## FUN computes coverage for the range passed as 'rng'.
FUN <- function(rng, fl, param) {
requireNamespace("GenomicAlignments") ## for bamWhich() and coverage()
Rsamtools::bamWhich(param) <- rng
GenomicAlignments::coverage(Rsamtools::BamFile(fl), param=param)[rng]
}
## Compute coverage on the packed ranges.
dat <- bplapply(as.list(pk), FUN, fl = fl, param = ScanBamParam())
## The result list contains RleLists of coverage.
lapply(dat, class)
## unpack() transforms the results back to the order of
## the original ranges (i.e., unpacked 'gr').
unpack(dat, pk)
Run the code above in your browser using DataLab