用途:对 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 图等可视化。
使用方式:安装命令为 uv pip install pydeseq2。典型流程:用 pandas 读取计数矩阵(需转置为样本×基因)与元数据,过滤低计数基因,构造 DeseqDataSet(counts=..., metadata=..., design="~condition"),调用 dds.deseq2(),再用 DeseqStats(dds, contrast=["condition", "treated", "control"]) 并 ds.summary(),最后通过 ds.results_df 取结果。技能还提供命令行脚本 scripts/run_deseq2_analysis.py,可传 --counts、--metadata、--design、--contrast、--output 等参数,并支持 --min-counts、--alpha、--n-cpus、--plots。
适用场景:处理组与对照组比较、多处理组分别与对照比较、控制批次效应或纳入年龄等连续协变量、将差异表达分析集成进 Python 流程。
限制与注意:计数矩阵方向需为样本×基因,否则需转置;样本名需与元数据一致;设计公式中调整变量应放在关注变量之前;LFC 收缩仅影响 log2FoldChange,不改变 p 值,显著性应使用 padj < 0.05;设计矩阵可能因变量混杂而不满秩;无显著基因时需检查离散度、size factor、样本量与批次效应。运行环境要求 Python 3.10-3.11 及 pandas、numpy、scipy、scikit-learn、anndata 等依赖,可视化可选 matplotlib、seaborn。