1 derfinder basic results exploration

Project: derfinderReport-example.

2 Introduction

This report is meant to help explore the results of the derfinder (Collado-Torres, Nellore, Frazee, Wilks, Love, Langmead, Irizarry, Leek, and Jaffe, 2017) package using the single base-level approach and was generated using the regionReport (Collado-Torres, Jaffe, and Leek, 2016) package. While the report is rich, it is meant to just start the exploration of the results and exemplify some of the code used to do so. If you need a more in-depth analysis for your specific data set you might want to use the customCode argument.

Most plots were made with using ggplot2 (Wickham, 2016).

2.1 Code setup

## knitrBoostrap and device chunk options
library('knitr')
opts_chunk$set(bootstrap.show.code = FALSE, dev = device, crop = NULL)
if(!outputIsHTML) opts_chunk$set(bootstrap.show.code = FALSE, dev = device, echo = FALSE)
#### Libraries needed

## Bioconductor
library('IRanges')
library('GenomicRanges')
library('GenomeInfoDb')
library('derfinder')
library('derfinderPlot')
library('ggbio')
## Need specific help about ggbio? try mailing 
##  the maintainer or visit https://lawremi.github.io/ggbio/
## 
## Attaching package: 'ggbio'
## The following objects are masked from 'package:ggplot2':
## 
##     geom_bar, geom_rect, geom_segment, ggsave, stat_bin, stat_identity, xlim
if(hg19) {
    library('biovizBase')
    library('TxDb.Hsapiens.UCSC.hg19.knownGene')
}
## Loading required package: GenomicFeatures
## CRAN
library('ggplot2')
if(!is.null(theme)) theme_set(theme)
library('grid')
library('gridExtra')
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:Biobase':
## 
##     combine
## The following object is masked from 'package:BiocGenerics':
## 
##     combine
library('knitr')
library('RColorBrewer')
library('mgcv')
## Loading required package: nlme
## 
## Attaching package: 'nlme'
## The following object is masked from 'package:IRanges':
## 
##     collapse
## This is mgcv 1.9-1. For overview type 'help("mgcv-package")'.
library('DT')
library('sessioninfo')

#### Code setup

## For ggplot
tmp <- fullRegions
names(tmp) <- seq_len(length(tmp))
regions.df <- as.data.frame(tmp)
regions.df$width <- width(tmp)
rm(tmp)
nulls.df <- as.data.frame(fullNullSummary)

## Special subsets: need at least 3 points for a density plot
keepChr <- table(regions.df$seqnames) > 2
regions.df.plot <- subset(regions.df, seqnames %in% names(keepChr[keepChr]))
finite.area <- finite.area[regions.df$seqnames %in% names(keepChr[keepChr])]

if(hasSig) {
    ## Keep only those sig
    regions.df.sig <- regions.df[idx.sig, ]
    keepChr <- table(regions.df.sig$seqnames) > 2
    regions.df.sig <- subset(regions.df.sig, seqnames %in% names(keepChr[keepChr]))
    
    if(nrow(regions.df.sig) > 0) {
        ## If there's any sig, keep those with finite areas
        if(hasArea) {
            regions.df.sig.area <- regions.df.sig[is.finite(regions.df.sig$area), ]
            keepChr <- table(regions.df.sig.area$seqnames) > 2
            regions.df.sig.area <- subset(regions.df.sig.area, seqnames %in%
                names(keepChr[keepChr]))
            
            ## Save the info
            hasArea <- nrow(regions.df.sig.area) > 0
        }
    } else {
        print('Not a single chromosome had 2 or more significant regions, so plots for significant regions will be skipped.')
        hasSig <- hasArea <- FALSE
    }
}

## Get chr lengths
if(hg19) {
    seqlengths(fullRegions) <- seqlengths(getChromInfoFromUCSC('hg19',
        as.Seqinfo = TRUE))[
          mapSeqlevels(names(seqlengths(fullRegions)), 'UCSC')]
}

## Find which chrs are present in the data set
chrs <- levels(seqnames(fullRegions))

## Subset the fullCoverage data in case that a subset was used
colsubset <- optionsStats$colsubset
if(!is.null(fullCov) & !is.null(colsubset)) {
    fullCov <- lapply(fullCov, function(x) { x[, colsubset] })
}

## Get region coverage for the top regions
if(nBestRegions > 0) {
    regionCoverage <- getRegionCoverage(fullCov = fullCov, 
        regions = fullRegions[seq_len(nBestRegions)],
        chrsStyle = chrsStyle, species = species,
        currentStyle = currentStyle, verbose = FALSE)
    save(regionCoverage, file=file.path(workingDir, 'regionCoverage.Rdata'))
}

## Graphical setup: transcription database
if(hg19 & is.null(txdb)) {
    txdb <- TxDb.Hsapiens.UCSC.hg19.knownGene::TxDb.Hsapiens.UCSC.hg19.knownGene
} else {
    stopifnot(!is.null(txdb))
}

3 Quality checks

3.1 P-values

Theoretically, the p-values should be uniformly distributed between 0 and 1.

p1 <- ggplot(regions.df.plot, aes(x=pvalues, colour=seqnames)) +
    geom_line(stat='density') + xlim(0, 1) +
    labs(title='Density of p-values') + xlab('p-values') +
    scale_colour_discrete(limits=chrs) + theme(legend.title=element_blank())
p1

## Compare the pvalues
summary(fullRegions$pvalues)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01887 0.01887 0.62264 0.40652 0.62264 0.96226

This is the numerical summary of the distribution of the p-values.

