3  Quality control and filtering

This chapter explains how to use SingleMoleculeGenomicsIO to filter single molecule footprinting data. The package contains functionality to calculate a collection of quality statistics for each read, and use these to filter out low-quality reads. This filtering can be done either on the imported SummarizedExperiment object (both for modBam and mismatchBam file types), or directly on the bam file (currently only modBam, which will generate another, filtered modBam file). SingleMoleculeGenomicsIO also provides several ways to filter out individual genomic positions based on, e.g. the genomic sequence or the read coverage.

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

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

library(SingleMoleculeGenomicsIO)
library(BSgenomeName, character.only = TRUE)
library(SummarizedExperiment)
library(SparseArray)

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

3.1 Position filtering

To illustrate the position-level filtering of imported data, we first read 6mA data from a small genomic region for two samples. We add the sequence context (a single nucleotide) to be able to use this information as a basis for filtering.

Show/hide code
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
)
se
class: RangedSummarizedExperiment 
dim: 31693 2 
metadata(3): readLevelData variantPositions filteredOutReads
assays(1): mod_prob
rownames: NULL
rowData names(1): sequenceContext
colnames(2): wt1 wt2
colData names(4): sample modbase n_reads readInfo

The sequence information is stored in the rowData of se:

Show/hide code
rowData(se)
DataFrame with 31693 rows and 1 column
      sequenceContext
       <DNAStringSet>
1                   A
2                   A
3                   G
4                   A
5                   A
...               ...
31689               A
31690               A
31691               A
31692               A
31693               A

Position filtering can now be performed with the filterPositions function. The filters argument define which filters to apply, as well as the order (sequence context, coverage, removal of positions without non-NA values). Here, we retain only positions where the genome sequence is an A, and the coverage (the number of overlapping reads) is at least five. The assayNameCov argument indicates which assay will be used to define the coverage. If this is a read-level assay (like here), coverage will first be calculated using flattenReadLevelAssay. For more precise control, the summary assay can also be manually calculated and added to se beforehand, and specified in assayNameCov.

Show/hide code
sefilt <- filterPositions(
    se, 
    filters = c("sequenceContext", "coverage", "all.na"),
    sequenceContext = "A",
    assayNameCov = "mod_prob",
    minCov = 5
)
sefilt
class: RangedSummarizedExperiment 
dim: 16729 2 
metadata(3): readLevelData variantPositions filteredOutReads
assays(1): mod_prob
rownames: NULL
rowData names(1): sequenceContext
colnames(2): wt1 wt2
colData names(4): sample modbase n_reads readInfo

In this case, the position filtering reduced the number of unique positions from 31693 to 16729 by 47.2%. However, the number of non-NA values in the matrix is only reduced from 333127 to 304984 (8.4%), confirming that the filtered-out positions are generally covered only by few reads.

In addition to explicit filtering shown above, several functions in SingleMoleculeGenomicsIO and footprintR allow on-the-fly filtering for a specific sequence context (for example calcReadStats or plotRegion).

3.2 Read filtering

3.2.1 Filtering a SummarizedExperiment object

In addition to the position filtering illustrated above, SingleMoleculeGenomicsIO also provides functionality for calculating read-level quality scores and filtering out reads with low quality. The calculation of the quality scores is done using the addReadStats function, and the filtering is performed via the filterReads function.

Show/hide code
# Calculate read statistics
sefilt <- addReadStats(
    sefilt, 
    name = "QC"
)

# The calculated read statistics are stored in the colData
colData(sefilt)
DataFrame with 2 rows and 5 columns
         sample     modbase   n_reads                                                                    readInfo
    <character> <character> <integer>                                                                      <List>
wt1         wt1           a        41 14.1235:22453:22149:...,15.9814:15617:15460:...,14.3505:12359:12212:...,...
wt2         wt2           a        67 15.5769:39918:39406:...,15.4317:23376:23207:...,16.8065:23487:23313:...,...
                                                                                                  QC
                                                                                              <List>
