You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将edgeR生成的TMM标准化RNA-seq文件转换为差异表达基因列表

R语言基于TMM标准化转录组数据的差异表达基因分析流程

前提说明

你已获得edgeR生成的TMM标准化表达矩阵,行对应基因、列对应样本,首列为基因名,包含27个A组样本、18个B组样本,需计算B组相对A组的差异表达基因,采用BH法多重检验校正,筛选阈值FDR<0.05。

完整代码

# 1. 加载所需R包,如未安装先执行安装命令
# install.packages("BiocManager")
# BiocManager::install(c("edgeR", "limma"))
library(limma)
library(edgeR)

# 2. 读入TMM标准化表达文件,注意修改文件路径为你的本地路径
expr_df <- read.csv("你的TMM标准化文件路径.csv", row.names = 1, header = TRUE, check.names = FALSE)
# 若为txt格式用:expr_df <- read.table("你的TMM标准化文件路径.txt", row.names = 1, header = TRUE, sep = "\t", check.names = FALSE)

# 3. 构建分组信息,**必须确保样本顺序和表达矩阵的列顺序完全对应**
# 如下假设表达矩阵前27列为A组样本,后18列为B组样本,可根据实际顺序调整
group <- factor(c(rep("A", 27), rep("B", 18)), levels = c("A", "B"))

# 4. 构建设计矩阵与对比矩阵,指定比较组为B vs A
design <- model.matrix(~0 + group)
colnames(design) <- levels(group)
contrast_mat <- makeContrasts(B_vs_A = B - A, levels = design)

# 5. 差异表达分析
fit <- lmFit(expr_df, design)
fit_contrast <- contrasts.fit(fit, contrast_mat)
fit_ebayes <- eBayes(fit_contrast, trend = TRUE)

# 6. 提取全基因差异分析结果,校正方法指定为Benjamini-Hochberg
all_deg_res <- topTable(fit_ebayes, coef = "B_vs_A", adjust = "BH", number = Inf, sort.by = "none")
# 给结果添加基因名列
all_deg_res$gene <- rownames(all_deg_res)
# 调整列顺序为:基因名、logFC、p值、校正后p值(FDR)
all_deg_res <- all_deg_res[, c("gene", "logFC", "P.Value", "adj.P.Val")]

# 7. 筛选FDR<0.05的显著差异表达基因
sig_deg_res <- all_deg_res[all_deg_res$adj.P.Val < 0.05, ]

# 8. 输出结果文件
write.table(all_deg_res, "全基因差异分析结果.txt", sep = "\t", row.names = FALSE, quote = FALSE)
write.table(sig_deg_res, "显著差异表达基因结果_FDR小于0.05.txt", sep = "\t", row.names = FALSE, quote = FALSE)

注意事项

  • 请务必核对分组的样本顺序和表达矩阵的列顺序一致,否则会得到完全错误的分析结果
  • 若你的输入文件为原始计数矩阵而非经过TMM标准化的log转换表达值,需要使用edgeR标准差异分析流程,上述代码不适用
  • 可根据研究需求自行调整FDR筛选阈值,也可额外添加log2FC的阈值(比如|logFC|>1)进一步缩小差异基因范围

内容的提问来源于stack exchange,提问作者hamid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 14:39:03