3.2 Q-values

summary(fullRegions$qvalues)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 0.01626 0.01626 0.25005 0.16318 0.25005 0.30161

This is the numerical summary of the distribution of the q-values.

qtable <- lapply(c(1e-04, 0.001, 0.01, 0.025, 0.05, 0.1, 0.2, 0.3, 0.4, 0.5,
    0.6, 0.7, 0.8, 0.9, 1), function(x) {
    data.frame('Cut' = x, 'Count' = sum(fullRegions$qvalues <= x))
})
qtable <- do.call(rbind, qtable)
if(outputIsHTML) {
    kable(qtable, format = 'markdown', align = c('c', 'c'))
} else {
    kable(qtable)
}
Cut Count
0.0001 0
0.0010 0
0.0100 0
0.0250 12
0.0500 12
0.1000 12
0.2000 13
0.3000 32
0.4000 33
0.5000 33
0.6000 33
0.7000 33
0.8000 33
0.9000 33
1.0000 33

This table shows the number of candidate Differentially Expressed Regions (DERs) with q-value less or equal than some commonly used cutoff values.

3.3 FWER adjusted P-values

This is the numerical summary of the distribution of the FWER adjusted p-values. Skipped because there are no FWER-adjusted P-values.

This table shows the number of candidate Differentially Expressed Regions (DERs) with FWER adjusted p-values less or equal than some commonly used cutoff values. Skipped because there are no FWER-adjusted P-values.

3.4 Region width

xrange <- range(log10(regions.df.plot$width)) * c(0.95, 1.05)
p2a <- ggplot(regions.df.plot, aes(x=log10(width), colour=seqnames)) + 
    geom_line(stat='density') + labs(title='Density of region lengths') +
    xlab('Region width (log10)') + scale_colour_discrete(limits=chrs) +
    xlim(xrange) + theme(legend.title=element_blank())
p2b <- ggplot(regions.df.sig, aes(x=log10(width), colour=seqnames)) +
    geom_line(stat='density') +
    labs(title='Density of region lengths (significant only)') +
    xlab('Region width (log10)') + scale_colour_discrete(limits=chrs) +
    xlim(xrange) + theme(legend.title=element_blank())
grid.arrange(p2a, p2b)

This plot shows the density of the region lengths for all regions. The bottom panel is restricted to significant regions (FDR adjusted P-value < 0.1)

3.5 Region Area

xrange <- range(log10(regions.df.plot$area[finite.area])) * c(0.95, 1.05)
if(inf.area > 0) {
    print(paste('Dropping', inf.area, 'due to Inf values.'))
}
p3a <- ggplot(regions.df.plot[finite.area, ], aes(x=log10(area), colour=seqnames)) +
    geom_line(stat='density') + labs(title='Density of region areas') +
    xlab('Region area (log10)') + scale_colour_discrete(limits=chrs) +
    xlim(xrange) + theme(legend.title=element_blank())
p3b <- ggplot(regions.df.sig.area, aes(x=log10(area), colour=seqnames)) +
    geom_line(stat='density') +
    labs(title='Density of region areas (significant only)') +
    xlab('Region area (log10)') + scale_colour_discrete(limits=chrs) +
    xlim(xrange) + theme(legend.title=element_blank())
grid.arrange(p3a, p3b)

This plot shows the density of the region areas for all regions. The bottom panel is restricted to significant regions (FDR adjusted P-value < 0.1)

3.6 Null regions: width and area

p4 <- ggplot(nulls.df, aes(x=log10(width), colour=chr)) +
    geom_line(stat='density') + labs(title='Density of null region lengths') +
    xlab('Region width (log10)') + scale_colour_discrete(limits=chrs) +
    theme(legend.title=element_blank())
nulls.inf <- !is.finite(nulls.df$area)
if(sum(nulls.inf) > 0) {
    print(paste('Dropping', sum(nulls.inf), 'due to Inf values.'))
}
p5 <- ggplot(nulls.df[!nulls.inf, ], aes(x=log10(area), colour=chr)) +
    geom_line(stat='density') + labs(title='Density of null region areas') +
    xlab('Region area (log10)') + scale_colour_discrete(limits=chrs) +
    theme(legend.title=element_blank())
grid.arrange(p4, p5)

This plot shows the density of the null region lengths and areas. There were a total of 52 null regions.

3.7 Mean coverage

xrange <- range(log2(regions.df.plot$meanCoverage)) * c(0.95, 1.05)
p6a <- ggplot(regions.df.plot, aes(x=log2(meanCoverage), colour=seqnames)) +
    geom_line(stat='density') + labs(title='Density of region mean coverage') +
    xlab('Region mean coverage (log2)') + scale_colour_discrete(limits=chrs) +
    xlim(xrange) + theme(legend.title=element_blank())
p6b <- ggplot(regions.df.sig, aes(x=log2(meanCoverage), colour=seqnames)) +
    geom_line(stat='density') +
    labs(title='Density of region mean coverage (significant only)') +
    xlab('Region mean coverage (log2)') + scale_colour_discrete(limits=chrs) +
    xlim(xrange) + theme(legend.title=element_blank())
grid.arrange(p6a, p6b)

This plot shows the density of the region mean coverage for all regions. The bottom panel is restricted to significant regions (FDR adjusted P-value < 0.1)

3.8 Mean coverage vs fold change

The following plots are MA-style plots comparing each group vs the first one. The mean coverage is calculated using only two groups at a time and is weighted according to the number of samples on each group. Note that the mean coverage and fold change as calculated here do not taking into account the library sizes.

