首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一眨眼CellphoneDB都更新到v5啦:2025年3月25号发表在Nature Protocols(IF=13.1)

一眨眼CellphoneDB都更新到v5啦:2025年3月25号发表在Nature Protocols(IF=13.1)

作者头像
生信技能树
发布2025-05-08 15:27:44
发布2025-05-08 15:27:44
1K00
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

有一段时间没有做单细胞的细胞通讯了,今天的主题是python相关的生信笔记,就找了这个软件,一看天啦都更新到v5啦!时间过得是真快~

老习惯,CellphoneDB 的官网给到你,他放了三个地方,可以每个都看看,不过可以以最后一个链接为主:

  • https://github.com/ventolab/CellphoneDB
  • https://www.cellphonedb.org/
  • https://cellphonedb.readthedocs.io/en/latest/

CellphoneDB 的一路更新历程,每一篇文献都下载下来看看吧:

  • CellphoneDB v1 (original): Single-cell reconstruction of the early maternal-fetal interface in humans. Vento-Tormo R, Efremova M, et al., Nature. 2018 (https://www.nature.com/articles/s41586-018-0698-6)
  • CellphoneDB v2: Inferring cell-cell communication from combined expression of multi-subunit receptor-ligand complexes. Efremova M, Vento-Tormo M, Teichmann S, Vento-Tormo R. Nat Protoc. 2020 (https://www.nature.com/articles/s41596-020-0292-x)
  • CellphoneDB v3: Mapping the temporal and spatial dynamics of the human endometrium in vivo and in vitro. L Garcia-Alonso, L-François Handfield, K Roberts, K Nikolakopoulou et al. Nature Genetics 2021 (https://www.nature.com/articles/s41588-021-00972-2)
  • CellphoneDB v4: Single-cell roadmap of human gonadal development. L Garcia-Alonso, V Lorenzi et al. 2022 Nature (https://www.nature.com/articles/s41586-022-04918-4)
  • CellphoneDB v5 (latest): CellphoneDB v5: inferring cell-cell communication from single-cell multiomics data. (https://www.nature.com/articles/s41596-024-01137-1)

CellphoneDB v5 版本引入了多项改进和新功能:

  • 新的Python包,可在Jupyter Notebook和Collabs中轻松执行:之前我做的时候还是bash命令版本,一眨眼都开发成一个python包了,可以比较方便在python中交互式运行吧,我看这个工具后续还有一个对应的对结果可视化的软件
    • ktplots (https://www.github.com/zktuong/ktplots/) (R; preferred)
    • ktplotspy (https://www.github.com/zktuong/ktplotspy/) (python; under development)
  • 一种新的评分方法:根据互作对的表达特异性对配受体互作进行排名;
  • 新增CellSign模块:基于受体下游转录因子的活性对相互作用加权,该模块附带了211个描述良好的受体-转录因子直接关系集合;
  • 新增一种查询CellphoneDB结果的方法 search_utils.search_analysis_results:可以筛选任意指定的细胞类型或基因的互作关系;
  • 提供运行CellphoneDB的教程;
  • 提高了方法2(cpdb_statistical_analysis_method)的计算效率;
  • 新增一个新的数据库(cellphonedb-data v5.0),包含更多手动策划的相互作用,总计约3000个相互作用;
  • CellphoneDB不再从外部资源导入相互作用,以避免包含低置信度的相互作用。

这么多更新点,慢慢看吧,先来配置环境,运行一下示例数据~

0.安装

安装过程比较顺利和简单,下面是bash命令,在服务器上运行:

代码语言:javascript
代码运行次数:0
运行
复制
conda create -y -n cpdb python=3.9
conda activate cpdb
pip install cellphonedb
pip install -U ipykernel

1.数据库下载:

CellphoneDB 数据库地址:https://github.com/ventolab/CellphoneDB-data

这个也进行了迭代更新,下面是python代码下载方式:

代码语言:javascript
代码运行次数:0
运行
复制
import pandas as pd
import glob
import os

from IPython.display import HTML, display
from cellphonedb.utils import db_releases_utils

display(HTML(db_releases_utils.get_remote_database_versions_html()['db_releases_html_table']))

# -- Version of the databse
cpdb_version = 'v5.0.0'

# -- Path where the input files to generate the database are located
cpdb_target_dir = os.path.join('./cellphonedb_v500_NatProtocol/', cpdb_version)
cpdb_target_dir
# './cellphonedb_v500_NatProtocol/v5.0.0'
# 保证当前目录中有这个目录,如果没有就手动创建一个

下载完后,会有这么多文件:

2.输入数据

最新的文献中给了一个超清晰的示意图来说明输入数据:

下面是每个文件的具体说明,跑起来的时候可以对照准备:

count矩阵(必须):格式可以是 text文件,h5ad文件,h5文件,10x标准输出的三个文件;基因ID只支持Human,

DEG文件(可选):两列,第一列为细胞类型标签,第二列为每种细胞类型的上调差异基因,示例如下:除了第一列第二列,后面的列数会被忽略,可以有也可以没有

活性转录因子文件(可选):两列,第一列细胞类型标签,第二列为每种细胞中活性转录因子,示例如下:

示例数据

在这里可以下载得到:https://github.com/ventolab/CellphoneDB/tree/master/notebooks

可以跟上面对应的文件说明对照查看:

代码语言:javascript
代码运行次数:0
运行
复制
active_TFs.tsv
DEGs_inv_trophoblast.tsv
metadata.tsv
microenvironment.tsv
normalised_log_counts.h5ad

3.运行

cellphonedb还是包括三个大的分析模块,分别如下:

image-20250506202625501
image-20250506202625501

cpdb_analysis_method:cpdb_analysis_method.call()函数,这是一个通用的分析模块,用于全面评估细胞间相互作用;

cpdb_statistical_analysis_method:cpdb_statistical_analysis_method.call()函数,通过统计方法评估细胞间相互作用的显著性;

cpdb_degs_analysis_method:cpdb_degs_analysis_method.call()函数,专注于差异表达基因在细胞间通信中的作用。

看看第三种,差异表达基因在细胞间通信中的作用

代码语言:javascript
代码运行次数:0
运行
复制
# 导入模块
import pandas as pd
import sys
import os
pd.set_option('display.max_columns', 100)
print(sys.version)
# 3.9.22 | packaged by conda-forge | (main, Apr 14 2025, 23:35:59) 
# [GCC 13.3.0]

定义输入文件:

代码语言:javascript
代码运行次数:0
运行
复制
cpdb_file_path = 'cellphonedb_v500_NatProtocol/v5.0.0/cellphonedb.zip'
meta_file_path = 'data/metadata.tsv'
counts_file_path = 'data/normalised_log_counts.h5ad'
microenvs_file_path = 'data/microenvironment.tsv'
degs_file_path = 'data/DEGs_inv_trophoblast.tsv'
active_tf_path = 'data/active_TFs.tsv'
out_path = 'results_method3_withScore'

读取数据:

具体的数据格式前面都说明过啦,这里就不再展示细节

代码语言:javascript
代码运行次数:0
运行
复制
# 1.读取细胞注释信息,第一列为细胞barcode,第二列为所属的细胞类型
# read meta
metadata = pd.read_csv(meta_file_path, sep = '\t')
metadata.head(3)

# barcode_sample cell_type
# 0 AGCGATTAGTCTAACC-1_Pla_HDBR10917733 B_cells
# 1 ATCCGTGAGGCTAGAA-1_Pla_Camb10714918 B_cells
# 2 AGTAACCCATTAAAGG-1_Pla_HDBR10917733 B_cells

# 用type()获取对象的数据类型
type(metadata)
# 每种细胞类型里的细胞数量
metadata.cell_type.value_counts()

# 2.读取细胞表达矩阵,h5ad格式。共3312个细胞:
import anndata
adata = anndata.read_h5ad(counts_file_path)
adata

# 检查metadata的barcode与表达矩阵中的细胞id是否一致
list(adata.obs.index).sort() == list(metadata['barcode_sample']).sort()

# 3.读取亚群差异基因
deg = pd.read_csv(degs_file_path, sep = '\t')
deg.head(3)

# 4.微环境
microenv = pd.read_csv(microenvs_file_path, sep = '\t')
microenv.head(3)
microenv.groupby('microenvironment', group_keys = False)['cell_type'].apply(lambda x : list(x.value_counts().index))

# 5.活性转录因子
tf = pd.read_csv(active_tf_path, sep = '\t')
tf.head(3)

数据都准备好了,运行:

代码语言:javascript
代码运行次数:0
运行
复制
from cellphonedb.src.core.methods import cpdb_degs_analysis_method

cpdb_results = cpdb_degs_analysis_method.call(
    cpdb_file_path = cpdb_file_path,            # 必须文件: CellphoneDB 数据库压缩zip文件.
    meta_file_path = meta_file_path,            # 必须文件: tsv结尾,细胞注释文件.
    counts_file_path = counts_file_path,        # 必须文件: 标准化后的count矩阵-可以是路径,或读取进来后的anndata对象.
    degs_file_path = degs_file_path,            # 必修文件: tsv结尾,细胞亚群上调差异基因.
    counts_data = 'hgnc_symbol',                # count矩阵中的基因类型.
    active_tfs_file_path = active_tf_path,      # 可选: 细胞类型与active TFs.
    microenvs_file_path = microenvs_file_path,  # 可选(默认: None): 定义细胞微环境.
    score_interactions = True,                  # 可选: 对互作是否进行打分. 
    threshold = 0.1,                            # 过滤低表达基因:至少在多少细胞中表达%.
    result_precision = 3,                       # Sets the rounding for the mean values in significan_means.
    separator = '|',                            # 对结果中"cellA|CellB"的分隔符.
    debug = False,                              # 是否保存所有中间结果.
    output_path = out_path,                     # 输出结果路径
    output_suffix = None,                       # 输出结果文件前缀 (default: None)
    threads = 50                                # 使用线程数
    )

查看运行的结果:

代码语言:javascript
代码运行次数:0
运行
复制
# 用type()获取对象的数据类型
type(cpdb_results)

# 具体的关键词
print(cpdb_results.keys())
# ['deconvoluted', 'deconvoluted_percents', 'means', 'relevant_interactions', 'significant_means', 'CellSign_active_interactions', 'CellSign_active_interactions_deconvoluted', 'interaction_scores']

# 每一个具体的结果
cpdb_results['relevant_interactions'].head(2)
cpdb_results['significant_means'].head(2)
cpdb_results['means'].head(2)
cpdb_results['deconvoluted'].head(2)
cpdb_results['interaction_scores'].head(2)
cpdb_results['CellSign_active_interactions'].head(2)

4.结果

上面的代码运行完后,生成的文件如下:

代码语言:javascript
代码运行次数:0
运行
复制
degs_analysis_CellSign_active_interactions_05_06_2025_212857.txt
degs_analysis_CellSign_active_interactions_deconvoluted_05_06_2025_212857.txt
degs_analysis_deconvoluted_05_06_2025_212857.txt
degs_analysis_deconvoluted_percents_05_06_2025_212857.txt
degs_analysis_interaction_scores_05_06_2025_212857.txt
degs_analysis_means_05_06_2025_212857.txt
degs_analysis_relevant_interactions_05_06_2025_212857.txt
degs_analysis_significant_means_05_06_2025_212857.txt

所有文件的结构都相同:行表示相互作用的蛋白质,列表示相互作用的细胞类型对。

  1. “means.txt”:记录每个配体-受体相互作用在不同细胞对中的平均表达值;
  2. “pvalues.txt”:记录每个配体-受体复合物在不同细胞对中的P值,用于评估细胞类型特异性;
  3. “significant_means.txt”:仅包含显著配体-受体复合物的平均表达值,是“means.txt”和“pvalues.txt”交叉分析的结果;
  4. “relevant_interactions.txt”:二进制矩阵,标记相互作用是否相关(基于差异表达基因信息和基因表达情况);
  5. “deconvoluted.txt”:为每个相互作用伙伴提供额外信息,特别是对于异源复合体,说明哪些分子在同一细胞群中表达;
  6. “percentages.txt”:记录每个基因在细胞中的表达百分比,为分析基因表达的普遍性提供数据。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-05-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0.安装
  • 1.数据库下载:
  • 2.输入数据
    • 示例数据
  • 3.运行
  • 4.结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档