当前位置:首页>python>CellChat拉胯后,我靠Python版CellPhoneDB逆袭翻盘

CellChat拉胯后,我靠Python版CellPhoneDB逆袭翻盘

  • 2026-10-01 19:53:26
CellChat拉胯后,我靠Python版CellPhoneDB逆袭翻盘

点击蓝字

关注我们,后台领取学习资料噢!

星光不负赶路人,岁月不负有心人

❝

作为一名R语言重度患者,日常就是Seurat分群、注释、可视化一条龙。直到做细胞通讯CellChat——跑出来的结果要么互作对不太理想,问了chatgpt才知道还有CellPhoneDB这个靠谱神器,定睛一看:Python版?别慌!这篇教程Python只需要复制粘贴,零Python基础也能轻松搞定,看完直接出硬核结果!

CellPhoneDB是一款基于配体 - 受体互作数据库的细胞通讯分析工具,核心优势是:

1.数据库经过人工校对,包含大量经过实验验证的配体 - 受体对;

2.提供统计检验(置换检验)评估互作的显著性;

3.支持多细胞类型间的通讯网络分析。

github链接:https://github.com/ventolab/CellphoneDB

完整分析流程

R语言(Seurat)预处理数据

CellPhoneDB需要两个核心文件:标准化表达矩阵 + 细胞类型注释文件,我们用Seurat提取并整理格式。

# 加载所需包library(Seurat)library(patchwork)library(tidyverse)library(tibble)# 1. 加载Seurat对象load("images/seob_norm.rdata")  # 你的标准化Seurat对象# 2. 筛选目标分组seob_Thrombi <- subset(seob_norm, sample_group == "Tmour")  # 合并层(Seurat V5需要)seob_anno <- JoinLayers(seob_Thrombi)# 3. 提取标准化表达矩阵Normalized_counts <- GetAssayData(seob_anno, layer = "data") %>%  as.data.frame() %>%  tibble::rownames_to_column("Gene")  # 第一列命名为Gene# 4. 提取细胞类型注释文件metadata <- seob_anno@meta.data %>%  tibble::rownames_to_column("Cell") %>%   dplyr::select(Cell, cell_type)   # 5. 创建输出目录并保存文件(确保格式为tab分隔、无引号)output_dir <- "./cellphonedb/"if (!dir.exists(output_dir)) {  dir.create(output_dir, recursive = TRUE)  }# 保存表达矩阵(CellPhoneDB要求第一列为基因名)write.table(Normalized_counts,             file.path(output_dir, "Normalized_counts.txt"),              row.names = FALSE, sep = "\t", quote = FALSE)# 保存细胞注释文件(CellPhoneDB要求至少两列:Cell、细胞类型)write.table(metadata,             file.path(output_dir, "cellphonedb_meta.txt"),            row.names = FALSE, sep = "\t", quote = FALSE)

Tips:

  • 表达矩阵格式:第一列是Gene(基因名),其余列是细胞名,值为标准化后的表达量;
  • 注释文件格式:仅需两列(Cell=细胞名,cell_type=细胞类型),无多余列,避免CellPhoneDB识别失败;
  • 若细胞类型列名不是cell_type,需替换为实际列名(如cluster/celltype)。

下载CellPhoneDB数据库

CellPhoneDB依赖官方配体-受体数据库,需提前下载:

  1. 下载地址:https://raw.githubusercontent.com/ventolab/cellphonedb-data/master/cellphonedb.zip
  2. 上传至服务器/本地的指定目录(示例:/home/cellphonedb/cellphonedb.zip)。

Python运行CellPhoneDB核心分析

可以使用Jupyter

# 导入核心函数from cellphonedb.src.core.methods import cpdb_statistical_analysis_methodimport os# 1. 定义文件路径(替换为你的实际路径)cpdb_file_path = '/home/cellphonedb/cellphonedb.zip'# 数据库文件meta_file_path = '/home/cellphonedb/cellphonedb_meta.txt'# R输出的注释文件counts_file_path = '/home/cellphonedb/Normalized_counts.txt'# R输出的表达矩阵out_path = './cellphonedb_results'# 结果输出目录# 2. 创建输出目录ifnot os.path.exists(out_path):    os.makedirs(out_path)# 3. 运行CellPhoneDB统计分析cpdb_results = cpdb_statistical_analysis_method.call(  cpdb_file_path = cpdb_file_path,                 # 必须:数据库zip文件  meta_file_path = meta_file_path,                 # 必须:细胞注释文件  counts_file_path = counts_file_path,             # 必须:标准化表达矩阵  counts_data = 'hgnc_symbol',                     # 关键:基因名类型  score_interactions = True,                       # 可选:是否计算互作得分  iterations = 500,                               # 置换检验迭代次数(500-1000)  threshold = 0.1,                                 # 阈值:基因在至少10%的细胞中表达才纳入分析  threads = 12,                                     # 线程数(根据服务器/电脑配置调整)  debug_seed = 123,                                 # 随机种子(保证结果可重复)  pvalue = 0.05,                                   # 显著性P值阈值  separator = '-',                                 # 结果文件中细胞类型的分隔符  debug = False,                                   # 关闭debug模式(避免生成冗余文件)  output_path = out_path                           # 结果保存路径)

结果文件说明

  1. statistical_analysis_means_*.txt

所有细胞群之间的平均表达交互强度

  • 每一行:一个 ligand–receptor pair
  • 每一列:一个 cell type A | cell type B 组合
  • 数值:ligand 在 A 细胞表达 × receptor 在 B 细胞表达 的平均值

值越大 → 说明这两个细胞之间该配体-受体组合表达越高。

  1. statistical_analysis_pvalues_*.txt

统计显著性

同样结构:

  • 行:ligand–receptor pair
  • 列:cell type pair
  • 数值:permutation test 得到的 p-value
  1. statistical_analysis_significant_means_*.txt

筛选后的显著 interaction

  • 只保留 p < threshold (默认0.05) 的 mean
  1. statistical_analysis_deconvoluted_*.txt

分解复合配体/受体

很多 receptor 是 多亚基结构,例如:

IL2 receptor = IL2RA + IL2RB + IL2RG

这个文件会:* 展示 每个 subunit 在每个细胞群的表达

  1. statistical_analysis_deconvoluted_percents_*.txt

表达比例

表示:多少比例的细胞表达这个基因

过滤低表达噪声

  1. statistical_analysis_interaction_scores_*.txt

interaction strength score

CellPhoneDB 计算:

score = ligand expression × receptor expression

通常用于:

  • interaction ranking
  • network visualization

值越高 → interaction 越强

最常用的三个文件

文件
用途
means
interaction 强度
pvalues
显著性
significant_means
筛选的显著性结果

最新文章

随机文章