4  Visualizing regions with plotRegion

The plotRegion function in footprintR provides a flexible interface for plotting data in a given genomic region. As will be illustrated below, both read-level data, summary-level data (aggregating across all reads overlapping a position) and data from BigWig files can visualized. In addition, predefined regions can be highlighted with background color in any track, and gene models or any other genomic region indicators can be added.

Generally, plotRegion builds up a plot as a combination of individual tracks, of different types (representing the different data types mentioned above). To add a track to a plot, at least the corresponding trackType and trackData arguments must be specified. A list of the supported track types is available in the documentation of plotRegion (see the tracks argument). The order and content of the tracks are fully customizable by the user.

4.1 Preparation

We start by loading the required packages. In addition to the software package, we load a BSgenome and TxDb object providing the mouse genome sequence and transcript annotation.

Show/hide code
BSgenomeName <- "BSgenome.Mmusculus.GENCODE.GRCm39.gencodeM34"
TxDbName <- "TxDb.Mmusculus.GENCODE.GRCm39.gencodeM34"

library(BiocParallel)
library(footprintR)
library(ggplot2)
library(patchwork)
library(GenomicRanges)
library(BSgenomeName, character.only = TRUE)
library(TxDbName, character.only = TRUE)

# Load genome
gnm <- get(BSgenomeName)
genome(gnm) <- "mm39"

# Load TxDb and create GRangesList with transcript annotations
txdb <- get(TxDbName)
ebt <- exonsBy(txdb, "tx", use.names = TRUE)

4.2 Read data

To exemplify the plotting capabilities of plotRegion, we use modBam files from two wild-type samples, for which 6mA modification calling has been performed. We use the readModBam function to read data from an 800-bp region on chromosome 8 and store it in a SummarizedExperiment object. For more information about reading data with footprintR, see Chapter 2.

Show/hide code
# Read data 
se <- readModBam(
    bamfiles = c(wt1 = "data/mESC_wt_6mA_rep1.bam",
                 wt2 = "data/mESC_wt_6mA_rep2.bam"),
    modbase = "a", 
    regions = "chr8:39286301-39287100", 
    seqinfo = seqinfo(gnm), 
    sequenceContextWidth = 1, 
    sequenceReference = gnm
)

4.3 Read-level plots

Read-level plots can be generated using either the Heatmap or the Lollipop track type, assuming that there is at least one assay with read-level data present in the provided SummarizedExperiment object. The heatmap visualizes each base with a modification call as a filled rectangle, with optional interpolation between observations. The lollipop plot visualizes each base with a modification call as a filled circle. In both cases, the fill color represents the recorded modification probability of the base. For the read-level plot tracks, the trackData argument specifies the name of the (read-level) assay that should be displayed.

Show/hide code
plotRegion(
    se, 
    region = "chr8:39286600-39286800", 
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob"),
        list(trackType = "Lollipop", trackData = "mod_prob")
    )
)
Figure 4.1

In the current plot, reads on both strands are visualized, and can be distinguished based on the position of the modified bases (the As). It is possible to visualize only the reads on one strand, by providing a stranded region to plotRegion.

Show/hide code
plotRegion(
    se, 
    region = "chr8:39286600-39286800:+", 
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob"),
        list(trackType = "Lollipop", trackData = "mod_prob")
    )
)
Figure 4.2

Moreover, we can limit the display to only positions where the annotated genome has a given sequence (here, an A). This is often helpful to minimize the impact of base calling errors.

Show/hide code
plotRegion(
    se, 
    region = "chr8:39286600-39286800:+", 
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob"),
        list(trackType = "Lollipop", trackData = "mod_prob")
    ), 
    sequenceContext = "A"
)
Figure 4.3

Each plot function comes with a set of arguments that can be used to control the way that data is displayed in the track (see the documentation of plotRegion for the full list). For example, we can add interpolation to our heatmap, disable the automatic clustering of the reads, and add custom track and legend titles. For the lollipop plot, we can similarly change the size of the circles and the linewidth of the circle outline.

