pydeseq2
使用 PyDESeq2 对批量 RNA-seq 进行差异基因表达分析,包括公式化设计、Wald 检验、FDR 校正、LFC 收缩以及结果可视化。
PyDESeq2 - Python 版 DESeq2 差异表达分析
技能概述
PyDESeq2 是 DESeq2 的 Python 实现,专为批量 RNA-seq 数据的差异表达分析设计,支持从数据加载到结果可视化的完整分析流程,包括多因素实验设计、Wald 统计检验、FDR 多重检验校正和 LFC 收缩估计。
适用场景
1. 转录组差异表达分析
当您需要比较不同实验条件下基因表达水平的差异时,如处理组与对照组、疾病组与健康组的基因表达变化分析。支持标准双样本比较,也支持多组处理、时间序列等复杂实验设计。
2. 批量效应校正与多因素设计
适用于存在技术变异(如测序批次、文库制备日期)或需要同时考虑多个生物学因素(如年龄、性别)的 RNA-seq 数据分析。通过设计公式可以控制协变量影响,获得更准确的条件效应估计。
3. 从 R 工作流迁移到 Python
适合希望将现有 R/DESeq2 分析流程迁移到 Python 生态系统的用户,或需要在 Python 数据处理管道中集成差异表达分析的场景。与 pandas、AnnData 等 Python 数据格式无缝集成。
核心功能
1. 完整的 DESeq2 分析流程
实现数据归一化(size factor)、离散度估计、趋势拟合、MAP 收缩和 log2 fold change 计算的全流程自动化。支持低计数基因过滤、异常值检测(Cook's distance)和自动重新拟合,确保结果可靠性。
2. 灵活的实验设计支持
支持单因素和多因素设计公式(R/Wilkinson notation),可包含分类变量、连续变量及其交互项。设计公式中变量顺序决定统计检验顺序,可精确控制协变量调整策略,适应复杂实验设计。
3. 统计检验与结果可视化
提供 Wald 检验和独立过滤,支持 Benjamini-Hochberg FDR 校正,输出包含 log2FoldChange、pvalue、padj 等完整统计量的结果表。可选 apeGLM LFC 收缩用于改善可视化效果,支持火山图和 MA 图生成。
常见问题
PyDESeq2 和 R 版本 DESeq2 有什么区别?
PyDESeq2 是 DESeq2 的 Python 重新实现,核心算法和统计方法与 R 版本一致,但 API 和使用习惯符合 Python 生态。主要区别在于:PyDESeq2 0.5.x 需要显式指定 contrast 参数,不再支持默认对比;数据输入使用 pandas DataFrame 而非 R 的 data.frame;保存结果推荐使用 H5AD 格式而非 RDS。对于已有 R/DESeq2 代码的用户,需要调整设计公式和对比参数的写法。
如何处理 RNA-seq 数据的批量效应?
在 design 公式中将批量变量放在条件变量之前即可,例如 ~batch + condition。这会让模型先估计 batch 效应,再估计 condition 效应。如果 batch 和 condition 完全混杂(所有处理样本都在同一批次),则设计矩阵不满秩,需要简化设计或添加交互项 ~batch + condition + batch:condition。分析前建议先用 pd.crosstab(metadata.condition, metadata.batch) 检查混杂情况。
差异表达分析需要多少样本量?
样本量取决于效应大小和生物变异。一般来说,每个条件至少 3 个生物学重复是最低要求,推荐 6 个或更多以获得足够的统计功效。PyDESeq2 会根据数据离散度自动调整统计检验,但过小的样本量会导致检测效能不足,难以发现中等效应的差异基因。如果预期效应较小,应考虑增加样本量而非仅依赖统计方法。