These plots are only shown when there are two or more groups. A total of 1 plot(s) were made.

for(j in grep('log2FoldChange', colnames(values(fullRegions)))) {
    ## Identify the groups
    groups <- strsplit(gsub('log2FoldChange', '',
        colnames(values(fullRegions))[j]), 'vs')[[1]]
    
    ## Calculate the mean coverage only using the 2 groups in question
    j.mean <- which(colnames(values(fullRegions)) %in% paste0('mean', groups))
    groups.n <- sapply(groups, function(x) { sum(optionsStats$groupInfo == x) })
    ma.mean.mat <- as.matrix(values(fullRegions)[, j.mean])
    ## Weighted means
    ma.mean <- drop(ma.mean.mat %*% groups.n) / sum(groups.n) +
        optionsStats$scalefac
    ma.fold2 <- drop(log2(ma.mean.mat + optionsStats$scalefac) %*% c(1, -1))
    
    ma <- data.frame(mean=ma.mean, log2FoldChange=ma.fold2)
    ma2 <- ma[is.finite(ma$log2FoldChange), ]
    fold.mean <- data.frame(foldMean=mean(ma2$log2FoldChange, na.rm=TRUE))
    
    p.ma <- ggplot(ma, aes(x=log2(mean), y=log2FoldChange)) +
        geom_point(size=1.5, alpha=1/5) + 
        ylab("Fold Change [log2(x + sf)]\nRed dashed line at mean; blue line is GAM fit: y ~ s(x, bs = 'cs')") +
        xlab(paste('Mean coverage [log2(x + sf)] using only groups', groups[1], 'and',
            groups[2])) + labs(title=paste('MA style plot:', groups[1], 'vs ', 
            groups[2])) + geom_hline(aes(yintercept=foldMean), data=fold.mean, 
            colour='#990000', linetype='dashed') +
        geom_smooth(aes(y=log2FoldChange, x=log2(mean)), data=subset(ma2,
            mean > 0), method = 'gam', formula = y ~ s(x, bs = 'cs'))
    print(p.ma)
}

4 Genomic overview

The following plots were made using ggbio (Yin, Cook, and Lawrence, 2012) which in turn uses ggplot2 (Wickham, 2016). For more details check plotOverview in derfinder (Collado-Torres, Nellore, Frazee et al., 2017).

4.1 FDR adjusted P-value

plotOverview(regions=fullRegions, type=pvalVar, base_size=overviewParams$base_size, areaRel=overviewParams$areaRel, legend.position=c(0.97, 0.12))

This plot shows the genomic locations of the candidate regions found in the analysis. The significant regions (FDR adjusted P-value less than 0.1) are highlighted and the area of the regions is shown on top of each chromosome. Note that the area is in a relative scale.

4.2 Annotation

plotOverview(regions=fullRegions, annotation=fullRegions, type='annotation', base_size=overviewParams$base_size, areaRel=overviewParams$areaRel, legend.position=c(0.97, 0.12))

This genomic overview plot shows the annotation region type for the candidate regions. Note that the regions are shown only if the annotation information is available. Below is a table of the actual number of results per annotation region type.

annoReg <- table(fullRegions$region, useNA='always')
annoReg.df <- data.frame(Region=names(annoReg), Count=as.vector(annoReg))
if(outputIsHTML) {
    kable(annoReg.df, format = 'markdown', align=rep('c', 3))
} else {
    kable(annoReg.df)
}
Region Count
upstream 0
promoter 0
overlaps 5’ 0
inside 33
overlaps 3’ 0
close to 3’ 0
downstream 0
covers 0
NA 0

4.3 Annotation (significant)

plotOverview(regions=fullRegions[idx.sig], annotation=fullRegions[idx.sig], type='annotation', base_size=overviewParams$base_size, areaRel=overviewParams$areaRel, legend.position=c(0.97, 0.12))

This genomic overview plot shows the annotation region type for the candidate regions that have a FDR adjusted P-valueless than 0.1. Note that the regions are shown only if the annotation information is available.

5 Best regions

5.1 Plots

Below are the plots for the top 15 candidate DERs as ranked by area. For each plot, annotation is shown if the candidate DER has a minimum overlap of 20 base pairs with annotation information (strand specific). If present, exons are collapsed and shown in blue. Introns are shown in light blue. The title of each plot is composed of the name of the nearest annotation element, the distance to it, and whether the region of the genome the DER falls into; all three pieces of information are based on bumphunter::matchGenes().

The annotation depends on the Genomic State used. For details on which one was used for this report check the call to mergeResults in the reproducibility details.

if(nBestRegions > 0) {
    plotRegionCoverage(regions = fullRegions, regionCoverage = regionCoverage,
        groupInfo = optionsStats$groupInfo, nearestAnnotation = regions.df,
        annotatedRegions = fullAnnotatedRegions, 
        whichRegions = seq_len(min(nBestRegions, length(fullRegions))),
        colors = NULL, scalefac = optionsStats$scalefac, ask = FALSE, 
        verbose = TRUE, txdb = txdb) 
}
## 2024-12-12 21:47:36.575058 plotRegionCoverage: extracting Tx info
## 2024-12-12 21:47:39.095461 plotRegionCoverage: getting Tx plot info

5.2 Genomic states

Below is a table summarizing the number of genomic states per region.

