Contents

1 Introduction

bedbaser is an R API client for BEDbase that provides access to the BEDbase API and includes convenience functions, such as to create GRanges and GRangesList objects.

2 Install bedbaser and create a BEDbase instance

Install bedbaser using BiocManager.

if (!"BiocManager" %in% rownames(installed.packages())) {
    install.packages("BiocManager")
}
BiocManager::install("bedbaser")

Load the package and create a BEDbase instance.

library(bedbaser)

bedbase <- BEDbase()
## 20331 BED files available.

2.1 (Optional) Set the cache

Set the cache path with the argument cache_path. If cache_path is not set, bedbaser will choose the default location. bedbaser can use the same cache as bbclient available through the genomic interval machine learning toolkit geniml by setting the cache_path to the same location.

library(bedbaser)

bedbase <- BEDbase(cache_path = "/path/to/cache")

3 Convenience Functions

bedbaser includes convenience functions prefixed with bb_ to facilitate finding BED files, exploring their metadata, downloading files, and creating GRanges objects.

3.1 Find a BED file or BEDset

Use bb_list_beds() and bb_list_bedsets() to browse available resources in BEDbase. Both functions display the id and names of BED files and BEDsets. An id can be used to access a specific resource.

bb_list_beds(bedbase)
## # A tibble: 1,000 × 26
##    name         genome_alias genome_digest bed_type bed_format id    description
##    <chr>        <chr>        <chr>         <chr>    <chr>      <chr> <chr>      
##  1 encode_7040  hg38         2230c535660f… bed6+4   narrowpeak 0006… "CUX1 TF C…
##  2 encode_12401 hg38         2230c535660f… bed6+4   narrowpeak 000a… "ZBTB2 TF …
##  3 encode_12948 hg38         2230c535660f… bed6+3   broadpeak  0011… "DNase-seq…
##  4 tissue,infi… hg38         2230c535660f… bed3+0   bed        0014… ""         
##  5 encode_10146 hg38         2230c535660f… bed6+4   narrowpeak 0019… "H3K9ac Hi…
##  6 hg38.Kundaj… hg38         2230c535660f… bed3+2   bed        0019… "Defined a…
##  7 encode_4782  hg38         2230c535660f… bed6+4   narrowpeak 001d… "FASTKD2 e…
##  8 encode_14119 hg38         2230c535660f… bed6+3   broadpeak  001f… "DNase-seq…
##  9 encode_10920 hg38         2230c535660f… bed6+4   narrowpeak 0020… "ZNF621 TF…
## 10 encode_16747 hg38         2230c535660f… bed6+4   narrowpeak 002b… "POLR2A TF…
## # ℹ 990 more rows
## # ℹ 19 more variables: submission_date <chr>, last_update_date <chr>,
## #   is_universe <chr>, license_id <chr>, annotation.organism <chr>,
## #   annotation.species_id <chr>, annotation.genotype <chr>,
## #   annotation.phenotype <chr>, annotation.description <chr>,
## #   annotation.cell_type <chr>, annotation.cell_line <chr>,
## #   annotation.tissue <chr>, annotation.library_source <chr>, …
bb_list_bedsets(bedbase)
## # A tibble: 20,301 × 9
##    id          name  md5sum submission_date last_update_date description bed_ids
##    <chr>       <chr> <chr>  <chr>           <chr>            <chr>       <chr>  
##  1 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 000a10…
##  2 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 00116c…
##  3 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 00205a…
##  4 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 002f49…
##  5 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 003c20…
##  6 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 00903c…
##  7 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 00a4ac…
##  8 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 00b0c9…
##  9 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 00c021…
## 10 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 00d062…
## # ℹ 20,291 more rows
## # ℹ 2 more variables: author <chr>, source <chr>

3.2 Examine metadata

Use bb_metadata() to learn more about a BED or BEDset associated with an id.

ex_bed <- bb_example(bedbase, "bed")
md <- bb_metadata(bedbase, ex_bed$id)
head(md)
## $name
## [1] "LNCaP_AR_NSD2KO"
## 
## $genome_alias
## [1] "hg38"
## 
## $genome_digest
## [1] "2230c535660fb4774114bfa966a62f823fdb6d21acf138d4"
## 
## $bed_type
## [1] "bed3+0"
## 
## $bed_format
## [1] "bed"
## 
## $id
## [1] "233479aab145cffe46221475d5af5fae"

