返回软件与算法

Software & Algorithm Detail

差异表达分析Differential ExpressionR 包

DESeq2

基于负二项分布的 RNA-seq 差异表达分析 R 包,适合有生物学重复的 bulk RNA-seq。

资源类型
R 包
方法分类
差异表达分析
原始分类
Differential Expression
创建时间
2026/6/3

Benchmark

性能基准测试

当前图表用于比较不同数据规模下的时间消耗和内存消耗。

性能基准测试

R 4.4 / 25k genes / negative binomial GLM

Benchmark

Documentation

软件原理、用法与参数

统一使用 Markdown 文档渲染,保留命令行代码块、参数表和示例说明。

DESeq2 差异表达分析

工具定位

DESeq2 是 bulk RNA-seq 差异表达分析最常用的 R 包之一,用于对 count matrix 建模,输出 log2FoldChange、pvalue 和 padj。

适用场景

  • 适合:有生物学重复的 bulk RNA-seq、标准两组比较、多因素实验设计。
  • 不适合:无重复样本的正式统计检验、TPM/FPKM 直接差异分析。

输入与输出

类型文件说明
输入gene_counts.txtraw 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"排序和展示更稳健
alphaFDR 阈值0.05与 padj 判断一致
independentFiltering独立过滤默认 TRUE通常保留默认
blindvst/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