cellphoneDB代码及原理简介

简介

cellphoneDB作为使用最广泛的单细胞通讯软件之一,已经得到了学者广泛的认可,它的庞大的数据库也一直在更新。简短说一下原理,它是基于 UniProt、Ensembl、PDB、IUPHAR等数据库构建的受配体数据库,与其他数据库相比,CellPhoneDB的一个主要优点是它考虑了配体和受体的结构组成,准确地描述了异聚复合物。这一点对于许多细胞因子等蛋白质家族来说尤其重要,因为配体-受体相互作用通常涉及多个亚单位。
而在最近更新中,cellphoneDB的数据库已经更新到V4.1.0版本。总计的受配体对已经达到2923个。相比较上个版本,它的数据舍弃了大量未经过筛选的受配体,在准确性上大大提高,其次是因为软件的更新,cellphoneDB的数据库格式也发生了改变,由原来的db格式改成了以zip结尾的压缩包。
此外这次的更新中,将cellphoneDB改为python编写。大幅度提高了查询和计算速度,经过测试,大概快一半时间左右。读取单细胞数据的格式也新增了h5ad格式。

cellphoneDB的3种方法

第一种 cpdb_analysis_method

使用的简单的分析方法,不进行显著性分析,计算每个受配体对的平均值,原理是通过计算所有参与受配体基因表达量的平均值,生成的文件是means.csv和deconvoluted.csv


image.png

使用的代码是

from cellphonedb.src.core.methods import cpdb_analysis_method

cpdb_results = cpdb_analysis_method.call(
        cpdb_file_path = cellphonedb.zip,
        meta_file_path = test_meta.txt,
        counts_file_path = test_counts.h5ad,
        counts_data = 'hgnc_symbol',
        output_path = out_path)

第二种 cpdb_statistical_analysis_method

在第一种方法的基础上增加了显著性分析,而且为了确定细胞类型之间最相关的相互作用,会寻找配体和受体之间的细胞类型特异性相互作用。
对所有细胞类型进行两两比较,通过随机排列所有细胞的聚类标签(默认为1,000次),计算不同细胞类型之间的平均受体和配体表达水平,对于每个细胞类型之间的每个受体-配体对,在生成一个零分布的基础上计算一个 p 值,该 p 值表示受体-配体相互作用的强度。然后优先选择细胞类型之间高度富集的受配体对,生成的文件新增pvalues.csv和significant_means.csv

from cellphonedb.src.core.methods import cpdb_degs_analysis_method

cpdb_results = cpdb_degs_analysis_method.call(
        cpdb_file_path = cellphonedb.zip,
        meta_file_path = test_meta.txt,
        counts_file_path = test_counts.h5ad,
        degs_file_path = degs_file_path,
        counts_data = 'hgnc_symbol',
        active_tfs_file_path = active_tf.txt,
        score_interactions = True,
        microenvs_file_path = microenvs_file_path,
        threshold = 0.1,
        output_path = out_path)

第二种 cpdb_degs_analysis_method

外部提供一个差异基因的表格,受体或者配体中的基因有一个必须在表格中,生成的文件新增relevant_interactions.txt和significant_means.csv

from cellphonedb.src.core.methods import cpdb_degs_analysis_method

cpdb_results = cpdb_degs_analysis_method.call(
        cpdb_file_path = cellphonedb.zip,
        meta_file_path = test_meta.txt,
        counts_file_path = test_counts.h5ad,
        degs_file_path = degs_file_path,
        counts_data = 'hgnc_symbol',
        active_tfs_file_path = active_tf.txt,
        score_interactions = True,
        microenvs_file_path = microenvs_file_path,
        threshold = 0.1,
        output_path = out_path)

差异基因表格(degs_file.txt)见下图:


image.png

日常分析中,我们使用的最多的是方法二,因此我将方法二的一些具体函数的参数进行了注释

from cellphonedb.src.core.methods import cpdb_statistical_analysis_method

cpdb_results = cpdb_statistical_analysis_method.call(
    cpdb_file_path = cpdb_file_path,                 # 数据库文件路径
    meta_file_path = meta_file_path,                 # 包含细胞Barcoda注释的meta文件
    counts_file_path = counts_file_path,             # counts文件,或者h5ad文件
    counts_data = 'hgnc_symbol',                     # 指定counts矩阵信息的某一列来进行注释,可以换成"genename"
    active_tfs_file_path = active_tf_path,           # 指定的转录因子文件(可不填)
    microenvs_file_path = microenvs_file_path,       # 微环境文件(可不填)
    iterations = 1000,                               # 随机排列的次数
    threshold = 0.1,                                 #"定义了基因表达的最低细胞百分比
    threads = 5,                                     # 线程数
    debug_seed = 42,                                 # debug randome seed. To disable >=0.
    result_precision = 3,                            # 保留结果小数点位数
    pvalue = 0.05,                                   # P-value threshold to employ for significance.
    subsampling = False,                             # 是否降采样
    subsampling_log = False,                         # (mandatory) enable subsampling log1p for non log-transformed data inputs.
    subsampling_num_pc = 100,                        # Number of componets to subsample via geometric skectching (dafault: 100).
    subsampling_num_cells = 1000,                    # Number of cells to subsample (integer) (default: 1/3 of the dataset).
    separator = '|',                                 # 两个细胞类型的连接符,eg(cell A|cell B).
    debug = False,                                   # Saves all intermediate tables employed during the analysis in pkl format.
    output_path = out_path,                          # j结果保存路径
    output_suffix = None                             # 是否为输出的文件加上特殊的字符  (default: None).
    )

未完待续,将会更新cellphoneDB的结果可视化和从rds和H5seurat 中如何抽取所需要的metadata文件和counts矩阵文件(方便某些人从科研服务公司那里拿到seurat文件,却不知道如何进行分析)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容