Skip to content

Commit c12a1e0

Browse files
committed
simplify to one assay per t
1 parent 4e17e8b commit c12a1e0

1 file changed

Lines changed: 32 additions & 2 deletions

File tree

R/mask.R

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,32 @@ setMethod("mask_i_by_j",
120120
iv <- as.vector(iv[ok])
121121
tapply(iv, jv, how)
122122
}
123+
res <- if ("t" %in% axes(i, "name")) {
124+
ts <- seq_len(dim(di)[1])
125+
names(ts) <- paste0("t", ts)
126+
ix <- as.list(!logical(length(dim(di))))
127+
jx <- as.list(!logical(length(dim(dj))))
128+
lapply(ts, \(t) {
129+
ix[[1]] <- t; jx[[1]] <- t
130+
.di <- do.call(`[`, c(list(di), ix))
131+
.dj <- do.call(`[`, c(list(dj), jx))
132+
agg(.di, .dj, how)
133+
})
134+
} else {
135+
list(apply(di, 1, \(.di) agg(.di, dj, how)))
136+
}
137+
se <- SingleCellExperiment(lapply(res, t))
138+
rownames(se) <- channels(i)
139+
as <- assayNames(se)
140+
as <- if (is.null(as)) {
141+
how
142+
} else {
143+
paste0(how, "_", as)
144+
}
145+
assayNames(se) <- as
146+
return(se)
147+
148+
123149
# check for non-standard dimensions
124150
tzi <- which(axes(i, "name") %in% c("t", "z"))
125151
tzj <- which(axes(j, "name") %in% c("t", "z"))
@@ -143,8 +169,12 @@ setMethod("mask_i_by_j",
143169
# construct SCE:
144170
# data = tz combinations
145171
# dim. = instances x channels
146-
as <- lapply(res, \(.) `rownames<-`(t(.), channels(i)))
147-
se <- SingleCellExperiment(as)
172+
# if (length(dim(res[[1]])) == 1) {
173+
# nms <- list(NULL, names(res[[1]]))
174+
# res <- lapply(res, matrix, nrow=1, dimn=nms)
175+
# }
176+
se <- SingleCellExperiment(lapply(res, t))
177+
rownames(se) <- channels(i)
148178
# construct assay names with pattern 'how_t0z0'
149179
t <- "t" %in% axes(i, "name")
150180
z <- "z" %in% axes(i, "name")

0 commit comments

Comments
 (0)