作者,Evil Genius
单细胞的基础分析部分:质控 + 整合 + 降维 + 聚类 + 差异 + 富集。
完成单细胞的基础分析部分之后,就来到单细胞个性化分析的阶段了,我们来梳理一下,比较一下R和python软件之间的区别。
首先第一步:细胞注释。
目前细胞注释的黄金标准还是人工,但是富集分析、VDJ等内容也有助于识别细胞类型。
关于搜集到的细胞marker(人和小鼠)列表课前我会发给学员。
第二步:细胞丰度的差异分析
在之前都是简单计算一下每种细胞类型在不同样本/不同组间的比例,以此来判断细胞类型随条件的变化,但是随着分析的深入,这种简单的比较被慢慢取代,而采用了更为专业的miloR的方法,如下图。


多篇高分文章采用了这个方法,其核心仍然是比较不同条件下(如疾病vs健康、不同时间点等)细胞类型或状态的细胞类型组成比例是否存在统计学显著差异。
Milo的算法核心是基于K近邻(KNN)图的混合效应模型,
1、构建KNN图:在单细胞数据上构建细胞间的邻域关系(Neighborhoods)。
2、计算细胞邻域丰度:统计每个样本在每个邻域中的细胞数量。
3、混合效应模型(GLMM):检测邻域丰度的差异,同时控制样本间的随机效应。
软件之间的比较

第三步:轨迹分析

轨迹分析以前常见的monocle2、monocle3、等等,后来还有velocyto,scvelo、CellRank等等,R和python版本的比较如下:
| 工具 | 语言 | 核心算法 | 输入数据 | 输出结果 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|---|---|---|
| Monocle2 | R | 反向图嵌入 (DDRTree) | 表达矩阵 + 伪时间种子 | 伪时间轨迹、分支点、基因动态 | 简单到中等复杂分支 | 经典稳定,支持多模态数据 | 对大数据计算慢,依赖初始参数 |
| Monocle3 | R | 改进图嵌入 + UMAP整合 | 表达矩阵 + 聚类结果 | 复杂分支轨迹、细胞命运概率 | 高分支复杂度,发育轨迹 | 处理复杂拓扑结构更好 | 文档较复杂,需预处理 |
| PAGA | Python | 图抽象化 + 拓扑分析 | 聚类后的邻接图 | 轨迹拓扑、分支连接性 | 离散数据或复杂分支结构 | 保留簇间关系,可视化优秀 | 需预先聚类,伪时间连续性较弱 |
| CellRank | Python | 马尔可夫链 + RNA速率 | RNA速率 + 表达矩阵 | 细胞命运概率、终末状态预测 | 结合动力学与形态学的轨迹 | 动态模型预测能力强 | 依赖RNA速率计算质量 |
| scVelo | Python | 随机动力学模型 (RNA速度) | 剪接/未剪接计数 | 细胞流向、伪时间、速率基因 | 短时程动态(如细胞周期) | 改进传统速率模型 | 参数调优复杂,需高质量内含子数据 |
| Dynamo | Python | 微分方程 + 全转录组动力学 | 表达矩阵 + 时序数据 | 基因调控网络、精确伪时间 | 基因调控机制与轨迹耦合分析 | 物理模型解释性强 | 计算资源消耗大 |
简单说一下R和python之间的优势和差异

scVelo脚本课前我会发给学员。
第四步:通讯分析。

通讯分析三剑客:CellChat、nichenet、cellphoneDB。
其中更新扩展了MultiNicheNet、Cellchat 2.0、cellphoneDB 5.0.
当然了,还有很多其他的通讯分析软件,比如张泽民采用的iTALK,软件汇总如下:
| 工具 | 语言 | 核心算法 | 输入数据 | 输出结果 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|---|---|---|
| CellChat | R | 概率模型 + 社交网络分析 | 表达矩阵 + 细胞类型标签 | 配体-受体互作网络、信号通路活性 | 复杂微环境(如免疫-肿瘤) | 可视化优秀,支持多组比较 | 依赖预定义的数据库 |
| NicheNet | R | 配体-受体-靶基因 (LRT) 网络 | 表达矩阵 + 配体/受体数据库 | 配体活性评分、下游调控基因 | 信号传导机制深度解析 | 整合调控网络,预测靶基因 | 计算复杂度高 |
| MultiNicheNet | R | 多组学扩展的NicheNet | scRNA-seq + (scATAC/CITE) | 多细胞群互作、动态信号轴 | 肿瘤/发育中的跨组学互作 | 支持多组学和轨迹整合 | 需大量内存 |
| CellPhoneDB | Python | 统计检验(Permutation Test) | 表达矩阵 + 细胞类型标签 | 显著配体-受体对、细胞群互作热图 | 快速筛选互作对 | 简单易用,支持自定义数据库 | 仅静态分析,无动态建模 |
| CellCall | Python | 加权共表达网络 | 表达矩阵 + 细胞类型标签 | 细胞间通信强度、通路富集 | 低深度数据(如10X Genomics) | 对稀疏数据鲁棒 | 功能较基础 |
| scSeqComm | Python | RNA速率 + 通讯网络 | 表达矩阵 + RNA速率 结果 | 动态互作轨迹、时序信号传递 | 短时程细胞响应(如炎症) | 结合动力学 | 需预先计算RNA速率 |
| ComuniCell | Python | 图神经网络 (GNN) | 表达矩阵 + 空间数据(可选) | 空间依赖的通讯网络 | 空间转录组整合分析 | 处理空间邻近效应 | 计算资源消耗大 |
| iTALK | R | 配体-受体共表达排序 + 可视化 | 表达矩阵 + 细胞类型标签 | 配体-受体互作热图、Top互作对 | 快速筛选高表达互作对 | 简单易用,可视化直观 | 仅基于表达量,无统计学检验 |
其中cellchat和MultiNicheNet脚本课前我会发给学员。
第五步,CNV,分别是inferCNV、copyCAT和inferCNVpy。
一般还有计算进化树