3.3 Show BED files in BEDset

Use bb_beds_in_bedset() to display the id of BEDs in a BEDset.

bb_beds_in_bedset(bedbase, "excluderanges")
## # A tibble: 81 × 26
##    name         genome_alias genome_digest bed_type bed_format id    description
##    <chr>        <chr>        <chr>         <chr>    <chr>      <chr> <chr>      
##  1 hg38.Kundaj… hg38         2230c535660f… bed3+2   bed        0019… Defined as…
##  2 mm10.UCSC.s… mm10         0f10d83b1050… bed3+8   bed        027d… Gaps on th…
##  3 mm9.Lareau.… mm9          <NA>          bed3+2   bed        04db… ENCODE exc…
##  4 mm39.exclud… mm39         <NA>          bed3+3   bed        0c37… Defined by…
##  5 TAIR10.UCSC… tair10       <NA>          bed3+3   bed        0f77… Gaps in th…
##  6 mm10.Lareau… mm10         0f10d83b1050… bed3+8   bed        1139… Regions of…
##  7 mm39.UCSC.s… mm39         <NA>          bed3+8   bed        18ff… Gaps betwe…
##  8 mm9.UCSC.fr… mm9          <NA>          bed3+8   bed        1ae4… Gaps betwe…
##  9 dm3.UCSC.co… dm3          <NA>          bed3+8   bed        1dab… Gaps betwe…
## 10 hg19.UCSC.c… hg19         baa91c8f6e27… bed3+8   bed        254e… Gaps betwe…
## # ℹ 71 more rows
## # ℹ 19 more variables: submission_date <chr>, last_update_date <chr>,
## #   is_universe <chr>, license_id <chr>, annotation.species_name <chr>,
## #   annotation.species_id <chr>, annotation.genotype <chr>,
## #   annotation.phenotype <chr>, annotation.description <chr>,
## #   annotation.cell_type <chr>, annotation.cell_line <chr>,
## #   annotation.tissue <chr>, annotation.library_source <chr>, …

3.4 Search for a BED file by keyword

Search for BED files by keywords. bb_bed_text_search() returns all BED files scored against a keyword query.

bb_bed_text_search(bedbase, "cancer", limit = 10)
## # A tibble: 10 × 43
##    id                   payload.species_name payload.species_id payload.genotype
##    <chr>                <chr>                <chr>              <chr>           
##  1 9455677c-9039-928b-… Homo sapiens         9606               ""              
##  2 3919e978-9020-690d-… Homo sapiens         9606               ""              
##  3 26fb0de5-5b10-9a0d-… Homo sapiens         9606               ""              
##  4 ffc1e5ac-45d9-2313-… Homo sapiens         9606               ""              
##  5 a07d627d-d3d7-cff9-… Homo sapiens         9606               ""              
##  6 f2f0eee0-0aaa-4629-… Homo sapiens         9606               ""              
##  7 cfefafeb-002e-c744-… Homo sapiens         9606               ""              
##  8 b4857063-a3fb-f9e2-… Homo sapiens         9606               ""              
##  9 e0b3c20c-f147-29d8-… Homo sapiens         9606               ""              
## 10 2f11d929-c18a-b99b-… Homo sapiens         9606               ""              
## # ℹ 39 more variables: payload.phenotype <chr>, payload.description <chr>,
## #   payload.cell_type <chr>, payload.cell_line <chr>, payload.tissue <chr>,
## #   payload.library_source <chr>, payload.assay <chr>, payload.antibody <chr>,
## #   payload.target <chr>, payload.treatment <chr>,
## #   payload.global_sample_id <chr>, payload.global_experiment_id <chr>,
## #   score <chr>, metadata.name <chr>, metadata.genome_alias <chr>,
## #   metadata.bed_type <chr>, metadata.bed_format <chr>, metadata.id <chr>, …

3.5 Import a BED into a GRanges object

Create a GRanges object with a BED id with bb_to_granges, which downloads and imports a BED file using rtracklayer.