info <- do.call(rbind, lapply(fullAnnotatedRegions$countTable, function(x) { data.frame(table(x)) }))
colnames(info) <- c('Number of Overlapping States', 'Frequency')
info$State <- gsub('\\..*', '', rownames(info))
rownames(info) <- NULL
if(outputIsHTML) {
    kable(info, format = 'markdown', align=rep('c', 4))
} else {
    kable(info)
}
Number of Overlapping States Frequency State
0 22 exon
1 11 exon
0 33 intergenic
0 30 intron
1 3 intron

The following is a venn diagram showing how many regions overlap known exons, introns, and intergenic segments, none of them, or multiple of these groups.

## Venn diagram for all regions
venn <- vennRegions(fullAnnotatedRegions, counts.col = 'blue', 
    main = 'Regions overlapping genomic states')

The following plot is the genomic states venn diagram only for the significant regions.

## Venn diagram for all regions
vennSig <- vennRegions(fullAnnotatedRegions, counts.col = 'blue', 
    main = 'Significant regions overlapping genomic states',
    subsetIndex = idx.sig)

5.3 Region information

Below is an interactive table with the top 33 regions (out of 33) as ranked by area. Inf and -Inf are shown as 1e100 and -1e100 respectively. Use the search function to find your region of interest or sort by one of the columns.

topArea <- head(regions.df, nBestRegions * 5)
topArea <- data.frame('areaRank'=order(topArea$area, decreasing=TRUE), topArea)
## Clean up -Inf, Inf if present
## More details at https://github.com/ramnathv/rCharts/issues/259
replaceInf <- function(df, colsubset=seq_len(ncol(df))) {
    for(i in colsubset) {
        inf.idx <- !is.finite(df[, i])
        if(any(inf.idx)) {
            inf.sign <- sign(df[inf.idx, i])
            df[inf.idx, i] <- inf.sign * 1e100
        }
    }
    return(df)
}
topArea <- replaceInf(topArea, grep('log2FoldChange|value|area',
    colnames(topArea)))

## Format p-values in scientific notation
for(i in which(grepl('pvalues$|qvalues$|fwer$', colnames(topArea)))) topArea[, i] <- format(topArea[, i], scientific = TRUE)

## Make the table
if(outputIsHTML) {
    datatable(topArea, options = list(pagingType='full_numbers', pageLength=10, scrollX='100%'), rownames = FALSE) %>% formatRound(which(grepl('value$|area$|mean|log2FoldChange', colnames(topArea))), digits)
} else {
    ## Only print the top part if your output is a PDF file
    df_top <- head(topArea, 20)
    for(i in which(grepl('value$|area$|mean|log2FoldChange', colnames(topArea)))) df_top[, i] <- round(df_top[, i], digits)
    kable(df_top)
}

6 Best region clusters

The following plots were made using ggbio (Yin, Cook, and Lawrence, 2012) which in turn uses ggplot2 (Wickham, 2016). For more details check plotCluster() in derfinder (Collado-Torres, Nellore, Frazee et al., 2017).

6.1 Plots

## Select clusters by cluster area
df <- data.frame(area = fullRegions$area,
    clusterChr = paste0(as.integer(fullRegions$cluster), 
    chr = as.character(seqnames(fullRegions))))
regionClustAreas <- tapply(df$area, df$clusterChr, sum)
bestArea <- sapply(names(head(sort(regionClustAreas, decreasing=TRUE),
    nBestClusters)), function(y) { which(df$clusterChr == y)[[1]]})

## Graphical setup: ideograms 
if(hg19 & is.null(p.ideos)) {
    ## Load ideogram info
    data(hg19IdeogramCyto, package = 'biovizBase')
    ideos.set <- as.character(unique(seqnames(fullRegions[bestArea])))
    p.ideos <- lapply(ideos.set, function(xx) { 
        plotIdeogram(hg19IdeogramCyto, mapSeqlevels(xx, 'UCSC'))
    })
    names(p.ideos) <- ideos.set
} else {
    stopifnot(!is.null(p.ideos))
}

## Graphical setup: main plotting function
regionClusterPlot <- function(idx, tUse='qval') {
    ## Chr specific selections
    chr <- as.character(seqnames(fullRegions[idx]))
    p.ideo <- p.ideos[[chr]]
    covInfo <- fullCov[[chr]]
    
    ## Make the plot
    p <- plotCluster(idx, regions = fullRegions, annotation = regions.df,
        coverageInfo = covInfo, groupInfo = optionsStats$groupInfo,
        titleUse = tUse, txdb = txdb, p.ideogram = p.ideo)
    print(p)
    rm(p.ideo, covInfo)
    
    return(invisible(TRUE))
}

Below are the best 2 region clusters ordered by cluster area (sum of the area of regions inside a cluster). The region with the highest area in the cluster is shown with a red bar.

## Genome plots
for(idx in bestArea) {
    regionClusterPlot(idx, ifelse(nullExist, ifelse(pvalVar == 'fwer', ifelse(fwerExist, 'fwer', 'qval'), pvalVar), 'none'))
}

7 Permutations

Below is the information on how the samples were permuted.

7.1 Summary

## Get the permutation information
nSamples <- seq_len(length(optionsStats$groupInfo))
permuteInfo <- lapply(seeds, function(x) {
    set.seed(x)
    idx <- sample(nSamples)
    data.frame(optionsStats$groupInfo[idx])
})
permuteInfo <- cbind(data.frame(optionsStats$groupInfo), do.call(cbind, permuteInfo))
colnames(permuteInfo) <- c('original', paste0('perm', seq_len(optionsStats$nPermute)))
## The raw information
# permuteInfo

n <- names(table(permuteInfo[, 2]))
permuteDetail <- data.frame(matrix(NA, nrow=optionsStats$nPermute * length(n),
    ncol = 2 + length(n)))
