@@ -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