Show/hide code
plotRegion(
    se, 
    region = "chr8:39286600-39286800",
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = TRUE, orderReads = NULL, trackTitle = "Heatmap",
             legendTitle = "6mA"),
        list(trackType = "Lollipop", trackData = "mod_prob",
             orderReads = NULL, trackTitle = "Lollipop",
             legendTitle = "6mA", size = 2, stroke = 0.1)
    ), 
    sequenceContext = "A"
)
Figure 4.4

Additional customization options for read-level plots include the possibility to change the color scheme, set the order of the reads, and restricting the set of visualized reads to those that cover a certain fraction of the plot region. Below, we use a ‘inferno’ color scale for the heatmap, and a gradient from white to blue for the lollipop plot. In addition, we order the reads by the average modification fraction across the region (orderReads = "regionAvg"), and exclude any reads that don’t cover at least 95% of the plotted region (minCoveredFraction = 0.95).

Show/hide code
plotRegion(
    se, 
    region = "chr8:39286600-39286800",
    minCoveredFraction = 0.95,
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = TRUE, orderReads = "regionAvg", trackTitle = "Heatmap",
             legendTitle = "6mA", fillColors = "-inferno"),
        list(trackType = "Lollipop", trackData = "mod_prob",
             orderReads = "regionAvg", trackTitle = "Lollipop",
             legendTitle = "6mA", size = 2, stroke = 0.1, 
             fillColors = c("white", "blue"))
    ), 
    sequenceContext = "A"
)
Figure 4.5

In the plot above, the reads were ordered by the average signal across the entire plotted region. It is also possible to order (or cluster) reads based on the signal in a smaller region, by specifying the orderRegion argument. As an example, we order the reads by the average signal across only the last 20 nucleotides of the plotted region.

Show/hide code
plotRegion(
    se, 
    region = "chr8:39286600-39286800",
    minCoveredFraction = 0.95,
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = TRUE, orderReads = "regionAvg", 
             orderRegion = as("chr8:39286780-39286800", "GRanges"), 
             trackTitle = "Heatmap",
             legendTitle = "6mA", fillColors = "-inferno"),
        list(trackType = "Lollipop", trackData = "mod_prob",
             orderReads = "regionAvg", 
             orderRegion = as("chr8:39286780-39286800", "GRanges"), 
             trackTitle = "Lollipop",
             legendTitle = "6mA", size = 2, stroke = 0.1, 
             fillColors = c("white", "blue"))
    ), 
    sequenceContext = "A"
)
Figure 4.6

By default, read-level tracks are facetted by sample (the columns of se). We can facet by an arbitrary column of colData(se) by changing the value of the facetBy argument for the track, or set the argument to NULL to disable the facetting and show reads from all samples together.

Show/hide code
plotRegion(
    se, 
    region = "chr8:39286600-39286800",
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = TRUE, orderReads = NULL, trackTitle = "Heatmap",
             legendTitle = "6mA", facetBy = NULL),
        list(trackType = "Lollipop", trackData = "mod_prob",
             orderReads = NULL, trackTitle = "Lollipop",
             legendTitle = "6mA", size = 2, stroke = 0.1,
             facetBy = "modbase")
    ), 
    sequenceContext = "A"
)
Figure 4.7

By default, the x-axis of the plots represent genomic coordinates. In some cases (especially if the modified bases are unevenly distributed), the plot may be easier to read if only the modified bases are displayed, evenly spaced along the x-axis. This can be achieved by setting modbaseSpace = TRUE in plotRegion.

Show/hide code
plotRegion(
    se, 
    region = "chr8:39286600-39286800",
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = FALSE, orderReads = NULL, trackTitle = "Heatmap",
             legendTitle = "6mA"),
        list(trackType = "Lollipop", trackData = "mod_prob",
             orderReads = NULL, trackTitle = "Lollipop",
             legendTitle = "6mA", size = 2, stroke = 0.1)
    ), 
    sequenceContext = "A",
    modbaseSpace = TRUE
)
Figure 4.8

Another alternative is to anchor the x-axis at a given genomic position, and display the coordinates as distances from this anchor point. This is achieved by setting the referenceCoordinate argument to the numeric position that should be used as the anchor. Note how the x-axis title changes to reflect the current coordinate system.

