Infer ligand-receptor interactions and cell-cell communication networks from single-cell RNA-seq data using the LIANA+ framework. Identifies potential signaling events between cell types based on gene expression patterns and curated ligand-receptor interaction databases.
Install
npx skillscat add pwwang/immunopipe/cellcellcommunication Install via the SkillsCat registry.
CellCellCommunication Process Configuration
Purpose
Infer ligand-receptor interactions and cell-cell communication networks from single-cell RNA-seq data using the LIANA+ framework. Identifies potential signaling events between cell types based on gene expression patterns and curated ligand-receptor interaction databases.
When to Use
- To identify ligand-receptor interactions between cell types
- For systematic analysis of cell-cell communication networks
- To understand cell crosstalk and signaling pathways
- To compare communication patterns across biological conditions
- To identify key signaling mediators in tissue microenvironments
Configuration Structure
Process Enablement
[CellCellCommunication]
cache = trueInput Specification
[CellCellCommunication.in]
sobjfile = ["path/to/seurat_object.rds"] # Seurat (.rds, .h5seurat) or AnnData (.h5ad)Environment Variables
[CellCellCommunication.envs]
# Method selection
method = "cellchat" # Default inference method
# Cell type grouping
groupby = "ident" # Column name for cell type labels (default: Seurat ident)
# Species selection
species = "human" # "human" or "mouse"
# Filtering parameters
expr_prop = 0.1 # Minimum expression proportion (0.0-1.0)
min_cells = 5 # Minimum cells per cell type
# Statistical parameters
n_perms = 1000 # Permutations for permutation testing
seed = 1337 # Random seed for reproducibility
# Computational resources
ncores = 1 # Number of parallel cores
# Advanced options
subset = "" # Expression to subset cells (e.g., "adata.obs.group == 'control'")
split_by = "" # Column to run analysis separately and combine
assay = "RNA" # Assay to use for Seurat objectsAvailable Inference Methods
LIANA+ provides multiple methods for cell-cell communication inference:
| Method | Description | Magnitude Score | Specificity Score |
|---|---|---|---|
CellChat |
Mass-action-based communication probability | lr_means | cellchat_pvals |
CellPhoneDB |
Permutation-based significance | lr_means | cellphone_pvals |
Connectome |
Interaction-specific scoring | - | - |
log2FC |
Log-fold change based | - | - |
NATMI |
Network analysis | - | - |
SingleCellSignalR |
Database-driven scoring | - | - |
Rank_Aggregate |
Aggregates multiple methods | - | - |
Geometric_Mean |
Geometric mean scoring | - | - |
Default method: cellchat (recommended for most analyses)
LIANA+ Resources
Species-Specific Resources
# Human (default)
species = "human" # Uses 'consensus' resource (CellPhoneDB, CellChat, ICELLNET, etc.)
# Mouse
species = "mouse" # Uses 'mouseconsensus' resourceAvailable Resources (override with resource_name)
consensus(human default): Combines multiple curated resourcescellchatdb: CellChat database interactionscellphonedb: CellPhoneDB interactionsmouseconsensus(mouse default): Mouse-specific consensusicellnet,connectomedb2020,ramilowski2015,lrdb, and more
Configuration Examples
Minimal Configuration
[CellCellCommunication]
[CellCellCommunication.in]
sobjfile = ["path/to/seurat_object.rds"]
[CellCellCommunication.envs]
# Use defaults: method=cellchat, species=human, groupby=identHuman PBMC Analysis
[CellCellCommunication]
[CellCellCommunication.in]
sobjfile = ["path/to/pbmc_seurat.rds"]
[CellCellCommunication.envs]
method = "cellchat"
species = "human"
groupby = "cell_type" # Use annotated cell types
expr_prop = 0.1
min_cells = 10Mouse Tissue Analysis
[CellCellCommunication]
[CellCellCommunication.in]
sobjfile = ["path/to/mouse_seurat.rds"]
[CellCellCommunication.envs]
species = "mouse"
method = "cellchat"
groupby = "seurat_clusters"
expr_prop = 0.15
min_cells = 8Multi-Condition Comparison
[CellCellCommunication]
[CellCellCommunication.in]
sobjfile = ["path/to/combined_seurat.rds"]
[CellCellCommunication.envs]
split_by = "condition" # Run separately per condition, then combine
method = "cellchat"
groupby = "cell_type"Custom Cell Subset
[CellCellCommunication]
[CellCellCommunication.in]
sobjfile = ["path/to/seurat_object.rds"]
[CellCellCommunication.envs]
subset = "adata.obs.tissue == 'tumor'"
subset_using = "python"
method = "cellchat"Common Patterns
Pattern 1: Full Interaction Network (CellChat)
[CellCellCommunication]
[CellCellCommunication.in]
sobjfile = ["intermediate/seuratclustering/SeuratClustering/sample.seurat.qs"]
[CellCellCommunication.envs]
method = "cellchat"
groupby = "ident"
expr_prop = 0.1
ncores = 4Pattern 2: Disease vs Healthy Comparison
[CellCellCommunication]
[CellCellCommunication.in]
sobjfile = ["path/to/disease_vs_healthy.rds"]
[CellCellCommunication.envs]
split_by = "disease_status"
method = "cellchat"
groupby = "cell_type"
expr_prop = 0.1
min_cells = 10Pattern 3: High-Stringency Analysis
[CellCellCommunication]
[CellCellCommunication.in]
sobjfile = ["path/to/seurat_object.rds"]
[CellCellCommunication.envs]
method = "cellchat"
expr_prop = 0.2 # Higher expression threshold
min_cells = 20 # More cells requiredDependencies
- Upstream: SeuratClustering (required), CellTypeAnnotation (recommended for meaningful labels)
- Downstream: CellCellCommunicationPlots (visualization: network, circos, heatmap, box plots)
Validation Rules
- Species matching: Set
species = "human"orspecies = "mouse"to match your organism - Cell type grouping:
groupbycolumn must exist in metadata; use CellTypeAnnotation or SeuratClustering results - Expression thresholds:
expr_propbetween 0.0-1.0; recommended 0.1 for human, 0.15 for mouse - Cell type resolution:
min_cellsminimum cells per type; recommended 5-10 cells per type
Troubleshooting
No Interactions Found
Solutions: Lower expr_prop (e.g., 0.1→0.05), reduce min_cells, check groupby column, verify species parameter
Species Mismatch Error
Solutions: Verify species matches organism, ensure gene symbols in correct format (human: uppercase, mouse: title case)
Slow Execution
Solutions: Increase ncores, reduce n_perms for permutation methods, use faster cellchat method
Memory Issues
Solutions: Reduce ncores, use subset to analyze specific cell types, merge rare cell types
Unexpected Cell Type Pairings
Solutions: Increase expr_prop, check cell type annotations, consider spatial context of data
Best Practices
- Run with CellChat first (default method provides good balance)
- Annotate cell types first using CellTypeAnnotation
- Validate expression thresholds based on data sparsity
- Compare multiple methods (cellchat, cellphonedb) when possible
- Interpret results in biological context (tissue structure, cell location)
- Always visualize with CellCellCommunicationPlots
- Document parameters for reproducibility
References
- LIANA+ Framework: https://liana-py.readthedocs.io/
- CellChat Method: https://www.cellchat.org/
- LIANA+ Paper: Dimitrov et al., Nat Cell Biol (2024)