← 返回软件与算法资源类型 R 包 方法分类 差异表达分析 原始分类 Differential Expression 创建时间 2026/6/3
Software & Algorithm Detail
差异表达分析Differential ExpressionR 包
DESeq2
基于负二项分布的 RNA-seq 差异表达分析 R 包,适合有生物学重复的 bulk RNA-seq。
Benchmark
性能基准测试
当前图表用于比较不同数据规模下的时间消耗和内存消耗。
性能基准测试
R 4.4 / 25k genes / negative binomial GLM
Documentation
软件原理、用法与参数
统一使用 Markdown 文档渲染,保留命令行代码块、参数表和示例说明。
DESeq2 差异表达分析
工具定位
DESeq2 是 bulk RNA-seq 差异表达分析最常用的 R 包之一,用于对 count matrix 建模,输出 log2FoldChange、pvalue 和 padj。
适用场景
- 适合:有生物学重复的 bulk RNA-seq、标准两组比较、多因素实验设计。
- 不适合:无重复样本的正式统计检验、TPM/FPKM 直接差异分析。
输入与输出
| 类型 | 文件 | 说明 |
|---|---|---|
| 输入 | gene_counts.txt | raw counts,不能是 TPM |
| 输入 | metadata.tsv | 样本分组、批次、时间等信息 |
| 输出 | DEG_results.tsv | 差异表达结果 |
| 输出 | normalized_counts.tsv | 标准化 counts |
| 输出 | PCA/MA/volcano plot | 质量控制和结果展示 |
安装方式
if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager")
BiocManager::install(c("DESeq2", "apeglm", "pheatmap"))
推荐项目目录
project_deseq2/
├── 00_counts/
│ └── gene_counts.txt
├── 01_metadata/
│ └── metadata.tsv
├── 02_results/
├── 03_plots/
└── scripts/
最小可运行示例
library(DESeq2)
counts <- read.table("00_counts/gene_counts.txt", header = TRUE, row.names = 1, check.names = FALSE)
meta <- read.table("01_metadata/metadata.tsv", header = TRUE, sep = " ", row.names = 1)
counts <- counts[, rownames(meta)]
dds <- DESeqDataSetFromMatrix(
countData = round(counts),
colData = meta,
design = ~ group
)
dds <- dds[rowSums(counts(dds)) >= 10, ]
dds <- DESeq(dds)
res <- results(dds, contrast = c("group", "treat", "control"))
res <- lfcShrink(dds, contrast = c("group", "treat", "control"), res = res, type = "apeglm")
write.csv(as.data.frame(res), "02_results/DESeq2_treat_vs_control.csv")
常用参数表
| 参数/函数 | 含义 | 推荐用法 | 注意事项 |
|---|---|---|---|
design | 实验设计公式 | ~ group 或 ~ batch + group | 批次和分组不能完全混杂 |
contrast | 指定比较 | c("group","treat","control") | 顺序决定 log2FC 方向 |
DESeq() | 主分析函数 | 默认 | 包含 size factor、dispersion 和 GLM |
lfcShrink() | log2FC 收缩 | type="apeglm" | 排序和展示更稳健 |
alpha | FDR 阈值 | 0.05 | 与 padj 判断一致 |
independentFiltering | 独立过滤 | 默认 TRUE | 通常保留默认 |
blind | vst/rlog 是否盲化 | PCA 用 TRUE/视情况 | 强处理效应项目可设 FALSE |
结果解读
log2FoldChange > 0:在 contrast 的第一个水平中更高。padj < 0.05:经过多重检验校正后显著。baseMean很低的基因即使 log2FC 大,也要谨慎解释。- PCA 如果按批次分开而不是处理组分开,需要考虑批次校正或设计公式。
常见错误
| 问题 | 可能原因 | 解决办法 |
|---|---|---|
| 报错 counts 不是整数 | 输入用了 TPM/FPKM | 换 raw counts |
| 样本顺序错 | count 列名和 metadata 行名不一致 | 强制 counts <- counts[, rownames(meta)] |
| 结果方向反了 | contrast 顺序写反 | 明确 treat/control 顺序 |
| padj 全 NA | 低表达太多或样本太少 | 过滤低表达,检查重复数 |
关联流程
- Bulk RNA-seq 标准差异表达分析增强版
- Salmon + tximport + DESeq2
- STAR + featureCounts + DESeq2 + TPM