permuteDetail[, 1] <- rep(seq_len(optionsStats$nPermute), each=length(n))
permuteDetail[, 2] <- rep(n, optionsStats$nPermute)
colnames(permuteDetail) <- c('permutation', 'group', as.character(n))
l <- 1
m <- 3:ncol(permuteDetail)
for(j in n) {
    k <- which(permuteInfo[, 1] == j)
    for(i in 2:(optionsStats$nPermute + 1)) {
        permuteDetail[l, m] <- table(permuteInfo[k, i])
        l <- l + 1
    }
}

## How many permutations resulted in the original grouping rearrangement
obs <- diag(length(m)) * sapply(
    permuteDetail$group[ permuteDetail$permutation == 1], function(n) {
  sum(optionsStats$groupInfo == n)
})
sameAsObs <- sapply(seq_len(length(seeds)), function(i) {
    p <- as.matrix(permuteDetail[permuteDetail$permutation == i, m])
    all((p - obs) == 0)
})

## Print the summary
summary(permuteDetail[, m])
##       CEU             YRI   
##  Min.   : 7.00   Min.   :3  
##  1st Qu.: 8.75   1st Qu.:4  
##  Median :10.50   Median :5  
##  Mean   :10.50   Mean   :5  
##  3rd Qu.:12.25   3rd Qu.:6  
##  Max.   :14.00   Max.   :7

This table shows the summary per group of how many samples were assigned to the group. It can be used for fast detection of anomalies. Also note that 0 permutations out of 1 total permutations resulted in the same grouping as in the original observed data.

Note that in derfinder the re-sampling of the samples is done without replacement. This is done to avoid singular model matrices. While the sample balance is the same across the permutations, what changes are the adjusted variables (including the column medians).

7.2 Interactive

The following table shows how the group labels were permuted. This can be useful to detect whether a permutation in particular had too many samples of a group labeled as another group, meaning that the resulting permuted group label resulted in pretty much a name change.

if(outputIsHTML) {
    datatable(permuteDetail, options = list(pagingType='full_numbers', pageLength=10, scrollX='100%'))
} else {
    ## Only print the top part if your output is a PDF file
    kable(head(permuteDetail, 20))
}

8 Reproducibility

8.1 General information

The F-statistic cutoff used was 1 and type of cutoff used was manual. Furthermore, the maximum region (data) gap was set to and the maximum cluster gap was set to .

8.2 Details

This analysis was on each chromosome was performed with the following call to analyzeChr() (shown for one chromosome only):

## analyzeChr(chr = "21", coverageInfo = genomeData, models = models, 
##     cutoffFstat = 1, cutoffType = "manual", seeds = 20140330, 
##     groupInfo = groupInfo, writeOutput = TRUE, mc.cores = 1, 
##     returnOutput = FALSE)

The results were merged using the following call to mergeResults():

## mergeResults(chrs = "21", prefix = "derfinderReport-example", 
##     genomicState = genomicState$fullGenome)

This report was generated in path /__w/regionReport/regionReport/docs/reference using the following call to derfinderReport():

## derfinderReport(prefix = "derfinderReport-example", browse = FALSE, 
##     nBestRegions = 15, makeBestClusters = TRUE, fullCov = list(`21` = genomeDataRaw$coverage), 
##     optionsStats = optionsStats)

Date the report was generated.

## [1] "2024-12-12 21:47:55 UTC"

Wallclock time spent generating the report.

## Time difference of 30.622 secs

R session information.