Show/hide code
plotRegion(
    se, 
    region = "chr8:39286600-39286800",
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = TRUE, orderReads = NULL, trackTitle = "Heatmap",
             legendTitle = "6mA"),
        list(trackType = "Lollipop", trackData = "mod_prob",
             orderReads = NULL, trackTitle = "Lollipop",
             legendTitle = "6mA", size = 2, stroke = 0.1)
    ), 
    sequenceContext = "A",
    referenceCoordinate = 39286700
)
Figure 4.9

As plotRegion returns a patchwork/ggplot2 object, even finer control over the plot components is possible. For example, you may want to change the number of ticks on the x axis, which is controlled by ggplot2’s scale_x_continuous(). Changing the x axis scale will throw a warning because by adding the scale_x_continuous(), you are replacing the existing default x axis scale.

Note that if you are plotting multiple tracks with plotRegion, you need to add scale_x_continuous() using the * or & operator from the patchwork package, instead of ggplot2’s usual + operator. This will make sure that the plot element (here the new x axis scale) is added to all tracks instead of just the last one:

Show/hide code
plotRegion(
    se, 
    region = "chr8:39286600-39286800",
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = TRUE, orderReads = NULL, trackTitle = "Heatmap",
             legendTitle = "6mA"),
        list(trackType = "Lollipop", trackData = "mod_prob",
             orderReads = NULL, trackTitle = "Lollipop",
             legendTitle = "6mA", size = 2, stroke = 0.1)
    ), 
    sequenceContext = "A",
    referenceCoordinate = 39286700
) * scale_x_continuous(n.breaks = 3)
Scale for x is already present.
Adding another scale for x, which will replace the existing scale.
Scale for x is already present.
Adding another scale for x, which will replace the existing scale.
Figure 4.10

4.4 Summary-level plots

In addition to read-level plots, plotRegion can also display summary-level data (a single value per genomic position and sample), if they are present in the SummarizedExperiment object. These values can be displayed as individual points, and/or with a smooth curve. Summary-level assays can be generated from read-level values using, e.g., the flattenReadLevelAssay function.

Show/hide code
# Flatten read-level assay
se <- flattenReadLevelAssay(
    se, 
    assayName = "mod_prob",
    statistics = c("Nmod", "Nvalid", "FracMod")
)

# Add summary-level track
plotRegion(
    se, 
    region = as("chr8:39286300-39287100", "GRanges"), 
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = TRUE, orderReads = NULL, 
             legendTitle = "6mA"),
        list(trackType = "Smooth", trackData = "FracMod")
    ), 
    sequenceContext = "A"
) + 
    plot_layout(heights = c(2, 1))
Figure 4.11

In an analogous way to the read-level plots, we can control the display of summary information using the arguments to PlotSummaryPointSmooth (see documentation for plotRegion). For example, we can change the smoothing function and the degree of smoothing. We can also add the individual points (summary values for individual positions) to the summary plot.

Show/hide code
# Add summary-level plot
plotRegion(
    se, 
    region = as("chr8:39286300-39287100", "GRanges"), 
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = TRUE, orderReads = NULL, 
             legendTitle = "6mA"),
        list(trackType = "PointSmooth", trackData = "FracMod", 
             arglistPoint = list(size = 1, alpha = 0.25),
             smoothMethod = "rollingMean", windowSize = 15,
             arglistSmooth = list(linewidth = 1))
    ), 
    sequenceContext = "A"
) + 
    plot_layout(heights = c(2, 1))
Figure 4.12

4.5 Highlight regions

Sometimes it is helpful to be able to highlight specific genomic regions in the plots. These could be, for example, regions that have been identified as harboring an interesting signal. In plotRegion, this can be achieved via the highlightRegions argument to the respective tracks. The input provided to this argument should be a GRanges object.

Show/hide code
# Define regions to highlight
reg_to_highlight <- GRanges(
    seqnames = "chr8",
    ranges = IRanges(
        start = c(39286800, 39286950),
        end = c(39286900, 39287000)
    )
)