wt1 0.194044:0.186071:0.932636:...,0.157727:0.144965:0.947031:...,0.189361:0.176007:0.940345:...,...
wt2 0.217511:0.202377:0.941197:...,0.232775:0.221732:0.940212:...,0.161989:0.146135:0.947654:...,...
Show/hide code
sefilt$QC$wt1
DataFrame with 41 rows and 13 columns
                                         MeanModProb   FracMod  MeanConf MeanConfUnm MeanConfMod FracLowConf IQRModProb
                                           <numeric> <numeric> <numeric>   <numeric>   <numeric>   <numeric>  <numeric>
wt1-5e78b10b-3b62-4d92-ae96-18aae3e13ae3    0.194044 0.1860714  0.932636    0.953720    0.840406   0.0864286  0.2324219
wt1-d0e863ae-8127-4233-9eaa-3c17d2af3df5    0.157727 0.1449649  0.947031    0.961562    0.861322   0.0658080  0.1074219
wt1-b1e35af5-efa1-4451-8870-0ccdee17c5c0    0.189361 0.1760073  0.940345    0.955699    0.868468   0.0702817  0.1855469
wt1-a89d3c9f-fdba-4e41-a4ef-b810a166d46c    0.092727 0.0762226  0.959181    0.968973    0.840501   0.0458685  0.0000000
wt1-b58992e1-d311-49d7-bf22-81fd390687b5    0.111052 0.0816633  0.935930    0.949115    0.787661   0.0731463  0.0996094
...                                              ...       ...       ...         ...         ...         ...        ...
wt1-a39caa23-800a-4e69-a56e-4e020e83c306    0.103593 0.0862342  0.964059    0.970835    0.892256   0.0332278  0.0527344
wt1-b6efe1fe-f2b9-4f69-bb61-f4a741969a52    0.143284 0.1231672  0.919949    0.942881    0.756696   0.1070381  0.1542969
wt1-d0b3f6f8-c5d3-477e-b4c4-02dcd4602767    0.149654 0.1382212  0.956477    0.968115    0.883916   0.0456731  0.0800781
wt1-3d7ab39b-23d7-420d-8261-f0fff0569e84    0.195087 0.1826625  0.942946    0.957497    0.877836   0.0722394  0.1816406
wt1-b754e197-532c-4782-9e91-22e8c58b6db6    0.184400 0.1745763  0.947155    0.962038    0.876782   0.0601695  0.1513672
                                         sdModProb                               ACModProb
                                         <numeric>                                  <list>
wt1-5e78b10b-3b62-4d92-ae96-18aae3e13ae3  0.329855       0.0908535,0.0468121,0.0501233,...
wt1-d0e863ae-8127-4233-9eaa-3c17d2af3df5  0.308085       0.0842872,0.0846944,0.0641687,...
wt1-b1e35af5-efa1-4451-8870-0ccdee17c5c0  0.332203  0.04668755, 0.03179627,-0.00729562,...
wt1-a89d3c9f-fdba-4e41-a4ef-b810a166d46c  0.233053  0.04755155, 0.02123325,-0.00550823,...
wt1-b58992e1-d311-49d7-bf22-81fd390687b5  0.228051 -0.00865141, 0.01936452, 0.01258930,...
...                                            ...                                     ...
wt1-a39caa23-800a-4e69-a56e-4e020e83c306  0.256209    -0.0442483,-0.0664415,-0.0791683,...
wt1-b6efe1fe-f2b9-4f69-bb61-f4a741969a52  0.258013       0.1143637,0.0983527,0.0838372,...
wt1-d0b3f6f8-c5d3-477e-b4c4-02dcd4602767  0.308975     0.0474403,-0.0330583,-0.0253474,...
wt1-3d7ab39b-23d7-420d-8261-f0fff0569e84  0.341323    -0.0811299,-0.0642624,-0.0958239,...
wt1-b754e197-532c-4782-9e91-22e8c58b6db6  0.335256       -0.077225,-0.119359,-0.131436,...
                                                                      PACModProb         SNR SignalVar  NoiseVar
                                                                          <list>   <numeric> <numeric> <numeric>
