Masking operations serve to aggregate data across layers, e.g.,
counting points in shapes, averaging image channels by labels, etc.
For added flexibility, these may be carried out directly between elements,
or using an input SpatialData object and specifying element names.
Usage
# S4 method for class 'SpatialData'
mask(
x,
i,
j,
k,
how = NULL,
name = function(i, j) sprintf("%s_by_%s", i, j),
...
)Arguments
- x
SpatialDataobject.- i, j
character string; names of elements to mask, specifically,
iwill be masked byj, adding atableforjinx.- k
string or scalar integer; specifies target coordinate space (defaults to first common coordinate space between
iandj)- how
character string; statistic to use for masking.
- name
function use to generate the new
table's name.- ...
optional arguments passed to and from other methods.
Examples
library(SingleCellExperiment)
#> Loading required package: SummarizedExperiment
#> Loading required package: MatrixGenerics
#> Loading required package: matrixStats
#>
#> Attaching package: ‘MatrixGenerics’
#> The following objects are masked from ‘package:matrixStats’:
#>
#> colAlls, colAnyNAs, colAnys, colAvgsPerRowSet, colCollapse,
#> colCounts, colCummaxs, colCummins, colCumprods, colCumsums,
#> colDiffs, colIQRDiffs, colIQRs, colLogSumExps, colMadDiffs,
#> colMads, colMaxs, colMeans2, colMedians, colMins, colOrderStats,
#> colProds, colQuantiles, colRanges, colRanks, colSdDiffs, colSds,
#> colSums2, colTabulates, colVarDiffs, colVars, colWeightedMads,
#> colWeightedMeans, colWeightedMedians, colWeightedSds,
#> colWeightedVars, rowAlls, rowAnyNAs, rowAnys, rowAvgsPerColSet,
#> rowCollapse, rowCounts, rowCummaxs, rowCummins, rowCumprods,
#> rowCumsums, rowDiffs, rowIQRDiffs, rowIQRs, rowLogSumExps,
#> rowMadDiffs, rowMads, rowMaxs, rowMeans2, rowMedians, rowMins,
#> rowOrderStats, rowProds, rowQuantiles, rowRanges, rowRanks,
#> rowSdDiffs, rowSds, rowSums2, rowTabulates, rowVarDiffs, rowVars,
#> rowWeightedMads, rowWeightedMeans, rowWeightedMedians,
#> rowWeightedSds, rowWeightedVars
#> Loading required package: GenomicRanges
#> Loading required package: stats4
#> Loading required package: BiocGenerics
#> Loading required package: generics
#>
#> Attaching package: ‘generics’
#> The following objects are masked from ‘package:base’:
#>
#> as.difftime, as.factor, as.ordered, intersect, is.element, setdiff,
#> setequal, union
#>
#> Attaching package: ‘BiocGenerics’
#> The following objects are masked from ‘package:stats’:
#>
#> IQR, mad, sd, var, xtabs
#> The following objects are masked from ‘package:base’:
#>
#> Filter, Find, Map, Position, Reduce, anyDuplicated, aperm, append,
#> as.data.frame, basename, cbind, colnames, dirname, do.call,
#> duplicated, eval, evalq, get, grep, grepl, is.unsorted, lapply,
#> mapply, match, mget, order, paste, pmax, pmax.int, pmin, pmin.int,
#> rank, rbind, rownames, sapply, saveRDS, table, tapply, unique,
#> unsplit, which.max, which.min
#> Loading required package: S4Vectors
#>
#> Attaching package: ‘S4Vectors’
#> The following object is masked from ‘package:utils’:
#>
#> findMatches
#> The following objects are masked from ‘package:base’:
#>
#> I, expand.grid, unname
#> Loading required package: IRanges
#> Loading required package: Seqinfo
#> Loading required package: Biobase
#> Welcome to Bioconductor
#>
#> Vignettes contain introductory material; view with
#> 'browseVignettes()'. To cite Bioconductor, see
#> 'citation("Biobase")', and for packages 'citation("pkgname")'.
#>
#> Attaching package: ‘Biobase’
#> The following object is masked from ‘package:MatrixGenerics’:
#>
#> rowMedians
#> The following objects are masked from ‘package:matrixStats’:
#>
#> anyMissing, rowMedians
x <- file.path("extdata", "blobs.zarr")
x <- system.file(x, package="SpatialData")
x <- readSpatialData(x, tables=FALSE)
# count points in shapes
y <- mask(x, "blobs_points", "blobs_circles")
tail(tables(y), 1)
#> $blobs_points_by_blobs_circles
#> class: SingleCellExperiment
#> dim: 2 6
#> metadata(0):
#> assays(1): counts
#> rownames(2): gene_a gene_b
#> rowData names(0):
#> colnames(6): 0 1 ... 4 5
#> colData names(1): n_instances
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
#>
# average image channels by labels
y <- mask(x, "blobs_image", "blobs_labels")
#> Missing 'how'; defaulting to 'mean'
tail(tables(y), 1)
#> $blobs_image_by_blobs_labels
#> class: SingleCellExperiment
#> dim: 3 10
#> metadata(0):
#> assays(1): mean
#> rownames(3): 0 1 2
#> rowData names(0):
#> colnames(10): 3 4 ... 15 16
#> colData names(0):
#> reducedDimNames(0):
#> mainExpName: NULL
#> altExpNames(0):
#>
# TODO: shape,shape example