用途:对 bulk RNA-seq 计数数据进行差异表达分析,比较实验条件(如处理组与对照组)之间的基因表达,支持将 R 版 DESeq2 流程迁移到 Python,或嵌入 Python 分析管线。
主要能力:支持单因素与多因素设计(如 ~batch + condition、连续协变量、交互项);执行完整 DESeq2 流程(估计 size factor、基因离散度、趋势曲线、MAP 离散度、log fold change、Cook 距离与离群重拟合);用 Wald 检验并做 Benjamini-Hochberg FDR 校正;可选 apeGLM 的 LFC 收缩;结果以 pandas DataFrame 输出,含 baseMean、log2FoldChange、lfcSE、stat、pvalue、padj;支持火山图与 MA 图绘制;提供命令行脚本 scripts/run_deseq2_analysis.py 批量分析。
使用方式:安装 uv pip install pydeseq2。典型流程为读取计数矩阵(需转置为样本×基因)与 metadata,过滤低计数基因,初始化 DeseqDataSet(counts=..., metadata=..., design="~condition"),调用 dds.deseq2(),再用 DeseqStats(dds, contrast=["condition","treated","control"]) 并 ds.summary(),最后按 padj < 0.05 筛选结果。命令行示例:python scripts/run_deseq2_analysis.py --counts counts.csv --metadata metadata.csv --design "~condition" --contrast condition treated control --output results/。
适用场景:两组或多组比较、批次效应校正、连续协变量建模、Python 环境下的差异表达分析。
限制:要求 Python 3.10-3.11 及 pandas、numpy、scipy、scikit-learn、anndata 等依赖;计数矩阵方向需正确,样本名需与 metadata 一致;设计矩阵须满秩,避免混杂;LFC 收缩仅影响 log2FoldChange,不改变 p 值;显著性判断应使用 padj 而非原始 p 值。官方文档 https://pydeseq2.readthedocs.io,仓库 https://github.com/owkin/PyDESeq2。