wt1-5e78b10b-3b62-4d92-ae96-18aae3e13ae3    -0.0372147, 0.0052070,-0.0149203,...  0.15120358 0.0572504 0.0515539
wt1-d0e863ae-8127-4233-9eaa-3c17d2af3df5  0.02170916,-0.00333282,-0.01792930,... -0.00904029 0.0473096 0.0476070
wt1-b1e35af5-efa1-4451-8870-0ccdee17c5c0    -0.0031751,-0.0432073,-0.0319139,...  0.03159991 0.0557838 0.0545752
wt1-a89d3c9f-fdba-4e41-a4ef-b810a166d46c -0.02789056,-0.03286089, 0.00103895,...  0.24072350 0.0294171 0.0248963
wt1-b58992e1-d311-49d7-bf22-81fd390687b5    0.02233742,0.00779054,0.01249628,... -0.41498682 0.0222892 0.0297179
...                                                                          ...         ...       ...       ...
wt1-a39caa23-800a-4e69-a56e-4e020e83c306    -0.0391629,-0.0370244,-0.0125482,...  0.44897184 0.0378878 0.0277553
wt1-b6efe1fe-f2b9-4f69-bb61-f4a741969a52  0.01864350, 0.00968442,-0.04217918,... -0.42904071 0.0283721 0.0381984
wt1-d0b3f6f8-c5d3-477e-b4c4-02dcd4602767    -0.0804097,-0.0110440,-0.0389122,...  0.28448715 0.0524237 0.0430416
wt1-3d7ab39b-23d7-420d-8261-f0fff0569e84    -0.0328237,-0.0444207,-0.0324546,...  0.00281814 0.0583075 0.0581937
wt1-b754e197-532c-4782-9e91-22e8c58b6db6    -0.0731008,-0.0485207,-0.0638214,...  0.37076865 0.0633803 0.0490164
Show/hide code
# In addition, we can filter based on the read info columns added by readModBam
sefilt$readInfo$wt1
DataFrame with 41 rows and 6 columns
                                            qscore read_length aligned_length variant_label  ref_strand
                                         <numeric>   <integer>      <integer>   <character> <character>
wt1-5e78b10b-3b62-4d92-ae96-18aae3e13ae3   14.1235       22453          22149            NA           +
wt1-d0e863ae-8127-4233-9eaa-3c17d2af3df5   15.9814       15617          15460            NA           -
wt1-b1e35af5-efa1-4451-8870-0ccdee17c5c0   14.3505       12359          12212            NA           -
wt1-a89d3c9f-fdba-4e41-a4ef-b810a166d46c   16.6668        8845           8769            NA           +
wt1-b58992e1-d311-49d7-bf22-81fd390687b5   12.0795        6779           6601            NA           +
...                                            ...         ...            ...           ...         ...
wt1-a39caa23-800a-4e69-a56e-4e020e83c306   17.9399        9022           6511            NA           -
wt1-b6efe1fe-f2b9-4f69-bb61-f4a741969a52   13.5355        6586           3588            NA           +
wt1-d0b3f6f8-c5d3-477e-b4c4-02dcd4602767   16.6164        8536           4455            NA           -
wt1-3d7ab39b-23d7-420d-8261-f0fff0569e84   14.3454        7815           5147            NA           -
wt1-b754e197-532c-4782-9e91-22e8c58b6db6   15.2163       15363           6143            NA           -
                                         aligned_fraction
                                                <numeric>
wt1-5e78b10b-3b62-4d92-ae96-18aae3e13ae3         0.986461
wt1-d0e863ae-8127-4233-9eaa-3c17d2af3df5         0.989947
wt1-b1e35af5-efa1-4451-8870-0ccdee17c5c0         0.988106
wt1-a89d3c9f-fdba-4e41-a4ef-b810a166d46c         0.991408
wt1-b58992e1-d311-49d7-bf22-81fd390687b5         0.973742
...                                                   ...
wt1-a39caa23-800a-4e69-a56e-4e020e83c306         0.721680
wt1-b6efe1fe-f2b9-4f69-bb61-f4a741969a52         0.544792
wt1-d0b3f6f8-c5d3-477e-b4c4-02dcd4602767         0.521907
wt1-3d7ab39b-23d7-420d-8261-f0fff0569e84         0.658605
wt1-b754e197-532c-4782-9e91-22e8c58b6db6         0.399857
Show/hide code
# Visualize the read statistics to set appropriate filter thresholds
plotReadStats(
    sefilt
)

