| name | bioconductor-hoodscanr |
| description | hoodscanR is an user-friendly R package providing functions to assist cellular neighborhood analysis of any spatial transcriptomics data with single-cell resolution. All functions in the package are built based on the SpatialExperiment object, allowing integration into various spatial transcriptomics-related packages from Bioconductor. The package can result in cell-level neighborhood annotation output, along with funtions to perform neighborhood colocalization analysis and neighborhood-based ce |
hoodscanR
Workflows
Standard Workflow
Perform cellular neighborhood scanning, colocalization analysis, and neighborhood-based clustering on single-cell spatial transcriptomics data.
library(hoodscanR)
library(SpatialExperiment)
library(scico)
data("spe_test")
spe <- readHoodData(spe, anno_col = "celltypes")
plotTissue(spe, color = cell_annotation, size = 1.5, alpha = 0.8)
fnc <- findNearCells(spe, k = 100)
pm <- scanHoods(fnc$distance)
hoods <- mergeByGroup(pm, fnc$cells)
plotHoodMat(hoods, n = 10, hm_height = 5)
spe <- mergeHoodSpe(spe, hoods)
spe <- calcMetrics(spe, pm_cols = colnames(hoods))
plotTissue(spe, size = 1.5, color = perplexity) + scale_color_scico(palette = "tokyo")
plotColocal(spe, pm_cols = colnames(hoods))
spe <- clustByHood(spe, pm_cols = colnames(hoods), k = 10)
plotProbDist(spe, pm_cols = colnames(hoods), by_cluster = TRUE, plot_all = TRUE, show_clusters = as.character(seq(10)))
plotTissue(spe, color = clusters)
Input/Output Note: Inputs a SpatialExperiment object with cell-type annotations; outputs an updated SpatialExperiment containing neighborhood probabilities, entropy, perplexity, and neighborhood-based cluster assignments.
When to Use
- To perform cellular neighborhood analysis on single-cell resolution spatial transcriptomics data using
SpatialExperiment objects.
- To calculate the probability of each cell associating with its spatial neighbors using
scanHoods().
- To analyze and visualize cell-type colocalization patterns across a tissue slide using
plotColocal().
- To cluster cells based on their local neighborhood composition using
clustByHood().
When NOT to Use
- For spot-based spatial transcriptomics data (e.g., 10x Visium) without single-cell resolution; use standard
SpatialExperiment workflows because hoodscanR is designed for single-cell resolution data.
- For standard non-spatial single-cell RNA-seq analysis; use
scran or Seurat because hoodscanR requires spatial coordinates (x and y).
- For cell-type deconvolution of spatial spots; use
RCTD because hoodscanR assumes cells are already annotated with cell types.
Data Requirements
- Input format: A
SpatialExperiment object.
- Structure: Must contain spatial coordinates (accessible via
spatialCoords) and cell-type annotations in colData (specified via anno_col in readHoodData()).
Key Parameters
- anno_col (NULL): Character string specifying the column name in
colData containing cell-type annotations.
- k (
100): The number of nearest neighbor cells to identify in findNearCells().
- n (
10): Number of random cells to plot in plotHoodMat().
- targetCells (NULL): Vector of specific cell IDs to plot in
plotHoodMat().
- pm_cols (NULL): Column names of the probability matrix to use for metric calculation or clustering.
Best Practices
- Format the input
SpatialExperiment object using readHoodData() to ensure compatibility with all package functions.
- Use
perplexity rather than entropy for a more intuitive measure of neighborhood mixture (e.g., perplexity of 2 indicates a 50/50 mix of two neighborhoods).
- Set
k = 100 in findNearCells() as a robust starting point for capturing local cellular neighborhoods.
- Visualize neighborhood probability distributions within each cluster using
plotProbDist() to interpret the biological meaning of the clusters.
Common Pitfalls
- Mismatched cell-type annotation column: Occurs if
anno_col is not correctly specified in readHoodData(). Fix: Verify the column name in colData(spe) and pass it exactly to readHoodData(spe, anno_col = "your_column").
- Slow neighbor search on large datasets: Occurs when searching for very large values of
k. Fix: Keep k at a reasonable size (e.g., 50 to 100) since the underlying search uses the fast Approximate Near Neighbor (ANN) algorithm.
Alternatives
Seurat: For spatial data visualization and clustering, though lacking the specific softmax-based neighborhood probability modeling.
Giotto: For comprehensive spatial analysis, including neighborhood enrichment and cell-to-cell interaction.
squidpy: For spatial neighbor graph analysis (Python-based).
Citations
- Liu, N. and Davis, M. (2026), hoodscanR.
References