This implementation uses the RSpectra package to efficiently compute a
small subset of eigenvalues and eigenvectors, as a small subset is typically
used. Hence it's much faster and memory efficient than the original
implementation in adespatial. However, this implementation here does
not support row and column weighting other than the standard ones for PCA.,
so the adespatial implementation is more general.
Arguments
- x
A matrix whose columns are features and rows are cells.
- listw
A
listwobject, a spatial neighborhood graph for the cells inx. The length must be equal to the number of row ofx.- nfposi
Number of positive eigenvalues and their eigenvectors to compute.
- nfnega
Number of nega eigenvalues and their eigenvectors to compute. These indicate negative spatial autocorrelation.
- scale
Logical, whether to scale the data.
Value
A matrix for the cell embeddings in each spatial PC, with attribute
loading for the eigenvectors or gene loadings, and attribute
eig for the eigenvalues.
Note
Eigen decomposition will fail if any feature has variance zero leading to NaN in the scaled matrix.
References
Dray, S., Said, S. and Debias, F. (2008) Spatial ordination of vegetation data using a generalization of Wartenberg's multivariate spatial correlation. Journal of vegetation science, 19, 45-56.
Examples
library(SFEData)
library(scater)
sfe <- McKellarMuscleData("small")
#> see ?SFEData and browseVignettes('SFEData') for documentation
#> loading from cache
sfe <- sfe[,sfe$in_tissue]
sfe <- logNormCounts(sfe)
inds <- order(rowSums(logcounts(sfe)), decreasing = TRUE)[1:50]
mat <- logcounts(sfe)[inds,]
g <- findVisiumGraph(sfe)
out <- multispati_rsp(t(mat), listw = g, nfposi = 10, nfnega = 10)