Cell-cell communication mediated by secreted proteins from scRNA-Seq data
Source:vignettes/scCCC.Rmd
      scCCC.RmdThis tutorial demonstrates how to infer secreted protein-mediated cell-cell communication (CCC) from scRNA-seq data. This analysis requires an scRNA-seq dataset with two distinct conditions. SecAct employs two key criteria to identify condition-specific cell-cell communication mediated by a particular secreted protein: (1) upregulated gene expression of the secreted protein in one cell type (defined the source cell type), and (2) increased signaling activity of the same secreted protein in another cell type (defined the receiver cell type). For this demonstration, we employ an ovarian cancer (OV) scRNA-Seq study containing samples from both primary and metastatic sites.
Prepare expression matrix
The OV scRNA-Seq data is stored in a Seurat object. The information
of cell-type annotations and anatomical sites are stored in the columns
MyCellType and Groups of
meta.data from this Seurat object, respectively. Users can
easily access them using the following code.
library(SecAct)
library(Seurat)
# download data from https://hpc.nih.gov/~Jiang_Lab/SecAct_Package/OV_scRNAseq_Seurat.rds
# load scRNA-Seq data
Seurat_obj <- readRDS("OV_scRNAseq_Seurat.rds")
# cell count
table(Seurat_obj@meta.data[,"Groups"])
## Metastatic    Primary 
##      18746      17589 
# show UMAP plot
my_cols <- c(
    'B'='#C88888','CD4T'='#3288bd','CD8T'='#B95FBB','DC'='#63636d',
    'Endothelial'='#D4D915','Fibroblast'='#66c2a5','Macrophage'='#ff9a36',
    'NK'='#bb8761','Tex'='#fe666d','Treg'='#E6C122','Tumor'='#A4DFF2'
)
p1 <- DimPlot(Seurat_obj, reduction = "umap", cols = my_cols, group.by = "MyCellType")
p2 <- DimPlot(Seurat_obj, reduction = "umap", group.by = "Groups")
p1+p2
Infer cell-cell communication
SecAct performs three steps to infer condition-specific
cell-cell communication mediated by secreted proteins: (1) assessing
changes in secreted protein expression for each cell type (defined the
source cell type) between two conditions, (2) calculating changes in
secreted protein activity for each cell type (defined the receiver cell
type) between two conditions, and (3) linking source and receiver cell
types.
When running SecAct.CCC.scRNAseq, user need to assign
the cellType_meta and condition_meta with the
column names of cell-type annotation and condition information in
Seurat_obj@meta.data, respectively. Also, claim what case
and control conditions are by conditionCase and
conditionControl. User can find the SecAct results in
Seurat_obj @misc $SecAct_output.
# infer activity; ~10 mins
Seurat_obj <- SecAct.CCC.scRNAseq(
  Seurat_obj, 
  cellType_meta="MyCellType",
  condition_meta="Groups", 
  conditionCase="Metastatic", 
  conditionControl="Primary"
)  
# show output
names(Seurat_obj @misc $SecAct_output)
## [1] "SecretedProteinExpression"
## [2] "SecretedProteinActivity"
## [3] "SecretedProteinCCC"
# cell-cell communication results
head(Seurat_obj @misc $SecAct_output $SecretedProteinCCC)Visualize cell-cell communication
We provide two types of visualization plot for cell-cell communication, i.e., heatmap and circle plot. The number in the heatmap represents the count of secreted proteins from senders to receivers.
SecAct.CCC.heatmap(Seurat_obj, row.sorted=TRUE, column.sorted=TRUE, colors_cellType=my_cols)
SecAct.CCC.circle(Seurat_obj, colors_cellType=my_cols)

Visualize secreted signaling flow
User can select the cell-cell communication of interest from
Seurat_obj @misc $SecAct_output $SecretedProteinCCC to
visualize them using SecAct.CCC.sankey. You need to assign
values to sender, secretedProtein, and
receiver.
sender <- c("Fibroblast","Macrophage","Endothelial","CD8T","Tex")
secretedProtein <- c(
  "BGN","BMP1","COL15A1","COL18A1","COL1A1",
  "COL1A2","CST3","FAP","FBN1","FN1",
  "FSTL1","HSPG2","HTRA1","ISG15","MXRA5",
  "POSTN","SERPING1","SPARC","TGFB1","TGFBI",
  "THBS2","TIMP1","VCAN"
)
receiver <- c("Tumor")
SecAct.CCC.sankey(
  Seurat_obj, 
  colors_cellType = my_cols, 
  sender = sender, 
  secretedProtein = secretedProtein, 
  receiver = receiver
)