GO和KEGG富集方法以及简单富集图的绘制
一、需要准备文件:
基因列表(可以是差异分析的结果文件或者取交集的交集基因等,有标志的基因Symbol名称即可),测试文件为DEG_result.csv
1)这个DEG(差异表达基因)表格包含了基因的统计分析结果。各列的含义如下:
- logFC:对数转换的折叠变化(log Fold Change)。表示某基因在实验组与对照组之间的表达变化量。值为负表示基因在实验组的表达水平低于对照组,值为正则表示实验组中该基因的表达高于对照组。在这个表格中,KLF9、CEBPD和SLC19A2都是负值,意味着这些基因在实验组中的表达低于对照组。
- AveExpr:平均表达值(Average Expression)。表示该基因在所有样本中的平均表达水平。数值越大,表示该基因的表达水平越高。例如,KLF9的平均表达为5.34,说明它在样本中的表达水平较高。
- t:t值,表示差异表达基因的统计显著性。t值越大(无论是正值还是负值),表示该基因在两组间的差异越显著。在这个表格中,KLF9的t值为-17.49,说明它的表达差异非常显著。
- pvalue:P值,用于评估该基因差异表达的统计显著性。P值越小,表示该基因的差异表达越显著。例如,KLF9的P值为2.12E-14,远小于0.05,说明该基因的差异表达具有极高的显著性。
- padj:调整后的P值,通常使用Benjamini-Hochberg(BH)方法或其他方法来校正多重假设检验带来的假阳性率。padj值越小,表示差异表达结果越可靠。KLF9的padj值为2.59E-10,表示即使考虑到多个假设检验,该基因的差异表达依然是非常显著的。
- B:贝叶斯统计量(B-statistic)。这是一种基于贝叶斯模型的评估标准,反映了基因是否有显著的差异表达。数值越大,表示该基因的差异表达越可信。例如,KLF9的B值为22.25,说明它的差异表达显著且可信。
总结:
① logFC:表示基因在两组之间的表达差异,负值表示实验组中的表达低于对照组。
② AveExpr:基因的平均表达水平。
③ t:差异的统计显著性,t值越大表示差异越显著。
④ pvalue:P值,表示差异表达的统计显著性。
⑤ padj:多重检验调整后的P值,控制假阳性率。
⑥ B:贝叶斯统计量,反映差异表达的可信度。
二、KEGG 富集分析,并生成三个图形:条形图、气泡图和小弦图。
1.KEGG 富集分析
① R.utils::setOption("clusterProfiler.download.method", "auto"):该选项指定了下载 KEGG 注释时使用的方式。"auto" 表示自动选择合适的下载方式。
② enrichKEGG():使用 clusterProfiler 包的 enrichKEGG 函数进行 KEGG 富集分析。它基于给定的基因集,计算这些基因在 KEGG 通路中的富集程度。
③ gene = Gene$ENTREZID:Gene$ENTREZID 应该是你基因数据框中的基因 ID 列,这里是 ENTREZ ID。
④ organism = 'hsa':选择物种为人类(hsa 表示 Homo sapiens)。
⑤ keyType = 'kegg':指定输入的基因 ID 类型是 KEGG ID。
⑥ pvalueCutoff = 0.05:设置 p 值的阈值为 0.05。
⑦ qvalueCutoff = 0.2:设置 q 值的阈值为 0.2。
⑧ pAdjustMethod = 'BH':选择 Benjamini-Hochberg 方法对 p 值进行调整,以减少假阳性。
在运行时,enrichKEGG() 会从 KEGG 数据库在线下载相关注释数据,输出一个 enrichResult 对象,存储 KEGG 富集分析的结果。
2、将结果设置为可读格式
① setReadable(kegg, 'org.Hs.eg.db', 'ENTREZID'):这个步骤将富集结果中的基因 ID 转换为人类基因符号(gene symbols)。org.Hs.eg.db是Bioconductor提供的数据库,包含了关于人类基因的信息,ENTREZID是转换前的基因 ID 类型。
3、查看富集分析结果的条目数,并保存文件
① nrow(kegg):查看 KEGG 富集结果中有多少个条目。这将返回富集结果的通路数量。
4、绘制 KEGG 条形图
① pdf(file = "fig4.KEGG_barplot.pdf", width = 6.8, height = 7.2):在生成一个 PDF 文件来保存图形,图形的宽度和高度分别为 6.8 和 7.2。
② barplot():使用 clusterProfiler 包中的 barplot() 函数来绘制富集结果的条形图。
③ kegg:输入的 KEGG 富集分析结果。
④ title = '':去除标题,你可以自定义标题。
⑤ color = 'p.adjust':条形图的颜色依据 p 值调整。
⑥ showCategory = 15:显示前 15 个富集通路。
⑦ font.size = 12:条目字体大小设置为 12。
⑧ scale_y_discrete(labels = function(y) stringr::str_wrap(y, width = 45)):通过 stringr::str_wrap() 函数设置 Y 轴标签的换行,使得每个标签最多显示 45 个字符,以防止标签过长。
5、绘制 KEGG 气泡图
① dotplot():使用 clusterProfiler 包中的 dotplot() 函数绘制 KEGG 富集分析的气泡图。
② showCategory = 15:显示前 15 个富集通路。
③ font.size = 12:字体大小。
④ label_format = 40:控制标签的宽度,避免标签过长。
⑤ color = 'p.adjust':设置颜色根据 p 值调整。
⑥ scale_y_discrete(labels = function(y) stringr::str_wrap(y, width = 45)):同样设置 Y 轴标签的换行,以保证标签的显示效果。
6、绘制 KEGG 小弦图
① cnetplot():使用 clusterProfiler 包中的 cnetplot() 函数绘制 KEGG 富集分析的小弦图(circle network plot)。该图展示了 KEGG 通路中的基因与通路之间的关系。
② showCategory = 6:显示前 6 个富集通路。
③ circular = TRUE:设置为圆形布局。
④ colorEdge = TRUE:边缘使用颜色表示。
⑤ node_label = "category":节点标签为类别。
⑥ cex_gene = 1 和 cex_label_category = 1:设置基因节点和类别标签的大小。
7、可视化结果
三、GO 富集分析,并生成三个图形:条形图、气泡图和小弦图。
1、安装包,并载入数据
2、保存结果
3、可视化绘图
4、结果
生物信息学领域非常广泛,难以一次说尽。我们下次继续更新,一起深入学习生物信息学的内容!
喜欢的宝子们点个赞吧~码字不易,且行且珍惜~