Spatially resolved transcriptomics (ST) provides the informative details of genes and retained the crucial spatial information, which have enabled the uncovering of spatial architecture in intact organs, shedding light on the spatially resolved cell-cell communications mediating tissue homeostasis, development and disease. However, inference of cell-cell communications for ST data remains a great challenge. Here, we present SpaTalk, a spatially resolved cell-cell communication inference method relying on the graph network and knowledge graph to model ligand-receptor-target signaling network between the spatially proximal cells, which were decomposed from the ST data through the non-negative linear model and spatial mapping between single-cell RNA-seq and ST data. SpaTalk is a reliable method that can help scientists uncover the spatially resolved cell-cell communications for either single-cell or spot-based ST data universally, providing new insights into the understanding of spatial cellular dynamics in tissues.
- install dependent packages
devtools
andNNLM
> install.packages(pkgs = 'devtools')
> devtools::install_github('linxihui/NNLM')
- then install SpaTalk
> devtools::install_github('ZJUFanLab/SpaTalk')
# or download the repository as ZIP
> devtools::install_local("/path/to/SpaTalk-main.zip")
SpaTalk method consists of two components, wherein the first is to dissect the cell-type composition of ST data and the second is to infer the spatially resolved cell-cell communications over the decomposed single-cell ST data. Classification and description of SpaTalk functions are shown in the wiki page and tutorial
# st_data: A matrix containing counts of st data
# st_meta: A data.frame containing x and y
# sc_data: A matrix containing counts of scRNA-seq data as the reference
# sc_celltype: A character containing the cell types for scRNA-seq data
> obj <- createSpaTalk(st_data, st_meta, species)
>
> obj
An object of class SpaTalk
996 genes across 509 spots (0 lrpair)
>
> obj <- dec_celltype(obj, sc_data, sc_celltype)
# obj: SpaTalk object containg ST and scRNA-seq data
# lrpairs: A data.frame of the system data containing ligand-receptor pairs
# pathways: A data.frame of the system data containing gene-gene interactions and pathways
# celltype_sender
# celltype_receiver
> obj <- find_lr_path(object = obj, lrpairs = lrpairs, pathways = pathways)
> obj <- dec_cci(obj, celltype_sender, celltype_receiver)
OR
> obj <- dec_cci_all(object)
# score in obj@lrpair is the combined score
> str(obj@lrpair)
'data.frame': 9 obs. of 9 variables:
$ ligand : chr "Inhba" "Inhba" "Sst" "Apoe" ...
$ receptor : chr "Acvr1c" "Acvr1c" "Sstr2" "Sdc4" ...
$ species : chr "Mouse" "Mouse" "Mouse" "Mouse" ...
$ celltype_sender : chr "eL6" "Astro" "SST" "Smc" ...
$ celltype_receiver : chr "PVALB" "eL2_3" "PVALB" "Astro" ...
$ lr_co_exp_num : num 8 8 2 31 21 5 16 4 5
$ lr_co_ratio : num 0.216 0.092 0.286 0.912 0.618 ...
$ lr_co_ratio_pvalue: num 0.001 0.042 0.009 0 0 0.028 0 0.001 0.001
$ score : num 0.855 0.837 0.707 0.709 0.709 ...
# score in obj@tf is the intra-cellular score
> str(obj@tf)
'data.frame': 8 obs. of 7 variables:
$ celltype_sender : chr "eL6" "Astro" "SST" "Smc" ...
$ celltype_receiver: chr "PVALB" "eL2_3" "PVALB" "Astro" ...
$ receptor : chr "Acvr1c" "Acvr1c" "Sstr2" "Sdc4" ...
$ tf : chr "Smad3" "Smad3" "Smad3" "Smad3" ...
$ n_hop : num 1 1 3 3 1 3 1 1
$ n_target : num 1 1 1 1 2 1 2 2
$ score : num 1 1 0.0565 0.0405 1 0.0871 1 1
SpaTalk uses the ligand-receptor interactions (LRIs) from CellTalkDB
, pathways from KEGG
and Reactome
, and transcrptional factors (TFs) from AnimalTFDB
by default. In the current version:
- SpaTalk can be applied to either single-cell (vignette) or spot-based (vignette) ST data
- SpaTalk allows to use custom LRIs(wiki), pathways, and TFs database (wiki)
- SpaTalk allows to use the parallel processing for
dec_celltype()
,dec_cci()
, anddec_cci_all()
- SpaTalk allows to use other deconvolution methods followed by the inference of cell-cell communications
- RCTD, Seurat, SPOTlight, deconvSeq, stereoscope, cell2location, or other methods
- SpaTalk allows to directly infer cell-cell communications skiping deconvolution
- SpaTalk can visualize cell-type compositions (wiki) and cell-cell communications (wiki)
- LRIs and pathways can be download at
data/
- Demo data can be download at
inst/extdata/
Please refer to the tutorial vignette with demo data processing steps. Detailed functions see the document
- Compatible with Seurat 5. see issue 40
- Fix the bug in
dec_celltype()
when using other deconvolution methods, see issue 11 - Fix the bug in
dec_celltype()
when usingdec_result
, see issue 30 - Fix the bug in
dec_cci()
anddec_cci_all()
, see issue 10 - Fix the bug in performing parallel functions, e.g.,
invalid character indexing
see issue 30 and issue 10 - Allow to retain genes consistent with reference
sc_data
for reconstructed single-cell ST data (wiki)
SpaTalk was developed by Xin Shao. Should you have any questions, please contact Xin Shao at [email protected]
Please cite us as "Shao, X., et al. Knowledge-graph-based cell-cell communication inference for spatially resolved transcriptomic data with SpaTalk. Nat Commun 13, 4429 (2022). https://doi.org/10.1038/s41467-022-32111-8"