## ─ Session info ───────────────────────────────────────────────────────────────────────────────────────────────────────
##  setting  value
##  version  R version 4.4.2 (2024-10-31)
##  os       Ubuntu 24.04.1 LTS
##  system   x86_64, linux-gnu
##  ui       X11
##  language en
##  collate  C
##  ctype    en_US.UTF-8
##  tz       UTC
##  date     2024-12-12
##  pandoc   3.5 @ /usr/bin/ (via rmarkdown)
## 
## ─ Packages ───────────────────────────────────────────────────────────────────────────────────────────────────────────
##  package                           * version   date (UTC) lib source
##  abind                               1.4-8     2024-09-12 [1] RSPM (R 4.4.0)
##  annotate                            1.84.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  AnnotationDbi                     * 1.68.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  AnnotationFilter                    1.30.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  backports                           1.5.0     2024-05-23 [1] RSPM (R 4.4.0)
##  base64enc                           0.1-3     2015-07-28 [2] RSPM (R 4.4.0)
##  bibtex                              0.5.1     2023-01-26 [1] RSPM (R 4.4.0)
##  Biobase                           * 2.66.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  BiocFileCache                       2.14.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  BiocGenerics                      * 0.52.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  BiocIO                              1.16.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  BiocManager                         1.30.25   2024-08-28 [2] CRAN (R 4.4.2)
##  BiocParallel                      * 1.40.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  BiocStyle                         * 2.34.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  biomaRt                             2.62.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  Biostrings                          2.74.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  biovizBase                        * 1.54.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  bit                                 4.5.0.1   2024-12-03 [1] RSPM (R 4.4.0)
##  bit64                               4.5.2     2024-09-22 [1] RSPM (R 4.4.0)
##  bitops                              1.0-9     2024-10-03 [1] RSPM (R 4.4.0)
##  blob                                1.2.4     2023-03-17 [1] RSPM (R 4.4.0)
##  bookdown                            0.41      2024-10-16 [1] RSPM (R 4.4.0)
##  BSgenome                            1.74.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  bslib                               0.8.0     2024-07-29 [2] RSPM (R 4.4.0)
##  bumphunter                          1.48.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  cachem                              1.1.0     2024-05-16 [2] RSPM (R 4.4.0)
##  checkmate                           2.3.2     2024-07-29 [1] RSPM (R 4.4.0)
##  cli                                 3.6.3     2024-06-21 [2] RSPM (R 4.4.0)
##  cluster                             2.1.8     2024-12-11 [3] RSPM (R 4.4.0)
##  codetools                           0.2-20    2024-03-31 [3] CRAN (R 4.4.2)
##  colorspace                          2.1-1     2024-07-26 [1] RSPM (R 4.4.0)
##  crayon                              1.5.3     2024-06-20 [2] RSPM (R 4.4.0)
##  crosstalk                           1.2.1     2023-11-23 [1] RSPM (R 4.4.0)
##  curl                                6.0.1     2024-11-14 [2] RSPM (R 4.4.0)
##  data.table                          1.16.4    2024-12-06 [1] RSPM (R 4.4.0)
##  DBI                                 1.2.3     2024-06-02 [1] RSPM (R 4.4.0)
##  dbplyr                              2.5.0     2024-03-19 [1] RSPM (R 4.4.0)
##  DEFormats                           1.34.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  DelayedArray                        0.32.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  derfinder                         * 1.40.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  derfinderHelper                     1.40.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  derfinderPlot                     * 1.40.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  desc                                1.4.3     2023-12-10 [2] RSPM (R 4.4.0)
##  DESeq2                            * 1.46.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  devtools                            2.4.5     2022-10-11 [2] RSPM (R 4.4.0)
##  DEXSeq                            * 1.52.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  dichromat                           2.0-0.1   2022-05-02 [1] RSPM (R 4.4.0)
##  digest                              0.6.37    2024-08-19 [2] RSPM (R 4.4.0)
##  doRNG                               1.8.6     2023-01-16 [1] RSPM (R 4.4.0)
##  downlit                             0.4.4     2024-06-10 [2] RSPM (R 4.4.0)
##  dplyr                               1.1.4     2023-11-17 [1] RSPM (R 4.4.0)
##  DT                                * 0.33      2024-04-04 [1] RSPM (R 4.4.0)
##  edgeR                               4.4.1     2024-12-02 [1] Bioconductor 3.20 (R 4.4.2)
##  ellipsis                            0.3.2     2021-04-29 [2] RSPM (R 4.4.0)
##  ensembldb                           2.30.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  evaluate                            1.0.1     2024-10-10 [2] RSPM (R 4.4.0)
##  fansi                               1.0.6     2023-12-08 [2] RSPM (R 4.4.0)
##  farver                              2.1.2     2024-05-13 [1] RSPM (R 4.4.0)
##  fastmap                             1.2.0     2024-05-15 [2] RSPM (R 4.4.0)
##  filelock                            1.0.3     2023-12-11 [1] RSPM (R 4.4.0)
##  foreach                             1.5.2     2022-02-02 [1] RSPM (R 4.4.0)
##  foreign                             0.8-87    2024-06-26 [3] CRAN (R 4.4.2)
##  Formula                             1.2-5     2023-02-24 [1] RSPM (R 4.4.0)
##  fs                                  1.6.5     2024-10-30 [2] RSPM (R 4.4.0)
##  genefilter                          1.88.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  geneplotter                         1.84.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  generics                            0.1.3     2022-07-05 [1] RSPM (R 4.4.0)
##  GenomeInfoDb                      * 1.42.1    2024-11-28 [1] Bioconductor 3.20 (R 4.4.2)
##  GenomeInfoDbData                    1.2.13    2024-12-10 [1] Bioconductor
##  GenomicAlignments                   1.42.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  GenomicFeatures                   * 1.58.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  GenomicFiles                        1.42.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  GenomicRanges                     * 1.58.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  GGally                              2.2.1     2024-02-14 [1] RSPM (R 4.4.0)
##  ggbio                             * 1.54.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  ggplot2                           * 3.5.1     2024-04-23 [1] RSPM (R 4.4.0)
##  ggstats                             0.7.0     2024-09-22 [1] RSPM (R 4.4.0)
##  glue                                1.8.0     2024-09-30 [2] RSPM (R 4.4.0)
##  graph                               1.84.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  gridExtra                         * 2.3       2017-09-09 [1] RSPM (R 4.4.0)
##  gtable                              0.3.6     2024-10-25 [1] RSPM (R 4.4.0)
##  Hmisc                               5.2-1     2024-12-02 [1] RSPM (R 4.4.0)
##  hms                                 1.1.3     2023-03-21 [1] RSPM (R 4.4.0)
##  htmlTable                           2.4.3     2024-07-21 [1] RSPM (R 4.4.0)
##  htmltools                           0.5.8.1   2024-04-04 [2] RSPM (R 4.4.0)
##  htmlwidgets                         1.6.4     2023-12-06 [2] RSPM (R 4.4.0)
##  httpuv                              1.6.15    2024-03-26 [2] RSPM (R 4.4.0)
##  httr                                1.4.7     2023-08-15 [1] RSPM (R 4.4.0)
##  httr2                               1.0.7     2024-11-26 [2] RSPM (R 4.4.0)
##  hwriter                             1.3.2.1   2022-04-08 [1] RSPM (R 4.4.0)
##  IRanges                           * 2.40.1    2024-12-05 [1] Bioconductor 3.20 (R 4.4.2)
##  iterators                           1.0.14    2022-02-05 [1] RSPM (R 4.4.0)
##  jquerylib                           0.1.4     2021-04-26 [2] RSPM (R 4.4.0)
##  jsonlite                            1.8.9     2024-09-20 [2] RSPM (R 4.4.0)
##  KEGGREST                            1.46.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  knitr                             * 1.49      2024-11-08 [2] RSPM (R 4.4.0)
##  knitrBootstrap                      1.0.3     2024-02-06 [1] RSPM (R 4.4.0)
##  labeling                            0.4.3     2023-08-29 [1] RSPM (R 4.4.0)
##  later                               1.4.1     2024-11-27 [2] RSPM (R 4.4.0)
##  lattice                             0.22-6    2024-03-20 [3] CRAN (R 4.4.2)
##  lazyeval                            0.2.2     2019-03-15 [1] RSPM (R 4.4.0)
##  lifecycle                           1.0.4     2023-11-07 [2] RSPM (R 4.4.0)
##  limma                               3.62.1    2024-11-03 [1] Bioconductor 3.20 (R 4.4.2)
##  locfit                              1.5-9.10  2024-06-24 [1] RSPM (R 4.4.0)
##  lubridate                           1.9.4     2024-12-08 [1] RSPM (R 4.4.0)
##  magrittr                            2.0.3     2022-03-30 [2] RSPM (R 4.4.0)
##  markdown                            1.13      2024-06-04 [1] RSPM (R 4.4.0)
##  Matrix                              1.7-1     2024-10-18 [3] CRAN (R 4.4.2)
##  MatrixGenerics                    * 1.18.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  matrixStats                       * 1.4.1     2024-09-08 [1] RSPM (R 4.4.0)
##  memoise                             2.0.1     2021-11-26 [2] RSPM (R 4.4.0)
##  mgcv                              * 1.9-1     2023-12-21 [3] CRAN (R 4.4.2)
##  mime                                0.12      2021-09-28 [2] RSPM (R 4.4.0)
##  miniUI                              0.1.1.1   2018-05-18 [2] RSPM (R 4.4.0)
##  munsell                             0.5.1     2024-04-01 [1] RSPM (R 4.4.0)
##  nlme                              * 3.1-166   2024-08-14 [3] CRAN (R 4.4.2)
##  nnet                                7.3-19    2023-05-03 [3] CRAN (R 4.4.2)
##  OrganismDbi                         1.48.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  pasilla                           * 1.34.0    2024-11-05 [1] Bioconductor 3.20 (R 4.4.2)
##  pheatmap                          * 1.0.12    2019-01-04 [1] RSPM (R 4.4.0)
##  pillar                              1.9.0     2023-03-22 [2] RSPM (R 4.4.0)
##  pkgbuild                            1.4.5     2024-10-28 [2] RSPM (R 4.4.0)
##  pkgconfig                           2.0.3     2019-09-22 [2] RSPM (R 4.4.0)
##  pkgdown                             2.1.1     2024-09-17 [2] RSPM (R 4.4.0)
##  pkgload                             1.4.0     2024-06-28 [2] RSPM (R 4.4.0)
##  plyr                                1.8.9     2023-10-02 [1] RSPM (R 4.4.0)
##  png                                 0.1-8     2022-11-29 [1] RSPM (R 4.4.0)
##  prettyunits                         1.2.0     2023-09-24 [2] RSPM (R 4.4.0)
##  profvis                             0.4.0     2024-09-20 [2] RSPM (R 4.4.0)
##  progress                            1.2.3     2023-12-06 [1] RSPM (R 4.4.0)
##  promises                            1.3.2     2024-11-28 [2] RSPM (R 4.4.0)
##  ProtGenerics                        1.38.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  purrr                               1.0.2     2023-08-10 [2] RSPM (R 4.4.0)
##  qvalue                              2.38.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  R6                                  2.5.1     2021-08-19 [2] RSPM (R 4.4.0)
##  ragg                                1.3.3     2024-09-11 [2] RSPM (R 4.4.0)
##  rappdirs                            0.3.3     2021-01-31 [2] RSPM (R 4.4.0)
##  RBGL                                1.82.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  RColorBrewer                      * 1.1-3     2022-04-03 [1] RSPM (R 4.4.0)
##  Rcpp                                1.0.13-1  2024-11-02 [2] RSPM (R 4.4.0)
##  RCurl                               1.98-1.16 2024-07-11 [1] RSPM (R 4.4.0)
##  RefManageR                          1.4.0     2022-09-30 [1] RSPM (R 4.4.0)
##  regionReport                      * 1.41.0    2024-12-12 [1] Bioconductor
##  remotes                             2.5.0     2024-03-17 [1] RSPM (R 4.4.0)
##  reshape2                            1.4.4     2020-04-09 [1] RSPM (R 4.4.0)
##  restfulr                            0.0.15    2022-06-16 [1] RSPM (R 4.4.0)
##  rjson                               0.2.23    2024-09-16 [1] RSPM (R 4.4.0)
##  rlang                               1.1.4     2024-06-04 [2] RSPM (R 4.4.0)
##  rmarkdown                           2.29      2024-11-04 [2] RSPM (R 4.4.0)
##  rngtools                            1.5.2     2021-09-20 [1] RSPM (R 4.4.0)
##  rpart                               4.1.23    2023-12-05 [3] CRAN (R 4.4.2)
##  Rsamtools                           2.22.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  RSQLite                             2.3.9     2024-12-03 [1] RSPM (R 4.4.0)
##  rstudioapi                          0.17.1    2024-10-22 [2] RSPM (R 4.4.0)
##  rtracklayer                         1.66.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  S4Arrays                            1.6.0     2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  S4Vectors                         * 0.44.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  sass                                0.4.9     2024-03-15 [2] RSPM (R 4.4.0)
##  scales                              1.3.0     2023-11-28 [1] RSPM (R 4.4.0)
##  sessioninfo                       * 1.2.2     2021-12-06 [2] RSPM (R 4.4.0)
##  shiny                               1.9.1     2024-08-01 [2] RSPM (R 4.4.0)
##  SparseArray                         1.6.0     2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  statmod                             1.5.0     2023-01-06 [1] RSPM (R 4.4.0)
##  stringi                             1.8.4     2024-05-06 [2] RSPM (R 4.4.0)
##  stringr                             1.5.1     2023-11-14 [2] RSPM (R 4.4.0)
##  SummarizedExperiment              * 1.36.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  survival                            3.7-0     2024-06-05 [3] CRAN (R 4.4.2)
##  systemfonts                         1.1.0     2024-05-15 [2] RSPM (R 4.4.0)
##  textshaping                         0.4.1     2024-12-06 [2] RSPM (R 4.4.0)
##  tibble                              3.2.1     2023-03-20 [2] RSPM (R 4.4.0)
##  tidyr                               1.3.1     2024-01-24 [1] RSPM (R 4.4.0)
##  tidyselect                          1.2.1     2024-03-11 [1] RSPM (R 4.4.0)
##  timechange                          0.3.0     2024-01-18 [1] RSPM (R 4.4.0)
##  TxDb.Hsapiens.UCSC.hg19.knownGene * 3.2.2     2024-06-24 [1] Bioconductor
##  txdbmaker                           1.2.1     2024-11-25 [1] Bioconductor 3.20 (R 4.4.2)
##  UCSC.utils                          1.2.0     2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  urlchecker                          1.0.1     2021-11-30 [2] RSPM (R 4.4.0)
##  usethis                             3.1.0     2024-11-26 [2] RSPM (R 4.4.0)
##  utf8                                1.2.4     2023-10-22 [2] RSPM (R 4.4.0)
##  VariantAnnotation                   1.52.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  vctrs                               0.6.5     2023-12-01 [2] RSPM (R 4.4.0)
##  whisker                             0.4.1     2022-12-05 [2] RSPM (R 4.4.0)
##  withr                               3.0.2     2024-10-28 [2] RSPM (R 4.4.0)
##  xfun                                0.49      2024-10-31 [2] RSPM (R 4.4.0)
##  XML                                 3.99-0.17 2024-06-25 [1] RSPM (R 4.4.0)
##  xml2                                1.3.6     2023-12-04 [2] RSPM (R 4.4.0)
##  xtable                              1.8-4     2019-04-21 [2] RSPM (R 4.4.0)
##  XVector                             0.46.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
##  yaml                                2.3.10    2024-07-26 [2] RSPM (R 4.4.0)
##  zlibbioc                            1.52.0    2024-10-29 [1] Bioconductor 3.20 (R 4.4.2)
## 
##  [1] /__w/_temp/Library
##  [2] /usr/local/lib/R/site-library
##  [3] /usr/local/lib/R/library
## 
## ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Pandoc version used: 3.5.