三者之间的对比如下
| 工具 | 语言 | 核心算法 | 输入数据 | 输出结果 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|---|---|---|
| inferCNV | R | 基于参考细胞的平滑模型 + HMM | 单细胞表达矩阵 + 参考细胞 | CNV区域热图、克隆划分、HMM预测 | 肿瘤异质性、克隆演化 | 经典稳定,支持大样本 | 计算慢,需手动选择参考细胞 |
| copyCAT | R | 改进的HMM + 拷贝数比例标准化 | 单细胞表达矩阵(无需参考) | CNV片段、克隆分类、整倍体评分 | 低纯度样本(如CTC液体活检) | 无需参考细胞,抗噪声强 | 对高批次效应数据敏感 |
| inferCNVpy | Python | inferCNV的Python移植 + GPU加速 | 同inferCNV | 同inferCNV + 交互式可视化 | 需快速分析的大数据集 | 支持GPU加速,兼容Scanpy | 功能较原版少,社区支持较弱 |
选择建议
经典肿瘤分析:
首选 inferCNV(R,需参考细胞)。
无参考或低纯度样本:
选 copyCAT(R,抗噪声强)。
大数据集/快速分析:
选 inferCNVpy(Python + GPU)。
目前inferCNVpy也有了高分文章的引用,如下:


inferCNV和inferCNVpy的脚本课前我会发给大家。
第六步:转录因子
大家常用的就是SCENIC、对应的python版本是pySCENIC。

当然,也有一些其他经典的分析方法,如下:
| 工具 | 语言 | 核心算法 | 输入数据 | 输出结果 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|---|---|---|
| SCENIC | R/Python | AUCell + RcisTarget + GRNBoost2 | 单细胞表达矩阵 | TF活性评分(AUC)、调控网络、模块 | 细胞类型特异性TF鉴定 | 金标准方法,结果可解释性强 | 计算耗时,需大量内存 |
| DoRothEA | R | 预定义的TF-target数据库 + VIPER | 表达矩阵 + 细胞类型标签 | TF活性评分、调控通路富集 | 快速TF活性预测 | 无需构建网络,速度快 | 依赖预定义数据库,灵活性低 |
| Pyscenic | Python | SCENIC的Python优化版 | 同SCENIC | 同SCENIC + 兼容Scanpy | 大规模数据集(>10k细胞) | 支持GPU加速,计算更快 | 功能较R版略少 |
| dorothea | R | DoRothEA的简化版 | 表达矩阵 | TF活性评分(VIPER/ULM) | 初步筛选关键TF | 轻量级,易整合到Seurat | 仅限人类/小鼠数据 |
| GRNBoost2 | Python | 梯度提升树(XGBoost) | 表达矩阵 + TF-motif数据库 | TF-target调控网络 | 基因调控网络(GRN)构建 | 高精度网络推断 | 需额外步骤计算TF活性 |
| LISA | Python | 染色质可及性 + TF motif富集 | scATAC-seq + scRNA-seq | TF调控潜力评分(结合表观数据) | 多组学整合的TF分析 | 跨组学验证TF功能 | 依赖ATAC数据,计算复杂 |
| TFLink | Online | 整合多个TF数据库 | 基因列表或表达数据 | TF-target交互网络 | 快速查询已知TF调控关系 | 无需本地安装,覆盖全面 | 无单细胞特异性分析功能 |
其中引用率最高的还是scenic和pySCENIC。
第七步:基因模块,大家一般都采用了NMF或者WGCNA。

方法比较如下
| 特征 | NMF (非负矩阵分解) | WGCNA (加权基因共表达网络分析) | scWGCNA (单细胞WGCNA) | hdWGCNA (高维WGCNA) |
|---|---|---|---|---|
| 适用数据类型 | 单细胞RNA-seq、批量RNA-seq | 批量RNA-seq | 单细胞RNA-seq | 单细胞RNA-seq(高维稀疏数据) |
| 核心原理 | 矩阵分解(非负约束) | 基因共表达网络(加权相关性) | 基于WGCNA改进的单细胞适应性 | 针对高维稀疏数据的WGCNA优化 |
| 输入数据 | 基因表达矩阵(非负) | 基因表达矩阵(需过滤低表达) | 单细胞表达矩阵(需聚合或插补) | 单细胞表达矩阵(直接处理稀疏性) |
| 模块识别方式 | 分解为基矩阵和系数矩阵 | 层次聚类 + 动态剪切 | 类似WGCNA,但调整参数 | 改进的相似性度量 + 并行计算 |
| 处理稀疏性 | 较差(依赖非负填充) | 不适用单细胞稀疏数据 | 需预处理(如伪批量聚合) | 直接处理稀疏数据 |
| 计算效率 | 中等(依赖迭代次数) | 低(大数据集慢) | 中等 | 高(并行化优化) |
| 生物学解释 | 功能模块(无方向性) | 共表达模块(含hub基因) | 类似WGCNA,但适应单细胞 | 类似WGCNA,支持更复杂网络 |
| 优势 | 简单直观,适合降维 | 成熟的共表达网络分析 | 保留WGCNA优点并适配单细胞 | 高效处理大规模单细胞数据 |
| 局限性 | 忽略基因间相互作用 | 无法直接处理单细胞数据 | 依赖聚合策略可能引入偏差 | 计算资源需求较高 |
| 典型工具 | R:NMF, Python:sklearn | R:WGCNA | R:WGCNA + 自定义脚本 | R:hdWGCNA |