Skip to content

ZJUFanLab/SpaTalk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SpaTalk

R >4.0 DOI jupyter DOI

A cell-cell communication inference approach for spatially resolved transcriptomic data

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

  • install dependent packages devtools and NNLM
> 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")

Usage

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

  • Cell-type decomposition to reconstruct single-cell ST atlas with known cell types

# 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)
  • Inference of cell-cell communication and ligand-receptor-target network in space

# 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

Note

CellTalkDB v1.0 KEGG pathway Reactome pathway AnimalTFDB v3.0

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:

Please refer to the tutorial vignette with demo data processing steps. Detailed functions see the document

News

  • 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 using dec_result, see issue 30
  • Fix the bug in dec_cci() and dec_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)

About

SpaTalk was developed by Xin Shao. Should you have any questions, please contact Xin Shao at xin_shao@zju.edu.cn

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"