# Perform filtering
sefilt <- filterReads(
    sefilt,
    minQscore = 13,
    maxFracLowConf = 0.1,
    minAlignedLength = 5000, 
    removeAllNApos = TRUE
)
Figure 3.1

Filtering statistics are stored in the metadata of the filtered SummarizedExperiment object.

Show/hide code
metadata(sefilt)$filteredOutReads
$wt1
<12 x 9 SparseMatrix> of type "logical" [nzcount=16 (15%)]:
                                                  Qscore         Entropy     FracLowConf ... CoveredFraction
wt1-b58992e1-d311-49d7-bf22-81fd390687b5            TRUE           FALSE           FALSE   .           FALSE
wt1-e145db43-4658-4dcc-8f58-78fb09544770            TRUE           FALSE            TRUE   .           FALSE
wt1-eac97b86-e3fc-4d19-8a02-08bd861077b5            TRUE           FALSE           FALSE   .           FALSE
wt1-e06432c5-189d-4c1c-8a5b-025c2d68fee5            TRUE           FALSE            TRUE   .           FALSE
wt1-5a2f30be-48c9-4b0a-8ab1-83d54c71ef56           FALSE           FALSE           FALSE   .           FALSE
                                     ...               .               .               .   .               .
wt1-fac12814-a86d-4d07-9596-d9ea4943580e           FALSE           FALSE           FALSE   .           FALSE
wt1-f77f5ae9-dd3a-4e08-a390-7e80868433a7            TRUE           FALSE            TRUE   .           FALSE
wt1-fda332ae-02de-4391-9cff-620c1ae8799f           FALSE           FALSE           FALSE   .           FALSE
wt1-b6efe1fe-f2b9-4f69-bb61-f4a741969a52           FALSE           FALSE            TRUE   .           FALSE
wt1-d0b3f6f8-c5d3-477e-b4c4-02dcd4602767           FALSE           FALSE           FALSE   .           FALSE
                                                   AllNA
wt1-b58992e1-d311-49d7-bf22-81fd390687b5           FALSE
wt1-e145db43-4658-4dcc-8f58-78fb09544770           FALSE
wt1-eac97b86-e3fc-4d19-8a02-08bd861077b5           FALSE
wt1-e06432c5-189d-4c1c-8a5b-025c2d68fee5           FALSE
wt1-5a2f30be-48c9-4b0a-8ab1-83d54c71ef56           FALSE
                                     ...               .
wt1-fac12814-a86d-4d07-9596-d9ea4943580e           FALSE
wt1-f77f5ae9-dd3a-4e08-a390-7e80868433a7           FALSE
wt1-fda332ae-02de-4391-9cff-620c1ae8799f           FALSE
wt1-b6efe1fe-f2b9-4f69-bb61-f4a741969a52           FALSE
wt1-d0b3f6f8-c5d3-477e-b4c4-02dcd4602767           FALSE

$wt2
<4 x 9 SparseMatrix> of type "logical" [nzcount=4 (11%)]:
                                                  Qscore         Entropy     FracLowConf ... CoveredFraction
wt2-d428b49f-a652-42f3-a614-f4b431b8d024            TRUE           FALSE           FALSE   .           FALSE
wt2-16d5f3d1-6ca4-448a-8d99-3b5c85f9b518           FALSE           FALSE           FALSE   .           FALSE
wt2-8cf9d87a-3c82-4e3e-baf3-352b645b8b71           FALSE           FALSE           FALSE   .           FALSE
wt2-1ddb16c7-dc0a-4ca8-a0c4-602e021561e2           FALSE           FALSE           FALSE   .           FALSE
                                                   AllNA
wt2-d428b49f-a652-42f3-a614-f4b431b8d024           FALSE
wt2-16d5f3d1-6ca4-448a-8d99-3b5c85f9b518           FALSE
wt2-8cf9d87a-3c82-4e3e-baf3-352b645b8b71           FALSE
wt2-1ddb16c7-dc0a-4ca8-a0c4-602e021561e2           FALSE

3.2.2 Filtering a modBam file

As mentioned above, SingleMoleculeGenomicsIO can also be used to directly filter alignments in a modBam file. The filterReadsModBam function reads the alignments in the input file, parses them, and writes them to the output file if they pass all the designated filters. These filters are treated hierarchically - in other words, if a read does not pass a given filter, the remaining filters will not be examined and the processing continues with the next read. Here we illustrate the modBam filtering using two small example modBam files, each with 10 reads.

