alabaster.ranges 1.6.0
The alabaster.ranges package implements methods to save genomic ranges (i.e., GRanges and GRangesList objects) to file artifacts and load them back into R.
It also supports various CompressedList subclasses, including the somewhat useful CompressedSplitDataFrameList.
Check out alabaster.base for more details on the motivation and concepts of the alabaster framework.
Given some genomic ranges, we can use saveObject() to save it inside a staging directory:
library(GenomicRanges)
gr <- GRanges("chrA", IRanges(sample(100), width=sample(100)))
mcols(gr)$score <- runif(length(gr))
metadata(gr)$genome <- "Aaron"
seqlengths(gr) <- c(chrA=1000)
library(alabaster.ranges)
tmp <- tempfile()
saveObject(gr, tmp)
list.files(tmp, recursive=TRUE)## [1] "OBJECT"                                 
## [2] "other_annotations/OBJECT"               
## [3] "other_annotations/list_contents.json.gz"
## [4] "range_annotations/OBJECT"               
## [5] "range_annotations/basic_columns.h5"     
## [6] "ranges.h5"                              
## [7] "sequence_information/OBJECT"            
## [8] "sequence_information/info.h5"We can then easily load it back in with readObject().
roundtrip <- readObject(tmp)
roundtrip## GRanges object with 100 ranges and 1 metadata column:
##         seqnames    ranges strand |     score
##            <Rle> <IRanges>  <Rle> | <numeric>
##     [1]     chrA     61-66      * | 0.5999207
##     [2]     chrA     37-99      * | 0.4929512
##     [3]     chrA     24-36      * | 0.0625839
##     [4]     chrA     10-95      * | 0.9351030
##     [5]     chrA     17-40      * | 0.9441486
##     ...      ...       ...    ... .       ...
##    [96]     chrA    83-107      * |  0.633289
##    [97]     chrA    21-114      * |  0.437634
##    [98]     chrA    92-139      * |  0.104311
##    [99]     chrA    22-110      * |  0.860161
##   [100]     chrA     30-47      * |  0.675483
##   -------
##   seqinfo: 1 sequence from an unspecified genomeThe same can be done for GRangesList and CompressedList subclasses.
Metadata is preserved during this round-trip:
metadata(roundtrip)## $genome
## [1] "Aaron"mcols(roundtrip)## DataFrame with 100 rows and 1 column
##         score
##     <numeric>
## 1   0.5999207
## 2   0.4929512
## 3   0.0625839
## 4   0.9351030
## 5   0.9441486
## ...       ...
## 96   0.633289
## 97   0.437634
## 98   0.104311
## 99   0.860161
## 100  0.675483seqinfo(roundtrip)## Seqinfo object with 1 sequence from an unspecified genome:
##   seqnames seqlengths isCircular genome
##   chrA           1000         NA   <NA>sessionInfo()## R version 4.4.1 (2024-06-14)
## Platform: x86_64-pc-linux-gnu
## Running under: Ubuntu 24.04.1 LTS
## 
## Matrix products: default
## BLAS:   /home/biocbuild/bbs-3.20-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] alabaster.ranges_1.6.0 alabaster.base_1.6.0   GenomicRanges_1.58.0  
## [4] GenomeInfoDb_1.42.0    IRanges_2.40.0         S4Vectors_0.44.0      
## [7] BiocGenerics_0.52.0    BiocStyle_2.34.0      
## 
## loaded via a namespace (and not attached):
##  [1] httr_1.4.7              cli_3.6.3               knitr_1.48             
##  [4] rlang_1.1.4             xfun_0.48               UCSC.utils_1.2.0       
##  [7] jsonlite_1.8.9          htmltools_0.5.8.1       sass_0.4.9             
## [10] rmarkdown_2.28          evaluate_1.0.1          jquerylib_0.1.4        
## [13] fastmap_1.2.0           Rhdf5lib_1.28.0         alabaster.schemas_1.6.0
## [16] yaml_2.3.10             lifecycle_1.0.4         bookdown_0.41          
## [19] BiocManager_1.30.25     compiler_4.4.1          Rcpp_1.0.13            
## [22] rhdf5filters_1.18.0     XVector_0.46.0          rhdf5_2.50.0           
## [25] digest_0.6.37           R6_2.5.1                GenomeInfoDbData_1.2.13
## [28] bslib_0.8.0             tools_4.4.1             zlibbioc_1.52.0        
## [31] cachem_1.1.0