[ PROMPT_NODE_27080 ]
pydeseq2
[ SKILL_DOCUMENTATION ]
# PyDESeq2
## 概述
PyDESeq2 是 DESeq2 的 Python 实现,用于批量 RNA-seq 数据的差异表达分析。设计并执行从数据加载到结果解释的完整工作流,包括单因素和多因素设计、带多重检验校正的 Wald 检验、可选的 apeGLM 收缩,以及与 pandas 和 AnnData 的集成。
## 何时使用此技能
当出现以下情况时应使用此技能:
- 分析批量 RNA-seq 计数数据以进行差异表达分析
- 比较不同实验条件下的基因表达(例如:处理组 vs 对照组)
- 执行考虑批次效应或协变量的多因素设计
- 将基于 R 的 DESeq2 工作流转换为 Python
- 将差异表达分析集成到基于 Python 的流水线中
- 用户提到 "DESeq2"、"差异表达"、"RNA-seq 分析" 或 "PyDESeq2"
## 快速入门工作流
对于想要执行标准差异表达分析的用户:
python
import pandas as pd
from pydeseq2.dds import DeseqDataSet
from pydeseq2.ds import DeseqStats
# 1. 加载数据
counts_df = pd.read_csv("counts.csv", index_col=0).T # 转置为 样本 × 基因
metadata = pd.read_csv("metadata.csv", index_col=0)
# 2. 过滤低计数基因
genes_to_keep = counts_df.columns[counts_df.sum(axis=0) >= 10]
counts_df = counts_df[genes_to_keep]
# 3. 初始化并拟合 DESeq2
dds = DeseqDataSet(
counts=counts_df,
metadata=metadata,
design="~condition",
refit_cooks=True
)
dds.deseq2()
# 4. 执行统计检验
ds = DeseqStats(dds, contrast=["condition", "treated", "control"])
ds.summary()
# 5. 获取结果
results = ds.results_df
significant = results[results.padj < 0.05]
print(f"发现 {len(significant)} 个显著基因")
## 核心工作流步骤
### 第 1 步:数据准备
**输入要求:**
- **计数矩阵:** 样本 × 基因 DataFrame,包含非负整数读取计数
- **元数据:** 样本 × 变量 DataFrame,包含实验因子
**常见数据加载模式:**
python
# 从 CSV (典型格式: 基因 × 样本,需要转置)
counts_df = pd.read_csv("counts.csv", index_col=0).T
metadata = pd.read_csv("metadata.csv", index_col=0)
# 从 TSV
counts_df = pd.read_csv("counts.tsv", sep="t", index_col=0).T
# 从 AnnData
import anndata as ad
adata = ad.read_h5ad("data.h5ad")
counts_df = pd.DataFrame(adata.X, index=adata.obs_names, columns=adata.var_names)
metadata = adata.obs
**数据过滤**