ex_bed <- bb_example(bedbase, "bed")
head(ex_bed)
## $name
## [1] "LNCaP_AR_NSD2KO"
## 
## $genome_alias
## [1] "hg38"
## 
## $genome_digest
## [1] "2230c535660fb4774114bfa966a62f823fdb6d21acf138d4"
## 
## $bed_type
## [1] "bed3+0"
## 
## $bed_format
## [1] "bed"
## 
## $id
## [1] "233479aab145cffe46221475d5af5fae"
# Allow bedbaser to assign column names and types
bb_to_granges(bedbase, ex_bed$id, quietly = FALSE)
## 
## Attaching package: 'Biostrings'
## The following object is masked from 'package:base':
## 
##     strsplit
## 
## Attaching package: 'BiocIO'
## The following object is masked from 'package:rtracklayer':
## 
##     FileForFormat
## GRanges object with 51701 ranges and 0 metadata columns:
##           seqnames            ranges strand
##              <Rle>         <IRanges>  <Rle>
##       [1]     chr1        9998-10232      *
##       [2]     chr1     778492-778869      *
##       [3]     chr1     815471-815747      *
##       [4]     chr1     827327-827614      *
##       [5]     chr1     865483-865708      *
##       ...      ...               ...    ...
##   [51697]     chrY 11643569-11643878      *
##   [51698]     chrY 15948275-15948667      *
##   [51699]     chrY 26670300-26671222      *
##   [51700]     chrY 26671523-26671759      *
##   [51701]     chrY 56685447-56685717      *
##   -------
##   seqinfo: 97 sequences from hg38 genome; no seqlengths

For BEDX+Y formats, a named list with column types may be passed through extra_cols if the column name and type are known. Otherwise, bb_to_granges guesses the column types and assigns column names.

# Manually assign column name and type using `extra_cols`
bb_to_granges(bedbase, ex_bed$id, extra_cols = c("column_name" = "character"))

bb_to_granges automatically assigns the column names and types for broad peak and narrow peak files.

bed_id <- "bbad85f21962bb8d972444f7f9a3a932"
md <- bb_metadata(bedbase, bed_id)
head(md)
## $name
## [1] "PM_137_NPC_CTCF_ChIP"
## 
## $genome_alias
## [1] "hg38"
## 
## $genome_digest
## [1] "2230c535660fb4774114bfa966a62f823fdb6d21acf138d4"
## 
## $bed_type
## [1] "bed6+4"
## 
## $bed_format
## [1] "narrowpeak"
## 
## $id
## [1] "bbad85f21962bb8d972444f7f9a3a932"
bb_to_granges(bedbase, bed_id)
## GRanges object with 26210 ranges and 6 metadata columns:
##           seqnames            ranges strand |                   name     score
##              <Rle>         <IRanges>  <Rle> |            <character> <numeric>
##       [1]     chr1     869762-870077      * | 111-11-DSP-NPC-CTCF-..       587
##       [2]     chr1     904638-904908      * | 111-11-DSP-NPC-CTCF-..       848
##       [3]     chr1     921139-921331      * | 111-11-DSP-NPC-CTCF-..       177
##       [4]     chr1     939191-939364      * | 111-11-DSP-NPC-CTCF-..       139
##       [5]     chr1     976105-976282      * | 111-11-DSP-NPC-CTCF-..       185
##       ...      ...               ...    ... .                    ...       ...
##   [26206]     chrY 18445992-18446211      * | 111-11-DSP-NPC-CTCF-..       203
##   [26207]     chrY 18608331-18608547      * | 111-11-DSP-NPC-CTCF-..       203
##   [26208]     chrY 18669820-18670062      * | 111-11-DSP-NPC-CTCF-..       244
##   [26209]     chrY 18997783-18997956      * | 111-11-DSP-NPC-CTCF-..       191
##   [26210]     chrY 19433165-19433380      * | 111-11-DSP-NPC-CTCF-..       275
##           signalValue    pValue    qValue      peak
##             <numeric> <numeric> <numeric> <integer>
##       [1]    20.94161   58.7971   54.9321       152
##       [2]    30.90682   84.8282   80.3102       118
##       [3]     9.62671   17.7065   14.8446        69
##       [4]     8.10671   13.9033   11.1352        49
##       [5]     9.26375   18.5796   15.6985       129
##       ...         ...       ...       ...       ...
##   [26206]    10.64005   20.3549   17.4328       106
##   [26207]     8.00064   20.3991   17.4753       149
##   [26208]    12.16006   24.4764   21.4585       119
##   [26209]     8.97342   19.1163   16.2230        69
##   [26210]    12.21130   27.5139   24.4211        89
##   -------
##   seqinfo: 711 sequences (1 circular) from hg38 genome