plotRegion(
    se, 
    region = as("chr8:39286300-39287100", "GRanges"), 
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = TRUE, orderReads = NULL, 
             legendTitle = "6mA"),
        list(trackType = "PointSmooth", trackData = "FracMod", 
             arglistPoint = list(size = 1, alpha = 0.25),
             smoothMethod = "rollingMean", windowSize = 15,
             arglistSmooth = list(linewidth = 1),
             highlightRegions = reg_to_highlight)
    ), 
    sequenceContext = "A"
) + 
    plot_layout(heights = c(2, 1))
Figure 4.13

4.6 Annotation tracks

To further relate the observed data to existing annotations, plotRegion also allows the user to add one or several tracks representing genomic regions (e.g., gene models). Here, we exemplify how to generate such a track to visualize annotated transcripts in the displayed region.

Show/hide code
# Read data from a different region than above (as the previous one does not 
# overlap annotated genes)
se <- readModBam(
    bamfiles = c(wt1 = "data/mESC_wt_6mA_rep1.bam",
                 wt2 = "data/mESC_wt_6mA_rep2.bam"),
    modbase = "a", 
    regions = "chr8:39126917-39128220", 
    seqinfo = seqinfo(gnm), 
    sequenceContextWidth = 1, 
    sequenceReference = gnm
)
se <- flattenReadLevelAssay(
    se, 
    assayName = "mod_prob",
    statistics = c("Nmod", "Nvalid", "FracMod")
)

plotRegion(
    se, 
    region = as("chr8:39126917-39128220", "GRanges"), 
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = TRUE, orderReads = NULL, 
             legendTitle = "6mA"),
        list(trackType = "GenomicRegion", 
             trackData = subsetByOverlaps(ebt, as("chr8:39126917-39128220", "GRanges"))),
        list(trackType = "PointSmooth", trackData = "FracMod", 
             arglistPoint = list(size = 1, alpha = 0.25),
             smoothMethod = "rollingMean", windowSize = 15,
             arglistSmooth = list(linewidth = 1))
    ), 
    sequenceContext = "A"
) + 
    plot_layout(heights = c(2, 1, 1))
Figure 4.14

4.7 BigWig tracks

Finally, plotRegion allows the user to include tracks defined by arbitrary BigWig files. Here, we illustrate this by adding a track containing the coverage obtained from a CTCF ChIP-seq experiment. We also modify the colors used to display the summary-level data.

Show/hide code
plotRegion(
    se, 
    region = as("chr8:39126917-39128220", "GRanges"), 
    tracks = list(
        list(trackType = "Heatmap", trackData = "mod_prob", 
             interpolate = TRUE, orderReads = NULL, 
             legendTitle = "6mA"),
        list(trackType = "GenomicRegion", 
             trackData = subsetByOverlaps(ebt, as("chr8:39126917-39128220", "GRanges"))),
        list(trackType = "BigWig", trackData = c(wt = "data/mESC_wt_CTCF_ChIP_rep1.bw"),
             yAxisLabel = "CTCF", showLegend = FALSE,
             colors = c(wt = "forestgreen")),
        list(trackType = "PointSmooth", trackData = "FracMod", 
             arglistPoint = list(size = 1, alpha = 0.25),
             smoothMethod = "rollingMean", windowSize = 15,
             arglistSmooth = list(linewidth = 1),
             colors = c(wt1 = "steelblue", wt2 = "firebrick2"))
    ), 
    sequenceContext = "A"
) + 
    plot_layout(heights = c(2, 1, 0.5, 1))
Figure 4.15

4.8 Session info

