From 58b455cb8af30b9ae5067cab15a31134f4428e37 Mon Sep 17 00:00:00 2001 From: Josh Buckner Date: Sat, 13 Dec 2025 14:54:09 -0500 Subject: [PATCH 1/2] return a plain ISM from subsetting a BISM if groups does not match row/col names --- R/InfinitySparseMatrix.R | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/R/InfinitySparseMatrix.R b/R/InfinitySparseMatrix.R index e6c674ca..afd1b72c 100644 --- a/R/InfinitySparseMatrix.R +++ b/R/InfinitySparseMatrix.R @@ -1120,6 +1120,10 @@ as.list.DenseMatrix <- function(x, ...) { subset.BlockedInfinitySparseMatrix <- function(x, subset, select, ...) { subIsm <- callGeneric(as(x, "InfinitySparseMatrix"), subset, select) oldNames <- names(x@groups) + if (!setequal(union(x@rownames, x@colnames), oldNames)) { + warning("Subsetting BlockedInfinitySparseMatrix with rownames union colnames not set equal to group names results in an InfinitySparseMatrix.") + return(subIsm) + } if (!is.null(oldNames)) { # we can use the groups names to subset groups subNames <- oldNames[which((oldNames %in% subIsm@rownames) | (oldNames %in% subIsm@colnames))] From 6821cf3e193f5a148f3c4b63b8b8220eb9926cbe Mon Sep 17 00:00:00 2001 From: Josh Buckner Date: Mon, 12 Jan 2026 14:56:17 -0500 Subject: [PATCH 2/2] test subset using all-in; break up long warning msg --- R/InfinitySparseMatrix.R | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/R/InfinitySparseMatrix.R b/R/InfinitySparseMatrix.R index afd1b72c..fa7e498b 100644 --- a/R/InfinitySparseMatrix.R +++ b/R/InfinitySparseMatrix.R @@ -1120,8 +1120,10 @@ as.list.DenseMatrix <- function(x, ...) { subset.BlockedInfinitySparseMatrix <- function(x, subset, select, ...) { subIsm <- callGeneric(as(x, "InfinitySparseMatrix"), subset, select) oldNames <- names(x@groups) - if (!setequal(union(x@rownames, x@colnames), oldNames)) { - warning("Subsetting BlockedInfinitySparseMatrix with rownames union colnames not set equal to group names results in an InfinitySparseMatrix.") + if (!all(union(x@rownames, x@colnames) %in% oldNames)) { + warning(paste("Subsetting BlockedInfinitySparseMatrix with", + "rownames union colnames not set equal to", + "group names results in an InfinitySparseMatrix.")) return(subIsm) } if (!is.null(oldNames)) { # we can use the groups names to subset groups