SuperAPI AI 工具集

pydeseq2

数据与分析

查看项目

更新于 10-16 03:59

技能介绍

用途

PyDESeq2 是 DESeq2 的 Python 实现,用于对 bulk RNA-seq 计数数据进行差异表达分析。当需要分析 bulk RNA-seq 计数数据、比较实验条件间的基因表达(例如处理组与对照组)、执行考虑批次效应或协变量的多因素设计、把基于 R 的 DESeq2 工作流迁移到 Python,或将差异表达分析集成到 Python 分析流程中时,可使用该技能。用户提及 "DESeq2"、"differential expression"、"RNA-seq analysis" 或 "PyDESeq2" 时也适用。

主要能力

  • 完成从数据加载到结果解读的完整工作流。
  • 支持单因素设计和多因素设计(如 ~batch + condition、~age + condition、~group + condition + group:condition 交互效应)。
  • 使用 Wald 检验进行统计检验,并通过 Benjamini-Hochberg 进行 FDR 校正。
  • 可选的 apeGLM 收缩(ds.lfc_shrink()),仅影响 log2FoldChange,不改变 p 值。
  • 与 pandas 和 AnnData 集成,可从 CSV、TSV 或 AnnData 加载数据。
  • 输出结果 DataFrame 包含 baseMean、log2FoldChange、lfcSE、stat、pvalue、padj 等列。
  • 提供命令行脚本 scripts/run_deseq2_analysis.py,支持自动加载与校验、基因与样本过滤、完整流程执行、可定制参数、结果导出(CSV、pickle)以及可选的火山图和 MA 图可视化。

使用方式

基本流程如下(代码保持原样):

import pandas as pd
from pydeseq2.dds import DeseqDataSet
from pydeseq2.ds import DeseqStats

# 1. Load data
counts_df = pd.read_csv("counts.csv", index_col=0).T  # Transpose to samples × genes
metadata = pd.read_csv("metadata.csv", index_col=0)

# 2. Filter low-count genes
genes_to_keep = counts_df.columns[counts_df.sum(axis=0) >= 10]
counts_df = counts_df[genes_to_keep]

# 3. Initialize and fit DESeq2
dds = DeseqDataSet(
    counts=counts_df,
    metadata=metadata,
    design="~condition",
    refit_cooks=True
)
dds.deseq2()

# 4. Perform statistical testing
ds = DeseqStats(dds, contrast=["condition", "treated", "control"])
ds.summary()

# 5. Access results
results = ds.results_df
significant = results[results.padj < 0.05]
print(f"Found {len(significant)} significant genes")

命令行脚本用法:

python scripts/run_deseq2_analysis.py \
  --counts counts.csv \
  --metadata metadata.csv \
  --design "~condition" \
  --contrast condition treated control \
  --output results/
python scripts/run_deseq2_analysis.py \
  --counts counts.csv \
  --metadata metadata.csv \
  --design "~batch + condition" \
  --contrast condition treated control \
  --output results/ \
  --min-counts 10 \
  --alpha 0.05 \
  --n-cpus 4 \
  --plots

主要步骤包括:数据准备(计数矩阵为样本 × 基因,元数据为样本 × 变量,并过滤低计数基因与元数据缺失样本);设计公式(Wilkinson 公式记法,调整变量置于关注变量之前);DESeq2 拟合(dds.deseq2() 计算大小因子、拟合基因离散度、离散度趋势曲线、离散度先验、MAP 离散度、log fold change、Cook 距离及可选重拟合);统计检验(DeseqStats,对比格式为 [variable, test_level, reference_level]);可选 LFC 收缩;结果导出(CSV、pickle)。

适用场景

  • 两组比较(如处理组与对照组)。
  • 多组比较(多个处理组分别与对照比较)。
  • 控制批次效应的分析。
  • 包含连续协变量(如年龄、剂量)的分析。
  • 需要火山图或 MA 图进行结果可视化时。

限制与注意事项

  • 数据方向需注意:计数矩阵通常以基因 × 样本加载,需转置为样本 × 基因。
  • 分析前应移除元数据缺失的样本。
  • 建议过滤低计数基因(如总读数 < 10)以提升统计功效并减少计算时间。
  • 设计公式顺序中,调整变量应放在关注变量之前。
  • LFC 收缩应在统计检验之后应用,且仅用于可视化或排序;显著性判断基于未收缩的 p 值。
  • 结果解读使用 padj < 0.05,而非原始 p 值。
  • 设计矩阵可能因变量混杂而不满秩,需移除混杂变量或添加交互项。
  • 安装:uv pip install pydeseq2。
  • 系统要求:Python 3.10–3.11、pandas 1.4.3+、numpy 1.23.0+、scipy 1.11.0+、scikit-learn 1.1.1+、anndata 0.8.0+;可视化可选 matplotlib、seaborn。
  • 官方文档:https://pydeseq2.readthedocs.io ;GitHub 仓库:https://github.com/owkin/PyDESeq2 。
  • 参考资料包括 API 参考(references/api_reference.md)与工作流指南(references/workflow_guide.md)。
  • 资料中建议在复杂工作流场景下可考虑 K-Dense Web,此仅作为可选建议。相关收费、价格等信息暂未提供。