From bd3fffbfe75ad426efb46d688ac66a74128dd273 Mon Sep 17 00:00:00 2001 From: Artur-man Date: Wed, 26 Nov 2025 17:07:40 +0100 Subject: [PATCH 1/7] remove pizzarr for anndataR support --- DESCRIPTION | 11 ++++------- R/read.R | 9 ++------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 9e2249b1..615fdc6f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -63,13 +63,10 @@ Suggests: SpatialData.data, SpatialData.plot, testthat, - DT -Enhances: - anndataR, - pizzarr + DT, + anndataR Remotes: - keller-mark/pizzarr, - keller-mark/anndataR@spatialdata, + keller-mark/anndataR@keller-mark/zarr, HelenaLC/SpatialData.data, HelenaLC/SpatialData.plot biocViews: @@ -82,7 +79,7 @@ biocViews: SingleCell, Spatial License: Artistic-2.0 -RoxygenNote: 7.3.2 +RoxygenNote: 7.3.3 Encoding: UTF-8 VignetteBuilder: knitr URL: https://github.com/HelenaLC/SpatialData diff --git a/R/read.R b/R/read.R index 929fd140..3c951a8c 100644 --- a/R/read.R +++ b/R/read.R @@ -150,15 +150,10 @@ readShape <- function(x, ...) { .readTable_anndataR <- function(x) { if (!requireNamespace('anndataR', quietly=TRUE)) { stop("To use this function, install the 'anndataR' package via\n", - "`BiocManager::install(\"keller-mark/anndataR\", ref=\"spatialdata\")`") - } - if (!requireNamespace('pizzarr', quietly=TRUE)) { - stop("To use this function, install the 'pizzarr' package via\n", - "`BiocManager::install(\"keller-mark/pizzarr\")`") + "`BiocManager::install(\"keller-mark/anndataR\", ref=\"keller-mark/zarr\")`") } suppressWarnings({ # suppress warnings related to hidden files - adata <- anndataR::read_zarr(x) - anndataR::to_SingleCellExperiment(adata) + adata <- anndataR::read_zarr(x, as = "SingleCellExperiment") }) } From 6b5bd3996a3575f5ab796479bbda39f57b9332fa Mon Sep 17 00:00:00 2001 From: HelenaLC Date: Wed, 26 Nov 2025 22:12:56 +0100 Subject: [PATCH 2/7] rmv pizzarr --- R/read.R | 8 ++++---- man/SpatialData.Rd | 8 ++++---- man/readSpatialData.Rd | 6 +++--- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/R/read.R b/R/read.R index 3c951a8c..83cb82fa 100644 --- a/R/read.R +++ b/R/read.R @@ -49,8 +49,8 @@ allp = c("session_info==1.0.0", "spatialdata==0.3.0", "spatialdata_io==0.1.7", #' The default, NULL, reads all elements; alternatively, may be FALSE #' to skip a layer, or a integer vector specifying which elements to read. #' @param anndataR logical specifying whether -#' to use \code{anndataR} to read tables; defaults to FALSE in `readSpatialData`, -#' and `readTable`, +#' to use \code{anndataR} to read tables; +#' defaults to FALSE in `readSpatialData`, and `readTable`, #' so that pythonic \code{spatialdata} and \code{zellkonverter} are used. #' @param ... option arguments passed to and from other methods. #' @@ -64,7 +64,7 @@ allp = c("session_info==1.0.0", "spatialdata==0.3.0", "spatialdata_io==0.1.7", #' library(SpatialData.data) #' dir.create(tf <- tempfile()) #' base <- SpatialData.data:::.unzip_merfish_demo(tf) -#' (x <- readSpatialData(base)) +#' (x <- readSpatialData(base, anndataR=TRUE)) NULL readsdlayer <- function(x, ...) { @@ -153,7 +153,7 @@ readShape <- function(x, ...) { "`BiocManager::install(\"keller-mark/anndataR\", ref=\"keller-mark/zarr\")`") } suppressWarnings({ # suppress warnings related to hidden files - adata <- anndataR::read_zarr(x, as = "SingleCellExperiment") + anndataR::read_zarr(x, as="SingleCellExperiment") }) } diff --git a/man/SpatialData.Rd b/man/SpatialData.Rd index e760cfd6..9521d85c 100644 --- a/man/SpatialData.Rd +++ b/man/SpatialData.Rd @@ -50,8 +50,8 @@ \alias{element,SpatialData,ANY,numeric-method} \alias{element,SpatialData,ANY,missing-method} \alias{element,SpatialData,ANY,ANY-method} -\alias{[[<-,SpatialData,numeric,ANY-method} -\alias{[[<-,SpatialData,character,ANY-method} +\alias{[[<-,SpatialData,numeric,ANY,ANY-method} +\alias{[[<-,SpatialData,character,ANY,ANY-method} \title{The `SpatialData` class} \usage{ SpatialData(images, labels, points, shapes, tables) @@ -88,9 +88,9 @@ SpatialData(images, labels, points, shapes, tables) \S4method{element}{SpatialData,ANY,ANY}(x, i, j) -\S4method{[[}{SpatialData,numeric,ANY}(x, i) <- value +\S4method{[[}{SpatialData,numeric,ANY,ANY}(x, i) <- value -\S4method{[[}{SpatialData,character,ANY}(x, i) <- value +\S4method{[[}{SpatialData,character,ANY,ANY}(x, i) <- value } \arguments{ \item{images}{list of \code{\link{ImageArray}}s} diff --git a/man/readSpatialData.Rd b/man/readSpatialData.Rd index 000ed434..5a3d0556 100644 --- a/man/readSpatialData.Rd +++ b/man/readSpatialData.Rd @@ -42,8 +42,8 @@ The default, NULL, reads all elements; alternatively, may be FALSE to skip a layer, or a integer vector specifying which elements to read.} \item{anndataR}{logical specifying whether -to use \code{anndataR} to read tables; defaults to FALSE in `readSpatialData`, -and `readTable`, +to use \code{anndataR} to read tables; +defaults to FALSE in `readSpatialData`, and `readTable`, so that pythonic \code{spatialdata} and \code{zellkonverter} are used.} } \value{ @@ -59,5 +59,5 @@ Reading `SpatialData` library(SpatialData.data) dir.create(tf <- tempfile()) base <- SpatialData.data:::.unzip_merfish_demo(tf) -(x <- readSpatialData(base)) +(x <- readSpatialData(base, anndataR=TRUE)) } From 9cd6eda6ff77ed69b1a5cb1271c66aa06d13e839 Mon Sep 17 00:00:00 2001 From: Artur-man Date: Sun, 29 Mar 2026 17:05:32 +0200 Subject: [PATCH 3/7] update anndataR branch --- DESCRIPTION | 2 +- R/read.R | 5 ++++- man/readSpatialData.Rd | 3 +++ 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index a64b7fc8..537779ed 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -65,7 +65,7 @@ Suggests: DT, anndataR Remotes: - keller-mark/anndataR@keller-mark/zarr, + keller-mark/anndataR@spatialdata, HelenaLC/SpatialData.data, HelenaLC/SpatialData.plot, Bioconductor/ZarrArray diff --git a/R/read.R b/R/read.R index 6a0ce66c..47c99038 100644 --- a/R/read.R +++ b/R/read.R @@ -66,6 +66,9 @@ allp = c("zarr==3.1.5", "spatialdata==0.7.0", "spatialdata_io==0.6.0", #' library(SpatialData.data) #' dir.create(tf <- tempfile()) #' base <- SpatialData.data:::.unzip_merfish_demo(tf) +#' (x <- readSpatialData(base)) +#' +#' # import tables using anndataR #' (x <- readSpatialData(base, anndataR=TRUE)) NULL @@ -153,7 +156,7 @@ readShape <- function(x, ...) { .readTable_anndataR <- function(x) { if (!requireNamespace('anndataR', quietly=TRUE)) { stop("To use this function, install the 'anndataR' package via\n", - "`BiocManager::install(\"keller-mark/anndataR\", ref=\"keller-mark/zarr\")`") + "`BiocManager::install(\"keller-mark/anndataR\", ref=\"spatialdata\")`") } suppressWarnings({ # suppress warnings related to hidden files anndataR::read_zarr(x, as="SingleCellExperiment") diff --git a/man/readSpatialData.Rd b/man/readSpatialData.Rd index 5a3d0556..e6986bcb 100644 --- a/man/readSpatialData.Rd +++ b/man/readSpatialData.Rd @@ -59,5 +59,8 @@ Reading `SpatialData` library(SpatialData.data) dir.create(tf <- tempfile()) base <- SpatialData.data:::.unzip_merfish_demo(tf) +(x <- readSpatialData(base)) + +# import tables using anndataR (x <- readSpatialData(base, anndataR=TRUE)) } From 974be3c769ac53951802a8ec8db87aa09a16649e Mon Sep 17 00:00:00 2001 From: Artur-man Date: Sun, 29 Mar 2026 18:07:36 +0200 Subject: [PATCH 4/7] remove zellkonverter for as_sce method in reticulateanndata --- DESCRIPTION | 7 +++---- R/read.R | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 537779ed..2dd7a6b8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -46,12 +46,12 @@ Imports: ZarrArray, RBGL, reticulate, + anndataR, sf, S4Arrays, S4Vectors, SingleCellExperiment, - SummarizedExperiment, - zellkonverter + SummarizedExperiment Suggests: BiocStyle, ggnewscale, @@ -62,8 +62,7 @@ Suggests: SpatialData.data, SpatialData.plot, testthat, - DT, - anndataR + DT Remotes: keller-mark/anndataR@spatialdata, HelenaLC/SpatialData.data, diff --git a/R/read.R b/R/read.R index 47c99038..c92f9289 100644 --- a/R/read.R +++ b/R/read.R @@ -144,7 +144,7 @@ readShape <- function(x, ...) { full.names = FALSE) lapply(ts, \(z) { zs <- sd$read_zarr(file.path(x, "tables", z)) - se <- AnnData2SCE(zs) + se <- zs$as_SingleCellExperiment() nm <- "spatialdata_attrs" md <- metadata(se)[[nm]] int_metadata(se)[[nm]] <- md From 2a6c24fe78dedd66234bf8468335240c8edf87f7 Mon Sep 17 00:00:00 2001 From: Artur-man Date: Sun, 29 Mar 2026 19:56:43 +0200 Subject: [PATCH 5/7] import anndataR --- NAMESPACE | 2 +- R/read.R | 2 +- man/SpatialData.Rd | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index a090f831..7dacaede 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -80,6 +80,7 @@ exportMethods(tableNames) exportMethods(tables) exportMethods(translation) exportMethods(valTable) +import(anndataR) import(geoarrow) importClassesFrom(S4Arrays,Array) importClassesFrom(S4Vectors,DFrame) @@ -149,4 +150,3 @@ importFrom(sf,st_sfc) importFrom(utils,.DollarNames) importFrom(utils,head) importFrom(utils,tail) -importFrom(zellkonverter,AnnData2SCE) diff --git a/R/read.R b/R/read.R index c92f9289..7f71065e 100644 --- a/R/read.R +++ b/R/read.R @@ -126,9 +126,9 @@ readShape <- function(x, ...) { packages=c( "python==3.13.0"), pip=allp) +#' @import anndataR #' @importFrom reticulate import #' @importFrom S4Vectors metadata -#' @importFrom zellkonverter AnnData2SCE #' @importFrom SingleCellExperiment int_metadata #' @importFrom basilisk basiliskStart basiliskStop basiliskRun .readTables_basilisk <- function(x) { diff --git a/man/SpatialData.Rd b/man/SpatialData.Rd index e760cfd6..9521d85c 100644 --- a/man/SpatialData.Rd +++ b/man/SpatialData.Rd @@ -50,8 +50,8 @@ \alias{element,SpatialData,ANY,numeric-method} \alias{element,SpatialData,ANY,missing-method} \alias{element,SpatialData,ANY,ANY-method} -\alias{[[<-,SpatialData,numeric,ANY-method} -\alias{[[<-,SpatialData,character,ANY-method} +\alias{[[<-,SpatialData,numeric,ANY,ANY-method} +\alias{[[<-,SpatialData,character,ANY,ANY-method} \title{The `SpatialData` class} \usage{ SpatialData(images, labels, points, shapes, tables) @@ -88,9 +88,9 @@ SpatialData(images, labels, points, shapes, tables) \S4method{element}{SpatialData,ANY,ANY}(x, i, j) -\S4method{[[}{SpatialData,numeric,ANY}(x, i) <- value +\S4method{[[}{SpatialData,numeric,ANY,ANY}(x, i) <- value -\S4method{[[}{SpatialData,character,ANY}(x, i) <- value +\S4method{[[}{SpatialData,character,ANY,ANY}(x, i) <- value } \arguments{ \item{images}{list of \code{\link{ImageArray}}s} From 4bd717391f02794a3255c65312a9eb504109658a Mon Sep 17 00:00:00 2001 From: Artur-man Date: Sun, 29 Mar 2026 20:50:51 +0200 Subject: [PATCH 6/7] update anndataR message --- R/read.R | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/R/read.R b/R/read.R index 7f71065e..fbdba37e 100644 --- a/R/read.R +++ b/R/read.R @@ -155,8 +155,9 @@ readShape <- function(x, ...) { } .readTable_anndataR <- function(x) { if (!requireNamespace('anndataR', quietly=TRUE)) { - stop("To use this function, install the 'anndataR' package via\n", - "`BiocManager::install(\"keller-mark/anndataR\", ref=\"spatialdata\")`") + message("To make sure 'anndataR' package works as intended, ", + "install the development version via\n", + "`BiocManager::install(\"keller-mark/anndataR\", ref=\"spatialdata\")`") } suppressWarnings({ # suppress warnings related to hidden files anndataR::read_zarr(x, as="SingleCellExperiment") From f49d15064a4311a1ebde740c162b9ff5b96cfa14 Mon Sep 17 00:00:00 2001 From: Artur-man Date: Sun, 29 Mar 2026 22:02:10 +0200 Subject: [PATCH 7/7] update NEWS and remove zellkonverter comments --- R/read.R | 8 ++++---- inst/NEWS | 8 ++++++++ man/readSpatialData.Rd | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/R/read.R b/R/read.R index fbdba37e..7f64e2ba 100644 --- a/R/read.R +++ b/R/read.R @@ -27,10 +27,10 @@ # "zarr==2.18.4", "zict==3.0.0") allp = c("zarr==3.1.5", "spatialdata==0.7.0", "spatialdata_io==0.6.0", "spatialdata_plot==0.2.14", "setuptools==75.8.0") -# notes from VJC -- readSpatialData was modified below so -# that if anndataR = FALSE, spatialdata.read_zarr is used +# notes from VJC/AM -- readSpatialData was modified below so +# that if anndataR = FALSE, anndata.read_zarr is used # to get the whole zarr store, and then the tables are -# transformed via zellkonverter. this gives a 10x speedup +# transformed via anndataR. This gives a 10x speedup # for ingesting the visium_hd_3.0.0 example but fails on # the blobs dataset in example("table-utils") because # of matters related to metadata/hasTable behavior @@ -53,7 +53,7 @@ allp = c("zarr==3.1.5", "spatialdata==0.7.0", "spatialdata_io==0.6.0", #' @param anndataR logical specifying whether #' to use \code{anndataR} to read tables; #' defaults to FALSE in `readSpatialData`, and `readTable`, -#' so that pythonic \code{spatialdata} and \code{zellkonverter} are used. +#' so that pythonic \code{anndata} are used. #' @param ... option arguments passed to and from other methods. #' #' @return diff --git a/inst/NEWS b/inst/NEWS index d61edd0f..d7033001 100644 --- a/inst/NEWS +++ b/inst/NEWS @@ -1,3 +1,11 @@ +changes in version 0.99.24 + +- ZarrArray imported by Bioconductor/ZarrArray +- Rarr replaces pizzarr for importing tables via anndataR +- anndataR replaces zellkonverter +- update basilisk env to spatialdata==0.7.0 +- replace spatialdata.read with anndata.read_zarr to read tables + changes in version 0.99.22 - split off 'SpatialData.data' diff --git a/man/readSpatialData.Rd b/man/readSpatialData.Rd index e6986bcb..fdb1dcc3 100644 --- a/man/readSpatialData.Rd +++ b/man/readSpatialData.Rd @@ -44,7 +44,7 @@ to skip a layer, or a integer vector specifying which elements to read.} \item{anndataR}{logical specifying whether to use \code{anndataR} to read tables; defaults to FALSE in `readSpatialData`, and `readTable`, -so that pythonic \code{spatialdata} and \code{zellkonverter} are used.} +so that pythonic \code{anndata} are used.} } \value{ \itemize{