Click to view session info
Show/hide code
sessioninfo::session_info(info = "packages")
═ Session info ═══════════════════════════════════════════════════════════════
─ Packages ───────────────────────────────────────────────────────────────────
 package                                      * version   date (UTC) lib source
 abind                                          1.4-8     2024-09-12 [1] CRAN (R 4.5.0)
 AnnotationDbi                                * 1.70.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 Biobase                                      * 2.68.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 BiocGenerics                                 * 0.54.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 BiocIO                                       * 1.18.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 BiocParallel                                 * 1.42.1    2025-06-01 [1] Bioconductor 3.21 (R 4.5.0)
 Biostrings                                   * 2.76.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 bit                                            4.6.0     2025-03-06 [1] CRAN (R 4.5.0)
 bit64                                          4.6.0-1   2025-01-16 [1] CRAN (R 4.5.0)
 bitops                                         1.0-9     2024-10-03 [1] CRAN (R 4.5.0)
 blob                                           1.2.4     2023-03-17 [1] CRAN (R 4.5.0)
 BSgenome                                     * 1.76.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 BSgenome.Mmusculus.GENCODE.GRCm39.gencodeM34 * 0.1.0     2025-04-17 [1] Bioconductor
 cachem                                         1.1.0     2024-05-16 [1] CRAN (R 4.5.0)
 cli                                            3.6.5     2025-04-23 [1] CRAN (R 4.5.0)
 codetools                                      0.2-20    2024-03-31 [2] CRAN (R 4.5.0)
 crayon                                         1.5.3     2024-06-20 [1] CRAN (R 4.5.0)
 curl                                           6.4.0     2025-06-22 [1] CRAN (R 4.5.0)
 data.table                                     1.17.8    2025-07-10 [1] CRAN (R 4.5.0)
 DBI                                            1.2.3     2024-06-02 [1] CRAN (R 4.5.0)
 DelayedArray                                   0.34.1    2025-04-17 [1] Bioconductor 3.21 (R 4.5.0)
 dichromat                                      2.0-0.1   2022-05-02 [1] CRAN (R 4.5.0)
 digest                                         0.6.37    2024-08-19 [1] CRAN (R 4.5.0)
 dplyr                                          1.1.4     2023-11-17 [1] CRAN (R 4.5.0)
 evaluate                                       1.0.4     2025-06-18 [1] CRAN (R 4.5.0)
 farver                                         2.1.2     2024-05-13 [1] CRAN (R 4.5.0)
 fastmap                                        1.2.0     2024-05-15 [1] CRAN (R 4.5.0)
 footprintR                                   * 0.3.6     2025-07-30 [1] Bioconductor
 generics                                     * 0.1.4     2025-05-09 [1] CRAN (R 4.5.0)
 GenomeInfoDb                                 * 1.44.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 GenomeInfoDbData                               1.2.14    2025-04-17 [1] Bioconductor
 GenomicAlignments                              1.44.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 GenomicFeatures                              * 1.60.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 GenomicRanges                                * 1.60.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 ggforce                                        0.5.0     2025-06-18 [1] CRAN (R 4.5.0)
 ggplot2                                      * 3.5.2     2025-04-09 [1] CRAN (R 4.5.0)
 glue                                           1.8.0     2024-09-30 [1] CRAN (R 4.5.0)
 gtable                                         0.3.6     2024-10-25 [1] CRAN (R 4.5.0)
 htmltools                                      0.5.8.1   2024-04-04 [1] CRAN (R 4.5.0)
 htmlwidgets                                    1.6.4     2023-12-06 [1] CRAN (R 4.5.0)
 httr                                           1.4.7     2023-08-15 [1] CRAN (R 4.5.0)
 IRanges                                      * 2.42.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 jsonlite                                       2.0.0     2025-03-27 [1] CRAN (R 4.5.0)
 KEGGREST                                       1.48.1    2025-06-22 [1] Bioconductor 3.21 (R 4.5.0)
 knitr                                          1.50      2025-03-16 [1] CRAN (R 4.5.0)
 labeling                                       0.4.3     2023-08-29 [1] CRAN (R 4.5.0)
 lattice                                        0.22-7    2025-04-02 [1] CRAN (R 4.5.0)
 lifecycle                                      1.0.4     2023-11-07 [1] CRAN (R 4.5.0)
 magrittr                                       2.0.3     2022-03-30 [1] CRAN (R 4.5.0)
 MASS                                           7.3-65    2025-02-28 [2] CRAN (R 4.5.0)
 Matrix                                         1.7-3     2025-03-11 [2] CRAN (R 4.5.0)
 MatrixGenerics                                 1.20.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 matrixStats                                    1.5.0     2025-01-07 [1] CRAN (R 4.5.0)
 memoise                                        2.0.1     2021-11-26 [1] CRAN (R 4.5.0)
 patchwork                                    * 1.3.1     2025-06-21 [1] CRAN (R 4.5.0)
 pillar                                         1.11.0    2025-07-04 [1] CRAN (R 4.5.0)
 pkgconfig                                      2.0.3     2019-09-22 [1] CRAN (R 4.5.0)
 png                                            0.1-8     2022-11-29 [1] CRAN (R 4.5.0)
 polyclip                                       1.10-7    2024-07-23 [1] CRAN (R 4.5.0)
 purrr                                          1.1.0     2025-07-10 [1] CRAN (R 4.5.0)
 R6                                             2.6.1     2025-02-15 [1] CRAN (R 4.5.0)
 RColorBrewer                                   1.1-3     2022-04-03 [1] CRAN (R 4.5.0)
 Rcpp                                           1.1.0     2025-07-02 [1] CRAN (R 4.5.0)
 RCurl                                          1.98-1.17 2025-03-22 [1] CRAN (R 4.5.0)
 restfulr                                       0.0.16    2025-06-27 [1] CRAN (R 4.5.0)
 rjson                                          0.2.23    2024-09-16 [1] CRAN (R 4.5.0)
 rlang                                          1.1.6     2025-04-11 [1] CRAN (R 4.5.0)
 rmarkdown                                      2.29      2024-11-04 [1] CRAN (R 4.5.0)
 Rsamtools                                      2.24.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 RSQLite                                        2.4.2     2025-07-18 [1] CRAN (R 4.5.0)
 rtracklayer                                  * 1.68.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 S4Arrays                                       1.8.1     2025-06-01 [1] Bioconductor 3.21 (R 4.5.0)
 S4Vectors                                    * 0.46.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 scales                                         1.4.0     2025-04-24 [1] CRAN (R 4.5.0)
 sessioninfo                                    1.2.3     2025-02-05 [1] CRAN (R 4.5.0)
 SparseArray                                    1.8.0     2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 SummarizedExperiment                           1.38.1    2025-04-30 [1] Bioconductor 3.21 (R 4.5.0)
 tibble                                         3.3.0     2025-06-08 [1] CRAN (R 4.5.0)
 tidyr                                          1.3.1     2024-01-24 [1] CRAN (R 4.5.0)
 tidyselect                                     1.2.1     2024-03-11 [1] CRAN (R 4.5.0)
 tweenr                                         2.0.3     2024-02-26 [1] CRAN (R 4.5.0)
 TxDb.Mmusculus.GENCODE.GRCm39.gencodeM34     * 0.1.0     2025-04-17 [1] Bioconductor
 UCSC.utils                                     1.4.0     2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 vctrs                                          0.6.5     2023-12-01 [1] CRAN (R 4.5.0)
 viridisLite                                    0.4.2     2023-05-02 [1] CRAN (R 4.5.0)
 withr                                          3.0.2     2024-10-28 [1] CRAN (R 4.5.0)
 xfun                                           0.52      2025-04-02 [1] CRAN (R 4.5.0)
 XML                                            3.99-0.18 2025-01-01 [1] CRAN (R 4.5.0)
 XVector                                      * 0.48.0    2025-04-15 [1] Bioconductor 3.21 (R 4.5.0)
 yaml                                           2.3.10    2024-07-26 [1] CRAN (R 4.5.0)
 zoo                                            1.8-14    2025-04-10 [1] CRAN (R 4.5.0)

 [1] /tungstenfs/groups/gbioinfo/Appz/R/BioC/R-4.5-release-foss-2024.05_BioC-3.21-release-foss-2024.05
 [2] /tachyon/groups/gbioinfo/Appz/easybuild/software/R/4.5.0-foss-2024.05/lib64/R/library
 * ── Packages attached to the search path.

──────────────────────────────────────────────────────────────────────────────