bb_to_granges can also import big BED files.

bed_id <- "ffc1e5ac45d923135500bdd825177356"
bb_to_granges(bedbase, bed_id, "bigbed", quietly = FALSE)
## GRanges object with 300000 ranges and 6 metadata columns:
##            seqnames              ranges strand |        name     score
##               <Rle>           <IRanges>  <Rle> | <character> <integer>
##        [1]     chr1         16125-16495      * |           .         0
##        [2]     chr1       778466-778836      * |           .         0
##        [3]     chr1       827302-827672      * |           .         0
##        [4]     chr1       831317-831687      * |           .         0
##        [5]     chr1       833404-833774      * |           .         0
##        ...      ...                 ...    ... .         ...       ...
##   [299996]     chrX 155949138-155949508      * |           .         0
##   [299997]     chrX 155956062-155956432      * |           .         0
##   [299998]     chrX 155980144-155980514      * |           .         0
##   [299999]     chrX 155995383-155995753      * |           .         0
##   [300000]     chrX 156001705-156002075      * |           .         0
##                      field8      field9           field10     field11
##                 <character> <character>       <character> <character>
##        [1] 16.3207258990882          -1 0.854018473960329         185
##        [2]  24.351219597285          -1  1.45742438962178         185
##        [3] 9.91444319802196          -1 0.374586115852685         185
##        [4] 10.1721186217002          -1 0.393410941697021         185
##        [5] 12.8366426014557          -1 0.589311857454583         185
##        ...              ...         ...               ...         ...
##   [299996] 10.2287080749905          -1 0.396322586637046         185
##   [299997] 13.2124210374009          -1 0.617919098619241         185
##   [299998] 11.6850933554246          -1 0.505069997531904         185
##   [299999] 13.5427435989866          -1 0.643122806955742         185
##   [300000] 9.94858883577123          -1 0.377302396460228         185
##   -------
##   seqinfo: 82 sequences from hg38 genome

3.6 Import a BEDset into a GRangesList

Create a GRangesList given a BEDset id with bb_to_grangeslist.

bedset_id <- "lola_hg38_ucsc_features"
bb_to_grangeslist(bedbase, bedset_id)
## GRangesList object of length 11:
## [[1]]
## GRanges object with 28633 ranges and 0 metadata columns:
##           seqnames            ranges strand
##              <Rle>         <IRanges>  <Rle>
##       [1]     chr1       28736-29810      *
##       [2]     chr1     135125-135563      *
##       [3]     chr1     491108-491546      *
##       [4]     chr1     381173-382185      *
##       [5]     chr1     368793-370063      *
##       ...      ...               ...    ...
##   [28629]     chrY 25463969-25464941      *
##   [28630]     chrY 26409389-26409785      *
##   [28631]     chrY 26627169-26627397      *
##   [28632]     chrY 57067646-57068034      *
##   [28633]     chrY 57203116-57203423      *
##   -------
##   seqinfo: 711 sequences (1 circular) from hg38 genome
## 
## ...
## <10 more elements>

4 Accessing BEDbase API endpoints

Because bedbaser uses the AnVIL Service class, it’s possible to access any endpoint of the BEDbase API.

