Contents

1 Introduction

bedbaser is an R API client for BEDbase that provides access to the bedhost 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, optionally setting the cache to cache_path. If cache_path is not set, bedbaser will choose the default location.

library(bedbaser)

bedbase <- BEDbase(tempdir())
## 21141 BED files available.

bedbaser can use the same cache as geniml’s BBClient by setting the cache_path to the same location. It will create the following structure:

cache_path
    bedfiles
        a/f/afile.bed.gz
    bedsets
        a/s/aset.txt

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 DNase-seq f… mm10         <NA>          bed4+1   bed        0014… "https://w…
##  5 tissue,infi… hg38         2230c535660f… bed3+0   bed        0014… ""         
##  6 encode_10146 hg38         2230c535660f… bed6+4   narrowpeak 0019… "H3K9ac Hi…
##  7 hg38.Kundaj… hg38         2230c535660f… bed3+2   bed        0019… "Defined a…
##  8 encode_4782  hg38         2230c535660f… bed6+4   narrowpeak 001d… "FASTKD2 e…
##  9 encode_14119 hg38         2230c535660f… bed6+3   broadpeak  001f… "DNase-seq…
## 10 encode_10920 hg38         2230c535660f… bed6+4   narrowpeak 0020… "ZNF621 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: 21,373 × 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… d0585a…
##  2 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… aa41f6…
##  3 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… f248f0…
##  4 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 6efa1a…
##  5 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 54d9df…
##  6 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… d4dae8…
##  7 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… d7882f…
##  8 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… bfead5…
##  9 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 7f77a2…
## 10 encode_bat… enco… 6dc4c… 2024-11-03T18:… 2024-11-03T18:2… "Encode pr… 4e4735…
## # ℹ 21,363 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")
# 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>

3.7 Save a BED file

Save BED files or BEDsets with bb_save:

bb_save(bedbase, ex_bed$id, tempdir())

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
## host: api.bedbase.org
## 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) (2025-01-20 r87609)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.2 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  LAPACK version 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.1                        
##  [5] BiocIO_1.17.1                          
##  [6] Biostrings_2.75.3                      
##  [7] XVector_0.47.2                         
##  [8] bedbaser_0.99.23                       
##  [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.1                     
## [23] GenomicRanges_1.59.1                   
## [24] GenomeInfoDb_1.43.4                    
## [25] IRanges_2.41.3                         
## [26] S4Vectors_0.45.4                       
## [27] BiocGenerics_0.53.6                    
## [28] generics_0.1.3                         
## [29] BiocStyle_2.35.0                       
## 
## loaded via a namespace (and not attached):
##   [1] jsonlite_1.9.0              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.3             
##  [11] BiocBaseUtils_1.9.0         progress_1.2.3             
##  [13] lambda.r_1.2.4              curl_6.2.1                 
##  [15] SparseArray_1.7.6           sass_0.4.9                 
##  [17] bslib_0.9.0                 htmlwidgets_1.6.4          
##  [19] httr2_1.1.0                 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-2               
##  [27] R6_2.6.1                    fastmap_1.2.0              
##  [29] GenomeInfoDbData_1.2.13     MatrixGenerics_1.19.1      
##  [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.6.0-1              
##  [39] BiocParallel_1.41.2         DBI_1.2.3                  
##  [41] biomaRt_2.63.1              rappdirs_0.3.3             
##  [43] DelayedArray_0.33.6         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.1              
##  [57] stringr_1.5.1               later_1.4.1                
##  [59] splines_4.5.0               dplyr_1.1.4                
##  [61] BiocFileCache_2.15.1        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.42               SummarizedExperiment_1.37.0
##  [71] snpStats_1.57.0             futile.logger_1.4.3        
##  [73] xfun_0.51                   matrixStats_1.5.0          
##  [75] DT_0.33                     stringi_1.8.4              
##  [77] UCSC.utils_1.3.1            yaml_2.3.10                
##  [79] evaluate_1.0.3              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.4                   AnVIL_1.19.8               
##  [87] xtable_1.8-4                jquerylib_0.1.4            
##  [89] Rcpp_1.0.14                 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.1   
## [101] purrr_1.0.4                 crayon_1.5.3               
## [103] rlang_1.1.5                 KEGGREST_1.47.0            
## [105] formatR_1.14