Skip to content

Commit

Permalink
Switched to a JSON-formatted OBJECT, as per alabaster.base's updates.
Browse files Browse the repository at this point in the history
Also bumped the version and date for BioC-devel.
  • Loading branch information
LTLA committed Dec 13, 2023
1 parent 76d979c commit 806ae3b
Show file tree
Hide file tree
Showing 7 changed files with 35 additions and 18 deletions.
4 changes: 2 additions & 2 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Package: alabaster.se
Title: Load and Save SummarizedExperiments from File
Version: 1.3.2
Date: 2023-11-30
Version: 1.3.3
Date: 2023-12-12
Authors@R: person("Aaron", "Lun", role=c("aut", "cre"), email="[email protected]")
License: MIT + file LICENSE
Description:
Expand Down
9 changes: 6 additions & 3 deletions R/readRangedSummarizedExperiment.R
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
#' Read a RangedSummarizedExperiment from disk
#'
#' Read a \linkS4class{RangedSummarizedExperiment} from its on-disk representation.
#' This is usually not directly called by users, but is instead called by dispatch in \code{\link{readObject}}.
#'
#' @param path String containing a path to a directory, itself created using the \code{\link{stageObject}} method for \linkS4class{RangedSummarizedExperiment} objects.
#' @param metadata Named list of metadata for this object, see \code{\link{readObjectFile}} for details.
#' @param ... Further arguments passed to \code{\link{readSummarizedExperiment}} and internal \code{\link{altReadObject}} calls.
#'
#' @return A \linkS4class{RangedSummarizedExperiment} object.
Expand All @@ -25,13 +27,14 @@
#'
#' tmp <- tempfile()
#' saveObject(se, tmp)
#' readRangedSummarizedExperiment(tmp)
#' readObject(tmp)
#'
#' @export
#' @importFrom SummarizedExperiment SummarizedExperiment rowData rowData<- rowRanges<-
#' @import alabaster.base
readRangedSummarizedExperiment <- function(path, ...) {
se <- altReadObject(path, type="summarized_experiment", ...)
readRangedSummarizedExperiment <- function(path, metadata, ...) {
metadata$type <- "summarized_experiment"
se <- altReadObject(path, metadata=metadata, ...)

rrdir <- file.path(path, "row_ranges")
if (file.exists(rrdir)) {
Expand Down
12 changes: 7 additions & 5 deletions R/readSummarizedExperiment.R
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
#' Read a SummarizedExperiment from disk
#'
#' Read a \linkS4class{SummarizedExperiment} from its on-disk representation.
#' This is usually not directly called by users, but is instead called by dispatch in \code{\link{readObject}}.
#'
#' @param path String containing a path to a directory, itself created using the \code{\link{stageObject}} method for \linkS4class{SummarizedExperiment} objects.
#' @param metadata Named list of metadata for this object, see \code{\link{readObjectFile}} for details.
#' @param ... Further arguments passed to internal \code{\link{altReadObject}} calls.
#'
#' @return A \linkS4class{SummarizedExperiment} object.
Expand All @@ -24,7 +26,7 @@
#'
#' tmp <- tempfile()
#' saveObject(se, tmp)
#' readSummarizedExperiment(tmp)
#' readObject(tmp)
#'
#' @export
#' @aliases loadSummarizedExperiment
Expand All @@ -33,8 +35,8 @@
#' @importFrom jsonlite fromJSON
#' @importFrom S4Vectors make_zero_col_DFrame
#' @import alabaster.base
readSummarizedExperiment <- function(path, ...) {
info <- fromJSON(file.path(path, "summarized_experiment.json"))
readSummarizedExperiment <- function(path, metadata, ...) {
info <- metadata$summarized_experiment

all.assays <- list()
names(all.assays) <- character(0)
Expand All @@ -49,14 +51,14 @@ readSummarizedExperiment <- function(path, ...) {
if (file.exists(cd.path)) {
cd <- altReadObject(cd.path, ...)
} else {
cd <- make_zero_col_DFrame(info$dimensions[2])
cd <- make_zero_col_DFrame(info$dimensions[[2]])
}

rd.path <- file.path(path, "row_data")
if (file.exists(rd.path)) {
rd <- altReadObject(rd.path, ...)
} else {
rd <- make_zero_col_DFrame(info$dimensions[1])
rd <- make_zero_col_DFrame(info$dimensions[[1]])
}

se <- SummarizedExperiment(all.assays, colData=cd, rowData=rd, checkDimnames=FALSE)
Expand Down
6 changes: 4 additions & 2 deletions R/saveRangedSummarizedExperiment.R
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,10 @@ setMethod("saveObject", "RangedSummarizedExperiment", function(x, path, ...) {
})
}

write(toJSON(list(dimensions=dim(x), version="1.0"), auto_unbox=TRUE), file=file.path(path, "ranged_summarized_experiment.json"))
write(file=file.path(path, "OBJECT"), "ranged_summarized_experiment")
info <- readObjectFile(path)
info$ranged_summarized_experiment <- list(version="1.0")
saveObjectFile(path, "ranged_summarized_experiment", info)

invisible(NULL)
})

Expand Down
8 changes: 6 additions & 2 deletions R/saveSummarizedExperiment.R
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,12 @@ NULL
#' @import methods
setMethod("saveObject", "SummarizedExperiment", function(x, path, summarizedexperiment.allow.dataframe.assay=FALSE, ...) {
dir.create(path)
write(file=file.path(path, "OBJECT"), "summarized_experiment")
write(toJSON(list(dimensions=dim(x), version="1.0"), auto_unbox=TRUE), file=file.path(path, "summarized_experiment.json"))
saveObjectFile(
path,
"summarized_experiment",
list(summarized_experiment=list(version="1.0", dimensions=dim(x)))
)

args <- list(summarizedexperiment.allow.dataframe.assay=summarizedexperiment.allow.dataframe.assay, ...)

cd <- colData(x)
Expand Down
7 changes: 5 additions & 2 deletions man/readRangedSummarizedExperiment.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions man/readSummarizedExperiment.Rd

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 806ae3b

Please sign in to comment.