show(bedbase)
## service: bedbase
## tags(); use bedbase$<tab completion>:
## # A tibble: 38 × 3
##    tag   operation                                                       summary
##    <chr> <chr>                                                           <chr>  
##  1 base  get_bedbase_db_stats_v1_genomes_get                             Get av…
##  2 base  get_bedbase_db_stats_v1_stats_get                               Get su…
##  3 base  service_info_v1_service_info_get                                GA4GH …
##  4 bed   bed_to_bed_search_v1_bed_search_bed_post                        Search…
##  5 bed   embed_bed_file_v1_bed_embed_post                                Get em…
##  6 bed   get_bed_classification_v1_bed__bed_id__metadata_classification… Get cl…
##  7 bed   get_bed_embedding_v1_bed__bed_id__embedding_get                 Get em…
##  8 bed   get_bed_files_v1_bed__bed_id__metadata_files_get                Get me…
##  9 bed   get_bed_metadata_v1_bed__bed_id__metadata_get                   Get me…
## 10 bed   get_bed_pephub_v1_bed__bed_id__metadata_raw_get                 Get ra…
## # ℹ 28 more rows
## tag values:
##   base, bed, bedset, home, objects, search, NA
## schemas():
##   AccessMethod, AccessURL, BaseListResponse, BedClassification,
##   BedEmbeddingResult
##   # ... with 37 more elements

For example, to access a BED file’s stats, access the endpoint with $ and use httr to get the result. show will display information about the endpoint.

library(httr)
## 
## Attaching package: 'httr'
## The following object is masked from 'package:Biobase':
## 
##     content
show(bedbase$get_bed_stats_v1_bed__bed_id__metadata_stats_get)
## get_bed_stats_v1_bed__bed_id__metadata_stats_get 
## Get stats for a single BED record 
## Description:
##   Example bed_id: bbad85f21962bb8d972444f7f9a3a932
## 
## Parameters:
##   bed_id (string)
##     BED digest
id <- "bbad85f21962bb8d972444f7f9a3a932"
rsp <- bedbase$get_bed_stats_v1_bed__bed_id__metadata_stats_get(id)
content(rsp)
## $number_of_regions
## [1] 26210
## 
## $gc_content
## [1] 0.5
## 
## $median_tss_dist
## [1] 31480
## 
## $mean_region_width
## [1] 276.3
## 
## $exon_frequency
## [1] 1358
## 
## $exon_percentage
## [1] 0.0518
## 
## $intron_frequency
## [1] 9390
## 
## $intron_percentage
## [1] 0.3583
## 
## $intergenic_percentage
## [1] 0.4441
## 
## $intergenic_frequency
## [1] 11639
## 
## $promotercore_frequency
## [1] 985
## 
## $promotercore_percentage
## [1] 0.0376
## 
## $fiveutr_frequency
## [1] 720
## 
## $fiveutr_percentage
## [1] 0.0275
## 
## $threeutr_frequency
## [1] 1074
## 
## $threeutr_percentage
## [1] 0.041
## 
## $promoterprox_frequency
## [1] 1044
## 
## $promoterprox_percentage
## [1] 0.0398

5 Example: Change genomic coordinate system with liftOver

Given a BED id, we can use liftOver to convert one genomic coordinate system to another.

Install liftOver and rtracklayer then load the packages.

if (!"BiocManager" %in% rownames(installed.packages())) {
    install.packages("BiocManager")
}
BiocManager::install(c("liftOver", "rtracklayer"))

library(liftOver)
library(rtracklayer)

Create a GRanges object from a mouse genome. Create a BEDbase Service instance. Use the instance to create a GRanges object from the BEDbase id.

id <- "7816f807ffe1022f438e1f5b094acf1a"
bedbase <- BEDbase()
gro <- bb_to_granges(bedbase, id)
gro
## GRanges object with 3435 ranges and 3 metadata columns:
##          seqnames            ranges strand |        V4          V5
##             <Rle>         <IRanges>  <Rle> | <numeric> <character>
##      [1]     chr1   8628601-8719100      * |     90501           *
##      [2]     chr1 12038301-12041400      * |      3101           *
##      [3]     chr1 14958601-14992600      * |     34001           *
##      [4]     chr1 17466801-17479900      * |     13101           *
##      [5]     chr1 18872501-18901300      * |     28801           *
##      ...      ...               ...    ... .       ...         ...
##   [3431]     chrY   6530201-6663200      * |    133001           *
##   [3432]     chrY   6760201-6835800      * |     75601           *
##   [3433]     chrY   6984101-8985400      * |   2001301           *
##   [3434]     chrY 10638501-41003800      * |  30365301           *
##   [3435]     chrY 41159201-91744600      * |  50585401           *
##                          V6
##                 <character>
##      [1] High Signal Region
##      [2] High Signal Region
##      [3] High Signal Region
##      [4] High Signal Region
##      [5] High Signal Region
##      ...                ...
##   [3431] High Signal Region
##   [3432] High Signal Region
##   [3433] High Signal Region
##   [3434] High Signal Region
##   [3435] High Signal Region
##   -------
##   seqinfo: 239 sequences (1 circular) from mm10 genome

