Skip to content

Commit

Permalink
Enable return conversion of varm
Browse files Browse the repository at this point in the history
Fixes #43
  • Loading branch information
lazappi committed May 3, 2021
1 parent c19999d commit 96a5197
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 6 deletions.
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
* Bioconductor 3.13, May 2021

* Add conversion checks to all slots in `AnnData2SCE()` (See #45)
* Enable return conversion of `varm` in `SCE2AnnData()` (Fixes #43)

## zellkonverter 1.1.7 (2021-04-30)

Expand Down
19 changes: 16 additions & 3 deletions R/konverter.R
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,9 @@
#'
#' Values stored in the `varm` slot of an `AnnData` object are stored in a
#' column of [`rowData()`] in a \linkS4class{SingleCellExperiment}
#' as a \linkS4class{DataFrame} of matrices. No attempt is made to transfer this
#' information when converting from \linkS4class{SingleCellExperiment} to
#' `AnnData`.
#' as a \linkS4class{DataFrame} of matrices. If this column is pressent an
#' attempt is made to transfer this information when converting from
#' \linkS4class{SingleCellExperiment} to `AnnData`.
#'
#' @author Luke Zappia
#' @author Aaron Lun
Expand Down Expand Up @@ -170,6 +170,10 @@ AnnData2SCE <- function(adata, skip_assays = FALSE, hdf5_backed = TRUE) {
int_metadata(output)$skipped_layers <- skipped_layers
}

if (length(varm_list) > 0) {
int_metadata(output)$has_varm <- names(varm_list)
}

output
}

Expand Down Expand Up @@ -338,6 +342,11 @@ SCE2AnnData <- function(sce, X_name = NULL, skip_assays = FALSE) {
}

row_data <- rowData(sce)
if (!is.null(int_metadata(sce)$has_varm)) {
varm <- as.list(row_data[["varm"]])
row_data[["varm"]] <- NULL
}

is_atomic <- vapply(row_data, is.atomic, NA)
if (any(!is_atomic)) {
non_atomic_cols <- colnames(row_data)[!is_atomic]
Expand Down Expand Up @@ -418,6 +427,10 @@ SCE2AnnData <- function(sce, X_name = NULL, skip_assays = FALSE) {
adata$varp <- as.list(rowPairs(sce, asSparse = TRUE))
adata$obsp <- as.list(colPairs(sce, asSparse = TRUE))

if (!is.null(int_metadata(sce)$has_varm)) {
adata$varm <- varm
}

if (!is.null(colnames(sce))) {
adata$obs_names <- colnames(sce)
}
Expand Down
6 changes: 3 additions & 3 deletions man/AnnData-Conversion.Rd

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

Binary file modified man/figures/AnnData2SCE.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 96a5197

Please sign in to comment.