1. 基因数据的差异性分析的概念
基因差异表达分析(Differential Expression Analysis, DEA)是一种针对不同生物样本或不同处理条件下基因表达量变化的分析方法。它可以用来识别基因在两个或多个样本之间的表达差异,从而帮助我们了解基因在不同生物状态下的功能和调控机制。对于基因芯片的差异表达分析,由于其数据普遍被认为服从正态分布,因此常用的差异表达分析方法是在每个基因上应用t检验或方差分析。而高通量分析涉及到多个基因的同时检验,因此需要进行多重比较校正,以控制假阳性的发生。
2. 差异分析的步骤
- 数据预处理:包括原始数据的清洗、标准化和归一化。
- 分组与设计矩阵:根据实验设计对样本进行分组,定义比较组和对照组。
- 统计检验:使用统计学方法(如t检验、卡方检验、方差分析、Wilcoxon检验等等)或机器学习方法(如支持向量机、随机森林等)来比较不同样本之间的基因表达量,计算基因表达的显著性差异。
- 多重假设检验校正:如FDR校正,减少假阳性率。
- 可视化:使用火山图、热图等展示差异基因结果。
- 功能富集分析:探讨差异基因的生物学功能和通路。
- 结果解释和验证:基于差异性分析和功能富集分析的结果,可以进一步进行实验验证,以确定差异基因的生物学意义和功能,从而更好地理解基因在不同生物状态下的作用和调控机制。
3. 三大差异分析工具特点
- DESeq2:通过负二项式模型对基因计数数据进行拟合,使用Wald检验进行显著性检验,并通过Benjamini-Hochberg方法进行多重检验校正,适合中等样本量的RNA-seq数据。详细文档
- edgeR:同样使用负二项式模型,并通过TMM方法进行数据归一化,适用于小样本RNA-seq数据,采用exact test或quasi-likelihood F-test进行差异分析。详细文档
- limma:主要用于大规模微阵列数据分析,使用线性模型和经验贝叶斯方法调整基因表达值,适用于RNA-seq数据时,先将原始读数转为logCPM,并对mean-variance关系建模,使用FDR方法进行多重检验校正。详细文档
每种工具都提供了丰富的可视化方法,如MA图、Heatmap和Volcano图等,以便于结果的展示和解释。
5. 差异分析在生信热点研究中的重要性
2024年9月3日,国家自然科学基金委员会生命科学部发表 2025 年度重大项目立项建议的通告,明确指出项目立项领域主要布局于基础科研前沿或国家重大科技需求,强调充分体现「大学科交叉」,强调项目意义要大、热点要热、技术要新、目的要明!根据国自然公布的2023年国自然医学部科研热点中标数
可以窥见像这些研究方向:免疫、巨噬细胞、线粒体、铁死亡、自噬、T细胞、干细胞、外泌体等研究热点热度持续攀升,肿瘤微环境、脂代谢、细胞焦亡、类器官等领域研究趋势稳定。同样,不管是何种研究方向,差异表达分析的地位也是水涨船高。它作为基础分析手段,支撑了单细胞测序、GEO/TCGA数据库整合分析及免疫组化验证等主流生信技术,为科研人员提供了有力工具,显著提高了科研成果的可验证性和可发表性。可以毫不避讳的说差异基因分析是研究中的关键节点!!因此,掌握差异基因分析至关重要。
6. 实战示例
使用DESeq2进行差异表达分析示例
最近小编听了一首歌,叫APT,这首歌比较火,学习之余必须放松一下。所以小编这里特定用APT来命名样本,这里是两个样本,各自五个重复
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("DESeq2")
library(DESeq2)
# 读取数据,使用逗号分隔符而不是制表符
database_all <- read.csv(file = "readcounts.csv", row.names = 1)
# 设置分组信息以及构建dds对象
group <- factor(c(rep("APT", 5), rep("AHa", 5)))
coldata <- data.frame(row.names = colnames(database_all), condition = group)
# 创建 DESeq2 数据集,使用 group 作为实验条件
dds <- DESeqDataSetFromMatrix(countData = round(as.matrix(database_all)),
colData = coldata,
design = ~condition)
# 使用DESeq函数进行估计离散度,然后进行标准的差异表达分析,得到res对象结果
dds <- DESeq(dds)
res <- results(dds)
# 最后设定阈值,筛选差异基因,导出数据
table(res$padj <0.05)
res <- res[order(res$padj),]
resdata <- merge(as.data.frame(res), as.data.frame(counts(dds, normalized=TRUE)),
by="row.names", sort=FALSE)
write.csv(resdata, file = "APT_vs_AHa.csv")
结果解读
在差异基因分析最终结果中,有两个个关键列需要特别关注,它们直接决定了基因是否具有显著的生物学意义和解释价值:
- log2FoldChange(差异倍数变化): 通常设置 |log2FoldChange| 的区间在 [1-2] 作为显著差异的标准。
- pvalue(原始P值)和padj(校正后P值): pvalue表示显著性水平,padj是对pvalue进行多重假设检验校正后的结果,减少假阳性。padj < 0.05 表明差异显著。
好了,结果就已经出来了,后续就是可视化了,比如火山图,MA图,热图,散点图等。因为edgeR、Limma分析代码差不多这里就不展示了,小伙伴们可以自主尝试。
7. 总结全文
差异表达分析是生物信息学研究的重要环节,DESeq2、edgeR和limma是常用的分析工具,各自有独特的算法和适用场景。随着单细胞测序、GEO/TCGA数据库验证以及免疫组化等多维度数据整合的兴起,差异分析的重要性愈加凸显。掌握科学的差异分析方法,将为科研工作者揭示基因调控网络和疾病机制提供有力支持。
8.联系方式
后台私信 差异基因分析学习 即可获得本节示例数据和代码