Download the chain file from UCSC.

chain_url <- paste0(
    "https://hgdownload.cse.ucsc.edu/goldenPath/mm10/liftOver/",
    "mm10ToMm39.over.chain.gz"
)
tmpdir <- tempdir()
gz <- file.path(tmpdir, "mm10ToMm39.over.chain.gz")
download.file(chain_url, gz)
gunzip(gz, remove = FALSE)

Import the chain, set the sequence levels style, and set the genome for the GRanges object.

ch <- import.chain(file.path(tmpdir, "mm10ToMm39.over.chain"))
seqlevelsStyle(gro) <- "UCSC"
gro39 <- liftOver(gro, ch)
gro39 <- unlist(gro39)
genome(gro39) <- "mm39"
gro39
## GRanges object with 6435 ranges and 3 metadata columns:
##          seqnames            ranges strand |        V4          V5
##             <Rle>         <IRanges>  <Rle> | <numeric> <character>
##      [1]     chr1   8698825-8789324      * |     90501           *
##      [2]     chr1 12108525-12111624      * |      3101           *
##      [3]     chr1 15028825-15062824      * |     34001           *
##      [4]     chr1 17537025-17550124      * |     13101           *
##      [5]     chr1 18942725-18971524      * |     28801           *
##      ...      ...               ...    ... .       ...         ...
##   [6431]     chrY 78211533-78211575      * |  50585401           *
##   [6432]     chrY 78170295-78170413      * |  50585401           *
##   [6433]     chrY 78151769-78152688      * |  50585401           *
##   [6434]     chrY 78149461-78151766      * |  50585401           *
##   [6435]     chrY 72066439-72066462      * |  50585401           *
##                          V6
##                 <character>
##      [1] High Signal Region
##      [2] High Signal Region
##      [3] High Signal Region
##      [4] High Signal Region
##      [5] High Signal Region
##      ...                ...
##   [6431] High Signal Region
##   [6432] High Signal Region
##   [6433] High Signal Region
##   [6434] High Signal Region
##   [6435] High Signal Region
##   -------
##   seqinfo: 21 sequences from mm39 genome; no seqlengths

6 SessionInfo()

