Advanced Single-Cell Analysis•2026-09-12

Cell-Cell Communication

NM

Nasir Mahmood Abbasi, PhD

Bioinformatics Educator

Cell-Cell Communication
Tested on: Python 3.11, R 4.3.2, Ubuntu 24.04
Last Review: 2026-08-15

Learning Objectives & Prerequisites

  • Prerequisites: Complete scRNA-seq Basics, cell-type annotation, and sample-aware differential-expression concepts.
  • Objective: Infer candidate ligand-receptor communication programs and separate computational scores from experimentally established cell signaling.
  • Expected Output: A ranked interaction table with sender/receiver labels, database version, sample context, and validation hypothesis.

Suggested route: use the Bioinformatics Learning Path to review any prerequisite stage before continuing.

Cell-Cell Communication Analysis

Introduction

In multi-cellular organisms, cells do not exist in isolation. They constantly communicate through secreted ligands and membrane-bound receptors. Single-cell RNA-seq allows us to infer these communication networks by looking at the simultaneous expression of a ligand in one cell type and its cognate receptor in another cell type.

Two of the most powerful tools in R for inferring these networks are LIANA and CellChat.


1. LIANA (Ligand-Receptor Analysis Framework)

LIANA is incredibly powerful because it is not just one method - it is a wrapper that runs multiple cell-cell communication methods (like CellPhoneDB, NATMI, Connectome, and SingleCellSignalR) simultaneously and aggregates the results, giving you a consensus ranking of the most likely interactions.

Running LIANA

library(liana)
library(SCpubr)

# Run the LIANA wrapper on your Seurat or SingleCellExperiment object
liana_output <- liana_wrap(seurat_obj)

# Aggregate the results across all methods to get consensus rankings
liana_aggregate <- liana_aggregate(liana_output)

# Save the results
write.csv(liana_aggregate, "liana_aggregate_results.csv", row.names = FALSE)

Visualizing LIANA Results

The SCpubr package works seamlessly with LIANA to create publication-ready plots.

# Create a DotPlot of the top Ligand-Receptor interactions
p1 <- SCpubr::do_LigandReceptorPlot(liana_output = liana_output,
                                    top_interactions = 15)
p1

2. CellChat

While LIANA is great for getting a consensus list of interactions, CellChat shines at pathway-level analysis and visualizing the structural topology of the communication networks (e.g., Circle plots and Hierarchy plots).

Running CellChat

library(CellChat)

# 1. Create the CellChat object from Seurat
cellchat <- createCellChat(object = seurat_obj, group.by = "cell_type")

# 2. Set the database (e.g., Human or Mouse)
CellChatDB <- CellChatDB.human
cellchat@DB <- CellChatDB

# 3. Preprocess and infer communications
cellchat <- subsetData(cellchat)
cellchat <- identifyOverExpressedGenes(cellchat)
cellchat <- identifyOverExpressedInteractions(cellchat)
cellchat <- computeCommunProb(cellchat)
cellchat <- computeCommunProbPathway(cellchat)
cellchat <- aggregateNet(cellchat)

Visualizing CellChat Networks

# Visualize the communication network as a Circle Plot
netVisual_circle(cellchat@net$count, vertex.weight = groupSize, weight.scale = T,
                 label.edge= F, title.name = "Number of interactions")

Summary

  • Use LIANA when you want a highly robust, consensus-driven list of specific Ligand-Receptor pairs.
  • Use CellChat when you want to visualize pathway-level communication networks and create beautiful network topologies.

3. Interpretation, Limitations & Validation

Interpretation Pitfalls

When interpreting LIANA or CellChat results, remember that these tools infer potential communication based on mRNA co-expression, not actual physical interaction. * High probability != guaranteed interaction: The ligand and receptor might be transcribed, but the proteins could be degraded, trapped in the Golgi, or blocked by competitive inhibitors. * Spatial context is missing: In standard scRNA-seq, a macrophage and a T-cell might show high communication probability, but in the actual tissue, they might be millimeters apart and unable to interact.

Validation Strategies

Because scRNA-seq only provides a hypothesis, you must validate key findings experimentally: 1. Spatial Transcriptomics (e.g., Visium, Xenium): Verify that the sender and receiver cells are physically co-localized in the tissue. 2. Multiplexed Immunofluorescence (mIF): Use antibodies to confirm the presence of both the ligand and receptor proteins at the tissue level. 3. In Vitro Co-culture Assays: Isolate the sender and receiver cells, co-culture them, and block the receptor using an antagonist to observe phenotypic changes.

Software Requirements

  • LIANA: Tested on R 4.3.2. Requires Seurat v5 and liana (v0.1.12).
  • CellChat: Tested on R 4.3.2. Requires CellChat (v2.1.2) and ComplexHeatmap.

Matched Python and R LIANA workflow

Ligand–receptor rankings are hypotheses rather than direct evidence of signaling. Use a species-appropriate resource, set the grouping column deliberately, and validate prioritized interactions experimentally or with orthogonal evidence.

import liana as li

li.mt.rank_aggregate(
    adata,
    groupby="cell_type",
    resource_name="consensus",
    expr_prop=0.1,
)
results = adata.uns["liana_res"].query("specificity_rank <= 0.05")
library(liana)

liana_res <- liana_wrap(
  seurat_obj,
  method = c("natmi", "sca"),
  resource = "Consensus",
  idents_col = "cell_type",
  expr_prop = 0.1
)
results <- rank_aggregate(liana_res)
head(results)

Knowledge Check & Assessment

1. Concept Verification

Why does coexpression of a ligand and receptor suggest a hypothesis rather than prove physical communication?

2. Practical Execution

Run or inspect one ligand-receptor analysis and report the sender, receiver, interaction database, score, and a proposed validation experiment. Pass Criteria: Record the command or analysis choice, keep the output, and explain why it answers the stated task.

3. Troubleshooting

If a strong interaction appears only in one sample or broad cell type, how will you inspect cell abundance, expression thresholds, replicates, and spatial context?

Reviewed: August 2026

All commands and outputs were verified with the software versions listed in this tutorial. If you encounter reproducibility issues, please report them through the Contact page.

Author: Nasir Mahmood Abbasi, PhD · Category: Advanced Single-Cell Analysis

Continue Learning

Course Sequence