The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
BLISA Workflow
Introduction
BLISA identifies spatially enriched ligand–receptor interactions from
spatial transcriptomics data using local bivariate Moran’s I
statistics.
This vignette demonstrates a typical BLISA workflow using Xenium
data.
Load Package
library(blisa)
library(scider)
library(CellChat)
library(patchwork)
Load Example Data
Example Xenium dataset distributed with the package:
spe <- readRDS(
system.file("extdata", "xenium380Cell_spe.rds", package = "blisa")
)
dim(spe)
Visualize Spatial Cell Types
cell_type_colors <- c(
RColorBrewer::brewer.pal(7, "Set1"),
RColorBrewer::brewer.pal(6, "Set2")
)
names(cell_type_colors) <- unique(spe$cell_type)
scider::plotSpatial(
spe,
group.by = "cell_type",
pt.size = 0.2,
pt.alpha = 0.9,
cols = cell_type_colors
)
Filter Ligand–Receptor Pairs
Restrict CellChat ligand–receptor database to genes present in the
panel:
counts_matrix <- SummarizedExperiment::assay(spe, "counts")
LR_pairs_filtered <- filterLRpairs(
counts = counts_matrix,
min_ligand = 1,
min_receptor = 1,
LR_df = CellChatDB.human$interaction
)
head(LR_pairs_filtered)
Run BLISA
system.time(BLISAres<- runBLISA.spe.isolates.removed(
spe,
LR_df = LR_pairs_filtered))
BLISAres$LR_out
Summarize Ligand–Receptor Interaction Enrichment
plotLRIsum(BLISAres$LR_out)
Visualize Spatial Distribution of Top LR Pairs
plots <- lapply(seq_len(nrow(BLISAres$LR_results)), function(i) {
plotHotspots(BLISAres, index = i)
})
combined_plot <- patchwork::wrap_plots(plots, ncol = 3)
combined_plot
pdf("xenium_LRI_spatial_plots.pdf", width = 15, height = 12)
print(combined_plot)
dev.off()
Run Cell–Cell Interaction Analysis
When blisa() is called with a group
argument (e.g. group = "cell_type"), CCI scores are
computed automatically and stored in BLISAres$CCI_scores.
To compute or recompute them after the fact, call runCCI()
on the blisa object and supply counts_by_group
from hexBinCells():
# CCI already computed inside blisa() — retrieve directly
CCIres <- BLISAres$CCI_scores
# Alternatively, compute on an existing blisa object that lacks CCI_scores:
# binned <- hexBinCells(coords, counts_matrix, bin_size = 50, group = cell_type_vec)
# BLISAres <- runCCI(BLISAres, counts_by_group = binned$counts_by_group)
# CCIres <- BLISAres$CCI_scores
head(CCIres)
Visualize CCI Heatmap
plotCCI(BLISAres, sender = "Invasive_Tumor", receiver = "Invasive_Tumor")
Visualize One Ligand–Receptor Pair
p <- plotCCIpair(BLISAres, ligand = "CXCL12", receptor = "CXCR4")
draw(
p,
heatmap_legend_side = "right",
padding = unit(c(5, 5, 10, 10), "mm")
)
CCIspatial(
spe,
BLISAres,
index = 2
)
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.