9 Bibliography

This report was created with regionReport (Collado-Torres, Jaffe, and Leek, 2016) using rmarkdown (Allaire, Xie, Dervieux et al., 2024) while knitr (Xie, 2014) and DT (Xie, Cheng, and Tan, 2024) were running behind the scenes.

Citations made with RefManageR (McLean, 2017). The BibTeX file can be found here.

[1] J. Allaire, Y. Xie, C. Dervieux, et al. rmarkdown: Dynamic Documents for R. R package version 2.29. 2024. URL: https://github.com/rstudio/rmarkdown.

[2] L. Collado-Torres, A. E. Jaffe, and J. T. Leek. “regionReport: Interactive reports for region-level and feature-level genomic analyses [version2; referees: 2 approved, 1 approved with reservations]”. In: F1000Research 4 (2016), p. 105. DOI: 10.12688/f1000research.6379.2. URL: http://f1000research.com/articles/4-105/v2.

[3] L. Collado-Torres, A. Nellore, A. C. Frazee, et al. “Flexible expressed region analysis for RNA-seq with derfinder”. In: Nucl. Acids Res. (2017). DOI: 10.1093/nar/gkw852. URL: http://nar.oxfordjournals.org/content/early/2016/09/29/nar.gkw852.

[4] M. W. McLean. “RefManageR: Import and Manage BibTeX and BibLaTeX References in R”. In: The Journal of Open Source Software (2017). DOI: 10.21105/joss.00338.

[5] H. Wickham. ggplot2: Elegant Graphics for Data Analysis. Springer-Verlag New York, 2016. ISBN: 978-3-319-24277-4. URL: https://ggplot2.tidyverse.org.

[6] Y. Xie. “knitr: A Comprehensive Tool for Reproducible Research in R”. In: Implementing Reproducible Computational Research. Ed. by V. Stodden, F. Leisch and R. D. Peng. ISBN 978-1466561595. Chapman and Hall/CRC, 2014.

[7] Y. Xie, J. Cheng, and X. Tan. DT: A Wrapper of the JavaScript Library ‘DataTables’. R package version 0.33. 2024. URL: https://github.com/rstudio/DT.

[8] T. Yin, D. Cook, and M. Lawrence. “ggbio: an R package for extending the grammar of graphics for genomic data”. In: Genome Biology 13.8 (2012), p. R77.