Show/hide code
# input files
modbamfiles <- c("data/6mA_1_10reads.bam", "data/6mA_2_10reads.bam")

# output files
filtbamfiles <- sub("\\.bam", "_filtered.bam", modbamfiles)

res <- filterReadsModBam(
    infiles = modbamfiles,
    outfiles = filtbamfiles,
    modbase = "a",
    indexOutfiles = FALSE,
    minReadLength = 6746,
    minAlignedLength = 6896,
    minAlignedFraction = 0.56,
    minQscore = 9.7,
    maxFracLowConf = 0.11,
    maxEntropy = 0.29,
    verbose = TRUE)
ℹ start filtering of 'data/6mA_1_10reads.bam' using 4 threads
ℹ merging 62 filtered chunks
ℹ done filtering: retained 7 of 10 records (70%)
ℹ start filtering of 'data/6mA_2_10reads.bam' using 4 threads
ℹ merging 62 filtered chunks
ℹ done filtering: retained 7 of 10 records (70%)

The res object provides details about the number of reads that were filtered out at each stage.

Show/hide code
res
  sample                 infile                         outfile total retained filtered_unmapped filtered_secondary
1     s1 data/6mA_1_10reads.bam data/6mA_1_10reads_filtered.bam    10        7                 0                  0
2     s2 data/6mA_2_10reads.bam data/6mA_2_10reads_filtered.bam    10        7                 0                  0
  filtered_supplementary filtered_minReadLength filtered_minAlignedLength filtered_minAlignedFraction
1                      0                      0                         1                           1
2                      0                      1                         0                           0
  filtered_minQscore filtered_minSNR filtered_maxFracLowConf filtered_maxEntropy
1                  0               0                       0                   1
2                  1               0                       1                   0

