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)

api <- BEDbase()

2.1 (Optional) Set the cache

Set the cache path with the argument cache_path; otherwise, bedbaser will choose the default cache location.

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(api)
## # 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(api)
## # A tibble: 18,978 × 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…
## # ℹ 18,968 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(api, "bed")
md <- bb_metadata(api, ex_bed$id)
head(md)
## $name
## [1] "encode_3676"
## 
## $genome_alias
## [1] "hg38"
## 
## $genome_digest
## [1] "2230c535660fb4774114bfa966a62f823fdb6d21acf138d4"
## 
## $bed_type
## [1] "bed6+4"
## 
## $bed_format
## [1] "narrowpeak"
## 
## $id
## [1] "95900d67ed6411a322af35098e445eb0"

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(api, "excluderanges")
## # A tibble: 80 × 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…
## # ℹ 70 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(api, "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(api, "bed")
head(ex_bed)
## $name
## [1] "encode_3676"
## 
## $genome_alias
## [1] "hg38"
## 
## $genome_digest
## [1] "2230c535660fb4774114bfa966a62f823fdb6d21acf138d4"
## 
## $bed_type
## [1] "bed6+4"
## 
## $bed_format
## [1] "narrowpeak"
## 
## $id
## [1] "95900d67ed6411a322af35098e445eb0"
# Allow bedbaser to assign column names and types
bb_to_granges(api, ex_bed$id, quietly = FALSE)
## GRanges object with 57761 ranges and 6 metadata columns:
##           seqnames              ranges strand |        name     score
##              <Rle>           <IRanges>  <Rle> | <character> <numeric>
##       [1]     chr7   99556889-99560178      * |      Peak_1      1000
##       [2]     chr7 105530992-105534384      * |      Peak_2       976
##       [3]     chr7   44982405-44988303      * |      Peak_3       969
##       [4]     chr4   48830246-48833027      * |      Peak_4       953
##       [5]     chr7   74209131-74211593      * |      Peak_5       952
##       ...      ...                 ...    ... .         ...       ...
##   [57757]     chr8     8881307-8881578      * |  Peak_57757        10
##   [57758]     chr9       589353-589606      * |  Peak_57758        10
##   [57759]    chr19   51138137-51138357      * |  Peak_57759        10
##   [57760]     chr6 156659590-156660000      * |  Peak_57760        10
##   [57761]     chr7 154976160-154976403      * |  Peak_57761        10
##           signalValue    pValue    qValue      peak
##             <numeric> <numeric> <numeric> <integer>
##       [1]     50.4952   587.814   579.279      1420
##       [2]     47.9550   574.182   566.517      1362
##       [3]     42.1230   569.985   562.559      3866
##       [4]     58.4641   560.289   553.038      1109
##       [5]     50.5395   559.634   552.401      1172
##       ...         ...       ...       ...       ...
##   [57757]     1.73028   2.03201   0.42519       108
##   [57758]     1.73028   2.03201   0.42519       203
##   [57759]     2.01695   2.03088   0.42430        78
##   [57760]     1.64774   2.03023   0.42430        35
##   [57761]     1.64774   2.03023   0.42430       223
##   -------
##   seqinfo: 711 sequences (1 circular) from hg38 genome

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(api, 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(api, 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(api, 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.

ex_bed <- bb_example(api, "bed")
bb_to_granges(api, ex_bed$id, "bigbed", quietly = FALSE)
## Downloading
## https://data2.bedbase.org/files/9/5/95900d67ed6411a322af35098e445eb0.bigBed ...
## GRanges object with 57761 ranges and 6 metadata columns:
##           seqnames            ranges strand |        name     score      field8
##              <Rle>         <IRanges>  <Rle> | <character> <integer> <character>
##       [1]     chr1     777827-778195      * |  Peak_33839        27     5.26766
##       [2]     chr1     778361-778761      * |  Peak_15349       142    17.67560
##       [3]     chr1     778884-779471      * |  Peak_18464        96    13.26751
##       [4]     chr1     779527-780059      * |  Peak_22729        61     9.51248
##       [5]     chr1     826634-827013      * |  Peak_26078        45     7.71659
##       ...      ...               ...    ... .         ...       ...         ...
##   [57757]     chrY 20726456-20727106      * |  Peak_26091        45     7.71659
##   [57758]     chrY 20731782-20732102      * |  Peak_43849        17     3.67835
##   [57759]     chrY 20732243-20732510      * |  Peak_46498        16     3.19705
##   [57760]     chrY 20734468-20736884      * |  Peak_20414        78    10.64534
##   [57761]     chrY 20798030-20798986      * |  Peak_22217        65    10.00227
##                field9     field10     field11
##           <character> <character> <character>
##       [1]    12.17603    10.32837         187
##       [2]    80.41011    78.17186         195
##       [3]    53.33309    51.20127         389
##       [4]    32.48199    30.45850         200
##       [5]    23.13210    21.17438         186
##       ...         ...         ...         ...
##   [57757]    23.13210    21.17438         378
##   [57758]     6.60524     4.84712         177
##   [57759]     5.85335     4.11228         209
##   [57760]    42.32733    40.24815        1383
##   [57761]    34.66776    32.63152         397
##   -------
##   seqinfo: 28 sequences from an unspecified 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(api, 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(api)
## 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(api$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 <- api$get_bed_stats_v1_bed__bed_id__metadata_stats_get(id)
content(rsp)
## $number_of_regions
## [1] 26210
## 
## $gc_content
## NULL
## 
## $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"
api <- BEDbase()
gro <- bb_to_granges(api, 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.0                          
##  [6] Biostrings_2.75.1                      
##  [7] XVector_0.47.0                         
##  [8] bedbaser_0.99.9                        
##  [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.0                   
## [24] GenomeInfoDb_1.43.0                    
## [25] IRanges_2.41.0                         
## [26] S4Vectors_0.45.1                       
## [27] BiocGenerics_0.53.2                    
## [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.0            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.0                 
##  [15] SparseArray_1.7.1           sass_0.4.9                 
##  [17] bslib_0.8.0                 htmlwidgets_1.6.4          
##  [19] httr2_1.0.6                 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.9.1                 digest_0.6.37              
##  [33] RSQLite_2.3.7               filelock_1.0.3             
##  [35] fansi_1.0.6                 abind_1.4-8                
##  [37] compiler_4.5.0              withr_3.0.2                
##  [39] bit64_4.5.2                 BiocParallel_1.41.0        
##  [41] DBI_1.2.3                   biomaRt_2.63.0             
##  [43] rappdirs_0.3.3              DelayedArray_0.33.1        
##  [45] rjson_0.2.23                tools_4.5.0                
##  [47] httpuv_1.6.15               glue_1.8.0                 
##  [49] restfulr_0.0.15             promises_1.3.0             
##  [51] grid_4.5.0                  tzdb_0.4.0                 
##  [53] tidyr_1.3.1                 hms_1.1.3                  
##  [55] xml2_1.3.6                  utf8_1.2.4                 
##  [57] pillar_1.9.0                stringr_1.5.1              
##  [59] later_1.3.2                 splines_4.5.0              
##  [61] dplyr_1.1.4                 BiocFileCache_2.15.0       
##  [63] lattice_0.22-6              survival_3.7-0             
##  [65] bit_4.5.0                   tidyselect_1.2.1           
##  [67] RBGL_1.83.0                 miniUI_0.1.1.1             
##  [69] knitr_1.49                  bookdown_0.41              
##  [71] SummarizedExperiment_1.37.0 snpStats_1.57.0            
##  [73] futile.logger_1.4.3         xfun_0.49                  
##  [75] matrixStats_1.4.1           DT_0.33                    
##  [77] stringi_1.8.4               UCSC.utils_1.3.0           
##  [79] yaml_2.3.10                 evaluate_1.0.1             
##  [81] codetools_0.2-20            tibble_3.2.1               
##  [83] AnVILBase_1.1.0             BiocManager_1.30.25        
##  [85] graph_1.85.0                cli_3.6.3                  
##  [87] AnVIL_1.19.3                xtable_1.8-4               
##  [89] jquerylib_0.1.4             Rcpp_1.0.13-1              
##  [91] dbplyr_2.5.0                png_0.1-8                  
##  [93] rapiclient_0.1.8            XML_3.99-0.17              
##  [95] parallel_4.5.0              readr_2.1.5                
##  [97] blob_1.2.4                  prettyunits_1.2.0          
##  [99] bitops_1.0-9                txdbmaker_1.3.0            
## [101] VariantAnnotation_1.53.0    purrr_1.0.2                
## [103] crayon_1.5.3                rlang_1.1.4                
## [105] KEGGREST_1.47.0             formatR_1.14