alabaster.ranges 1.7.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 90-185 * | 0.268484
## [2] chrA 54-69 * | 0.170514
## [3] chrA 82-163 * | 0.408742
## [4] chrA 58-137 * | 0.584475
## [5] chrA 95-112 * | 0.124292
## ... ... ... ... . ...
## [96] chrA 57-109 * | 0.535787
## [97] chrA 26-108 * | 0.304101
## [98] chrA 37-136 * | 0.967266
## [99] chrA 14-15 * | 0.169180
## [100] chrA 13-104 * | 0.532471
## -------
## seqinfo: 1 sequence from an unspecified genome
The 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.268484
## 2 0.170514
## 3 0.408742
## 4 0.584475
## 5 0.124292
## ... ...
## 96 0.535787
## 97 0.304101
## 98 0.967266
## 99 0.169180
## 100 0.532471
seqinfo(roundtrip)
## Seqinfo object with 1 sequence from an unspecified genome:
## seqnames seqlengths isCircular genome
## chrA 1000 NA <NA>
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] alabaster.ranges_1.7.0 alabaster.base_1.7.0 GenomicRanges_1.59.0
## [4] GenomeInfoDb_1.43.0 IRanges_2.41.0 S4Vectors_0.45.0
## [7] BiocGenerics_0.53.0 BiocStyle_2.35.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.3.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.29.0 alabaster.schemas_1.7.0
## [16] yaml_2.3.10 lifecycle_1.0.4 bookdown_0.41
## [19] BiocManager_1.30.25 compiler_4.5.0 Rcpp_1.0.13
## [22] rhdf5filters_1.19.0 XVector_0.47.0 rhdf5_2.51.0
## [25] digest_0.6.37 R6_2.5.1 GenomeInfoDbData_1.2.13
## [28] bslib_0.8.0 tools_4.5.0 zlibbioc_1.53.0
## [31] cachem_1.1.0