3.3 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.1)
 Biobase                                      * 2.70.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 BiocGenerics                                 * 0.56.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 BiocIO                                       * 1.20.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 BiocParallel                                   1.44.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 Biostrings                                   * 2.78.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 bitops                                         1.0-9     2024-10-03 [1] CRAN (R 4.5.1)
 BSgenome                                     * 1.78.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 BSgenome.Mmusculus.GENCODE.GRCm39.gencodeM34 * 0.1.0     2025-10-31 [1] Bioconductor
 cigarillo                                      1.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 cli                                            3.6.5     2025-04-23 [1] CRAN (R 4.5.1)
 codetools                                      0.2-20    2024-03-31 [2] CRAN (R 4.5.2)
 crayon                                         1.5.3     2024-06-20 [1] CRAN (R 4.5.1)
 curl                                           7.0.0     2025-08-19 [1] CRAN (R 4.5.1)
 data.table                                     1.18.0    2025-12-24 [1] CRAN (R 4.5.2)
 DelayedArray                                   0.36.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 dichromat                                      2.0-0.1   2022-05-02 [1] CRAN (R 4.5.1)
 digest                                         0.6.39    2025-11-19 [1] CRAN (R 4.5.2)
 dplyr                                          1.1.4     2023-11-17 [1] CRAN (R 4.5.1)
 evaluate                                       1.0.5     2025-08-27 [1] CRAN (R 4.5.1)
 farver                                         2.1.2     2024-05-13 [1] CRAN (R 4.5.1)
 fastmap                                        1.2.0     2024-05-15 [1] CRAN (R 4.5.1)
 generics                                     * 0.1.4     2025-05-09 [1] CRAN (R 4.5.1)
 GenomeInfoDb                                 * 1.46.2    2025-12-04 [1] Bioconductor 3.22 (R 4.5.2)
 GenomicAlignments                              1.46.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 GenomicRanges                                * 1.62.1    2025-12-08 [1] Bioconductor 3.22 (R 4.5.2)
 ggplot2                                        4.0.1     2025-11-14 [1] CRAN (R 4.5.2)
 glue                                           1.8.0     2024-09-30 [1] CRAN (R 4.5.1)
 gtable                                         0.3.6     2024-10-25 [1] CRAN (R 4.5.1)
 htmltools                                      0.5.9     2025-12-04 [1] CRAN (R 4.5.2)
 htmlwidgets                                    1.6.4     2023-12-06 [1] CRAN (R 4.5.1)
 httr                                           1.4.7     2023-08-15 [1] CRAN (R 4.5.1)
 IRanges                                      * 2.44.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 jsonlite                                       2.0.0     2025-03-27 [1] CRAN (R 4.5.1)
 knitr                                          1.51      2025-12-20 [1] CRAN (R 4.5.2)
 labeling                                       0.4.3     2023-08-29 [1] CRAN (R 4.5.1)
 lattice                                        0.22-7    2025-04-02 [2] CRAN (R 4.5.2)
 lifecycle                                      1.0.5     2026-01-08 [1] CRAN (R 4.5.2)
 magrittr                                       2.0.4     2025-09-12 [1] CRAN (R 4.5.1)
 Matrix                                       * 1.7-4     2025-08-28 [2] CRAN (R 4.5.2)
 MatrixGenerics                               * 1.22.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 matrixStats                                  * 1.5.0     2025-01-07 [1] CRAN (R 4.5.1)
 otel                                           0.2.0     2025-08-29 [1] CRAN (R 4.5.1)
 pillar                                         1.11.1    2025-09-17 [1] CRAN (R 4.5.1)
 pkgconfig                                      2.0.3     2019-09-22 [1] CRAN (R 4.5.1)
 purrr                                          1.2.1     2026-01-09 [1] CRAN (R 4.5.2)
 R6                                             2.6.1     2025-02-15 [1] CRAN (R 4.5.1)
 RColorBrewer                                   1.1-3     2022-04-03 [1] CRAN (R 4.5.1)
 Rcpp                                           1.1.1     2026-01-10 [1] CRAN (R 4.5.2)
 RCurl                                          1.98-1.17 2025-03-22 [1] CRAN (R 4.5.1)
 restfulr                                       0.0.16    2025-06-27 [1] CRAN (R 4.5.1)
 rjson                                          0.2.23    2024-09-16 [1] CRAN (R 4.5.1)
 rlang                                          1.1.7     2026-01-09 [1] CRAN (R 4.5.2)
 rmarkdown                                      2.30      2025-09-28 [1] CRAN (R 4.5.1)
 Rsamtools                                      2.26.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 rtracklayer                                  * 1.70.1    2025-12-22 [1] Bioconductor 3.22 (R 4.5.2)
 S4Arrays                                     * 1.10.1    2025-12-02 [1] Github (Bioconductor/S4Arrays@a4cccba)
 S4Vectors                                    * 0.48.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 S7                                             0.2.1     2025-11-14 [1] CRAN (R 4.5.2)
 scales                                         1.4.0     2025-04-24 [1] CRAN (R 4.5.1)
 Seqinfo                                      * 1.0.0     2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 sessioninfo                                    1.2.3     2025-02-05 [1] CRAN (R 4.5.1)
 SingleMoleculeGenomicsIO                     * 0.1.0     2026-01-19 [1] Bioconductor
 SparseArray                                  * 1.10.8    2025-12-18 [1] Bioconductor 3.22 (R 4.5.2)
 SummarizedExperiment                         * 1.40.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 tibble                                         3.3.1     2026-01-11 [1] CRAN (R 4.5.2)
 tidyr                                          1.3.2     2025-12-19 [1] CRAN (R 4.5.2)
 tidyselect                                     1.2.1     2024-03-11 [1] CRAN (R 4.5.1)
 UCSC.utils                                     1.6.1     2025-12-11 [1] Bioconductor 3.22 (R 4.5.2)
 vctrs                                          0.7.1     2026-01-23 [1] CRAN (R 4.5.2)
 withr                                          3.0.2     2024-10-28 [1] CRAN (R 4.5.1)
 xfun                                           0.56      2026-01-18 [1] CRAN (R 4.5.2)
 XML                                            3.99-0.20 2025-11-08 [1] CRAN (R 4.5.2)
 XVector                                      * 0.50.0    2025-10-29 [1] Bioconductor 3.22 (R 4.5.1)
 yaml                                           2.3.12    2025-12-10 [1] CRAN (R 4.5.2)

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

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