% Generated by roxygen2: do not edit by hand
% Please edit documentation in R/get_coverage.R
\name{get_coverage}
\alias{get_coverage}
\title{Compute coverage summarizations across a set of regions}
\usage{
get_coverage(
  bigwig_file,
  op = c("sum", "mean", "max", "min"),
  annotation,
  prefix = file.path(tempdir(), "bw.mean")
)
}
\arguments{
\item{bigwig_file}{A \code{character(1)} with the path to the input BigWig file.}

\item{op}{A \code{character(1)} specifying the summarization operation to
perform.}

\item{annotation}{A \code{character(1)} path to a BED file with the genomic
coordinates you are interested in.}

\item{prefix}{A \code{character(1)} specifying the output file prefix. This
function creates a file called \code{prefix.annotation.tsv} that can be read
again later with \code{read_coverage()}. By default the file is created in
the \code{tempdir()} and will be deleted after you close your R session.}
}
\value{
A \link[GenomicRanges:GRanges-class]{GRanges-class} object with the
coverage summarization across the annotation ranges.
}
\description{
Given an input set of annotation regions, compute coverage summarizations
using Megadepth for a given BigWig file.
}
\details{
Note that the chromosome names (seqnames) in the BigWig file and the
annotation file should use the same format. Otherwise, Megadepth will
return 0 counts.
}
\examples{

## Install if necessary
install_megadepth()

## Next, we locate the example BigWig and annotation files
example_bw <- system.file("tests", "test.bam.all.bw",
    package = "megadepth", mustWork = TRUE
)
annotation_file <- system.file("tests", "testbw2.bed",
    package = "megadepth", mustWork = TRUE
)

## Compute the coverage
bw_cov <- get_coverage(example_bw, op = "mean", annotation = annotation_file)
bw_cov

## If you want to cast this into a RleList object use the following code:
## (it's equivalent to rtracklayer::import.bw(as = "RleList"))
## although in the megadepth case the data has been summarized
GenomicRanges::coverage(bw_cov)

## Checking with derfinder and rtracklayer
bed <- rtracklayer::import(annotation_file)

## The file needs a name
names(example_bw) <- "example"

## Read in the base-pair coverage data
if (!xfun::is_windows()) {
    regionCov <- derfinder::getRegionCoverage(
        regions = bed,
        files = example_bw,
        verbose = FALSE
    )

    ## Summarize the base-pair coverage data.
    ## Note that we have to round the mean to make them comparable.
    testthat::expect_equivalent(
        round(sapply(regionCov[c(1, 3:4, 2)], function(x) mean(x$value)), 2),
        bw_cov$score,
    )

    ## If we compute the sum, there's no need to round
    testthat::expect_equivalent(
        sapply(regionCov[c(1, 3:4, 2)], function(x) sum(x$value)),
        get_coverage(example_bw, op = "sum", annotation = annotation_file)$score,
    )
}
}
\seealso{
Other Coverage functions: 
\code{\link{read_coverage}()}
}
\concept{Coverage functions}