sessionInfo()
## R Under development (unstable) (2024-10-21 r87258)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.1 LTS
## 
## Matrix products: default
## BLAS:   /home/biocbuild/bbs-3.21-bioc/R/lib/libRblas.so 
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.12.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_GB              LC_COLLATE=C              
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## time zone: America/New_York
## tzcode source: system (glibc)
## 
## attached base packages:
## [1] stats4    stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] BSgenome.Mmusculus.UCSC.mm10_1.4.3     
##  [2] httr_1.4.7                             
##  [3] BSgenome.Hsapiens.UCSC.hg38_1.4.5      
##  [4] BSgenome_1.75.0                        
##  [5] BiocIO_1.17.1                          
##  [6] Biostrings_2.75.3                      
##  [7] XVector_0.47.1                         
##  [8] bedbaser_0.99.17                       
##  [9] liftOver_1.31.0                        
## [10] Homo.sapiens_1.3.1                     
## [11] TxDb.Hsapiens.UCSC.hg19.knownGene_3.2.2
## [12] org.Hs.eg.db_3.20.0                    
## [13] GO.db_3.20.0                           
## [14] OrganismDbi_1.49.0                     
## [15] GenomicFeatures_1.59.1                 
## [16] AnnotationDbi_1.69.0                   
## [17] Biobase_2.67.0                         
## [18] gwascat_2.39.0                         
## [19] R.utils_2.12.3                         
## [20] R.oo_1.27.0                            
## [21] R.methodsS3_1.8.2                      
## [22] rtracklayer_1.67.0                     
## [23] GenomicRanges_1.59.1                   
## [24] GenomeInfoDb_1.43.2                    
## [25] IRanges_2.41.2                         
## [26] S4Vectors_0.45.2                       
## [27] BiocGenerics_0.53.3                    
## [28] generics_0.1.3                         
## [29] BiocStyle_2.35.0                       
## 
## loaded via a namespace (and not attached):
##   [1] jsonlite_1.8.9              magrittr_2.0.3             
##   [3] rmarkdown_2.29              zlibbioc_1.53.0            
##   [5] vctrs_0.6.5                 memoise_2.0.1              
##   [7] Rsamtools_2.23.1            RCurl_1.98-1.16            
##   [9] htmltools_0.5.8.1           S4Arrays_1.7.1             
##  [11] BiocBaseUtils_1.9.0         progress_1.2.3             
##  [13] lambda.r_1.2.4              curl_6.0.1                 
##  [15] SparseArray_1.7.2           sass_0.4.9                 
##  [17] bslib_0.8.0                 htmlwidgets_1.6.4          
##  [19] httr2_1.0.7                 futile.options_1.0.1       
##  [21] cachem_1.1.0                GenomicAlignments_1.43.0   
##  [23] mime_0.12                   lifecycle_1.0.4            
##  [25] pkgconfig_2.0.3             Matrix_1.7-1               
##  [27] R6_2.5.1                    fastmap_1.2.0              
##  [29] GenomeInfoDbData_1.2.13     MatrixGenerics_1.19.0      
##  [31] shiny_1.10.0                digest_0.6.37              
##  [33] RSQLite_2.3.9               filelock_1.0.3             
##  [35] abind_1.4-8                 compiler_4.5.0             
##  [37] withr_3.0.2                 bit64_4.5.2                
##  [39] BiocParallel_1.41.0         DBI_1.2.3                  
##  [41] biomaRt_2.63.0              rappdirs_0.3.3             
##  [43] DelayedArray_0.33.3         rjson_0.2.23               
##  [45] tools_4.5.0                 httpuv_1.6.15              
##  [47] glue_1.8.0                  restfulr_0.0.15            
##  [49] promises_1.3.2              grid_4.5.0                 
##  [51] tzdb_0.4.0                  tidyr_1.3.1                
##  [53] hms_1.1.3                   utf8_1.2.4                 
##  [55] xml2_1.3.6                  pillar_1.10.0              
##  [57] stringr_1.5.1               later_1.4.1                
##  [59] splines_4.5.0               dplyr_1.1.4                
##  [61] BiocFileCache_2.15.0        lattice_0.22-6             
##  [63] survival_3.8-3              bit_4.5.0.1                
##  [65] tidyselect_1.2.1            RBGL_1.83.0                
##  [67] miniUI_0.1.1.1              knitr_1.49                 
##  [69] bookdown_0.41               SummarizedExperiment_1.37.0
##  [71] snpStats_1.57.0             futile.logger_1.4.3        
##  [73] xfun_0.49                   matrixStats_1.4.1          
##  [75] DT_0.33                     stringi_1.8.4              
##  [77] UCSC.utils_1.3.0            yaml_2.3.10                
##  [79] evaluate_1.0.1              codetools_0.2-20           
##  [81] tibble_3.2.1                AnVILBase_1.1.0            
##  [83] BiocManager_1.30.25         graph_1.85.1               
##  [85] cli_3.6.3                   AnVIL_1.19.4               
##  [87] xtable_1.8-4                jquerylib_0.1.4            
##  [89] Rcpp_1.0.13-1               dbplyr_2.5.0               
##  [91] png_0.1-8                   rapiclient_0.1.8           
##  [93] XML_3.99-0.18               parallel_4.5.0             
##  [95] readr_2.1.5                 blob_1.2.4                 
##  [97] prettyunits_1.2.0           bitops_1.0-9               
##  [99] txdbmaker_1.3.1             VariantAnnotation_1.53.0   
## [101] purrr_1.0.2                 crayon_1.5.3               
## [103] rlang_1.1.4                 KEGGREST_1.47.0            
## [105] formatR_1.14