From 97698c9f198990cf17c88caa0741c2bf26e83658 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Pag=C3=A8s?= Date: Tue, 9 Jul 2024 12:03:31 -0700 Subject: [PATCH 1/3] Compatibity with DelayedArray 0.31.7 The following breaking changes happened between DelayedArray < 0.31.5 and 0.31.7: The OLD_extract_sparse_array() generic and SparseArraySeed objects are now deprecated in favor of the new extract_sparse_array() generic defined in the SparseArray package. Methods for the new extract_sparse_array() generic are expected to return a SparseArray derivative, typically an SVT_SparseArray object but COO_SparseArray objects are ok. This commit restores compatibility with DelayedArray 0.31.7. --- DESCRIPTION | 9 +++++---- NAMESPACE | 7 +++---- R/removeAmbience.R | 8 ++++++-- R/utils.R | 24 +++++++++++------------- 4 files changed, 25 insertions(+), 23 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index dcc0703..8fe925d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: DropletUtils -Version: 1.25.0 -Date: 2022-11-21 +Version: 1.25.1 +Date: 2024-07-09 Title: Utilities for Handling Single-Cell Droplet Data Authors@R: c( person("Aaron", "Lun", role = "aut"), @@ -21,7 +21,8 @@ Imports: GenomicRanges, SummarizedExperiment, BiocParallel, - DelayedArray, + SparseArray (>= 1.5.19), + DelayedArray (>= 0.31.7), DelayedMatrixStats, HDF5Array, rhdf5, @@ -63,4 +64,4 @@ LinkingTo: dqrng, scuttle SystemRequirements: C++11, GNU make -RoxygenNote: 7.3.0 +RoxygenNote: 7.3.2 diff --git a/NAMESPACE b/NAMESPACE index c1c2b42..fdd3dfe 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -44,8 +44,10 @@ exportMethods(hashedDrops) exportMethods(removeAmbience) import(SingleCellExperiment) importClassesFrom(DelayedArray,DelayedArray) -importClassesFrom(DelayedArray,SparseArraySeed) +importClassesFrom(Matrix,CsparseMatrix) importClassesFrom(Matrix,dgCMatrix) +importClassesFrom(SparseArray,COO_SparseArray) +importClassesFrom(SparseArray,SparseArray) importFrom(BiocGenerics,match) importFrom(BiocParallel,SerialParam) importFrom(BiocParallel,bplapply) @@ -54,15 +56,12 @@ importFrom(BiocParallel,bpnworkers) importFrom(BiocParallel,bpstart) importFrom(BiocParallel,bpstop) importFrom(DelayedArray,DelayedArray) -importFrom(DelayedArray,SparseArraySeed) importFrom(DelayedArray,blockApply) importFrom(DelayedArray,colAutoGrid) importFrom(DelayedArray,currentViewport) importFrom(DelayedArray,getAutoBPPARAM) importFrom(DelayedArray,makeNindexFromArrayViewport) -importFrom(DelayedArray,seed) importFrom(DelayedArray,setAutoBPPARAM) -importFrom(DelayedArray,which) importFrom(DelayedArray,write_block) importFrom(DelayedMatrixStats,colMins) importFrom(DelayedMatrixStats,colQuantiles) diff --git a/R/removeAmbience.R b/R/removeAmbience.R index 21c592c..a70b5ac 100644 --- a/R/removeAmbience.R +++ b/R/removeAmbience.R @@ -109,7 +109,9 @@ NULL #' @importFrom methods is #' @importFrom stats pnbinom qnbinom +#' @importClassesFrom Matrix CsparseMatrix #' @importFrom edgeR q2qnbinom +#' @importClassesFrom SparseArray SparseArray #' @importFrom DelayedArray makeNindexFromArrayViewport write_block currentViewport .remap_quantiles <- function(block, matches, old.means, new.means, size.factors, group.sf, dispersion, sink) { vp <- currentViewport() @@ -139,8 +141,10 @@ NULL if (!is.null(sink)) { write_block(sink, vp, q) NULL - } else if (is(block, "SparseArraySeed")) { - as(q, "CsparseMatrix") + } else if (is(block, "SparseArray")) { # that's if we don't want to return + as(q, "CsparseMatrix") # any SparseArray derivatives at + # all, even though SVT_SparseArray + # objects would probably be fine } else { q } diff --git a/R/utils.R b/R/utils.R index 8ae3230..6a10804 100644 --- a/R/utils.R +++ b/R/utils.R @@ -11,21 +11,19 @@ as.integer(round(colSums(m))) } -#' @importFrom DelayedArray DelayedArray SparseArraySeed which seed -#' @importFrom beachmat whichNonZero -#' @importClassesFrom DelayedArray DelayedArray SparseArraySeed +#' @importClassesFrom SparseArray COO_SparseArray +#' @importFrom DelayedArray setAutoBPPARAM DelayedArray +#' @importClassesFrom DelayedArray DelayedArray .realize_DA_to_memory <- function(m, BPPARAM) { if (is(m, "DelayedArray")) { - if (!is(seed(m), "SparseArraySeed")) { - idx <- whichNonZero(m, BPPARAM) - m <- DelayedArray( - SparseArraySeed( - nzindex=cbind(idx$i, idx$j), - nzdata=idx$x, - dim=dim(m), - dimnames=dimnames(m) - ) - ) + if (!is(m@seed, "COO_SparseArray")) { + # Coercion from DelayedArray to COO_SparseArray uses block + # processing. + old <- .parallelize(BPPARAM) + on.exit(setAutoBPPARAM(old)) + new_seed <- as(m, "COO_SparseArray") + + m <- DelayedArray(new_seed) } } From 80ec44f39b5e79c1d06b3b3f7ed6a1a3ec2ccd67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Pag=C3=A8s?= Date: Fri, 12 Jul 2024 08:30:56 -0700 Subject: [PATCH 2/3] require SparseArray >= 1.5.18 instead of 1.5.19 --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 8fe925d..b274944 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -21,7 +21,7 @@ Imports: GenomicRanges, SummarizedExperiment, BiocParallel, - SparseArray (>= 1.5.19), + SparseArray (>= 1.5.18), DelayedArray (>= 0.31.7), DelayedMatrixStats, HDF5Array, From 6e27ea9b1c7a5e9f58b64a02f31cc16ae6cf75af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Pag=C3=A8s?= Date: Wed, 17 Jul 2024 09:10:03 -0700 Subject: [PATCH 3/3] require DelayedArray >= 0.31.9 --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index b274944..fe9144d 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -22,7 +22,7 @@ Imports: SummarizedExperiment, BiocParallel, SparseArray (>= 1.5.18), - DelayedArray (>= 0.31.7), + DelayedArray (>= 0.31.9), DelayedMatrixStats, HDF5Array, rhdf5,