一、引言
富集分析(enrichment analysis)是一种生物信息学方法,它可以帮助我们识别基因或其他的生物实体在某个特定的类别中过度表示的趋势。通俗来说,富集分析通过将基因分类到特定的集合中,然后根据基因在集合中的分布和总体分布的比较,来寻找哪些集合与特定的生物过程、疾病或其他功能相关联。其中一种常用的可视化形式就是富集条形图(enrichment bar plot)。它可以显示分析结果并解释生物学上富集通路的各种特征。
为了实现富集分析和绘制富集条形图,我们可以使用R语言。R语言是一种免费开源的编程语言和软件环境,用于统计计算,绘制图表和数据分析。它在大量生物信息学数据分析中得到应用,并成为当前技术最前沿的生物信息学研究领域。如此优势的R语言支持,是进行富集分析和富集条形图的理想之选。
二、富集分析与富集条形图
2.1 从富集分析到富集条形图:一个综述性的介绍
富集分析广泛用于生物信息学中的基因组学、转录组学以及蛋白质组学等多个方面。富集分析旨在理解基因或蛋白质组的基本生物学特性以及在某些条件或环境下的行为特征。在生物医学研究中,富集分析通常用于揭示不同组的基因表达谱上的差异,并帮助确定基因表达在特定疾病或生物过程中的生物学作用。
富集条形图是一种重要的富集分析可视化工具,它能帮助我们对结果进行更清晰、更准确、更生动的展示。富集条形图可以显示各个功能通路在分析过程中的显著程度,并对显著的富集通路进行分类。这种可视化工具可以为数据分析者提供更详细、更准确、更全面的信息,从而为研究和实践提供更丰富的分析思路。
2.2 介绍什么是富集分析和富集条形图
富集分析是一种生物信息学方法。它将特定基因或细胞信号转化为相应的通路或基本生物过程,进而对它们的富集情况进行比较分析。富集分析的主要步骤包括:选取样本、收集分析数据、比较基因表达差异、寻找生物学趋势、验证检测结果等。
富集条形图是一种可视化富集分析结果的工具。通常情况下,富集条形图按富集度递减的顺序显示富集通路,对应的颜色告诉你通路的显著水平有多高。此外,绘制富集条形图时,还可以根据不同的颜色映射,显示富集通路的基因数目和富集通路的显著水平,更直观地为数据提供了参考。
2.3 讲述富集条形图的组成和绘制方法
富集条形图主要由两部分组成——Y轴和X轴。其中,Y轴按照研究通路的名称递减排序,而X轴则显示各个研究通路在不同样本中的富集标准。此外,富集条形图还包括条形图、注释分布图、颜色条、关键的样本名称和注释说明。
富集条形图的绘制主要分为三个步骤:首先是收集数据,其次是进行基本数据分析,最后是使用R语言进行绘图。在这个过程中,需要绘制的图表包括函数和通路富集度、显著性水平和节点数的折线图,以及富集条形图本身。
三、数据集
该数据集是GOplot自带的数据集,可以用来学习Go富集分析和可视化,接下来我们引入数据集
library(GOplot)
data(EC)
library(RColorBrewer)
library(ggplot2)
library(dplyr)
数据集展示:
> # 查看数据
> head(EC$eset)
Gene_Symbol Brain_A Brain_B Brain_C Heart_A Heart_B Heart_C
1 0610007P14Rik 0.58382130 0.81117820 -0.2480545 -0.67075443 -0.58700850 -0.65176487
2 0610008F07Rik 0.13262606 0.11230135 0.3122339 0.10193062 -0.06617737 0.09765196
3 0610009B22Rik -0.09357643 -0.20074654 0.2505083 -1.02136140 -0.18762684 -0.69150734
4 0610009D07Rik 0.06708336 0.12616920 -0.1234570 -0.74400520 -0.42762280 -0.43724203
5 0610009O20Rik 0.02191877 0.13460398 0.2718530 0.27460957 -0.07751560 0.00000000
6 0610010F05Rik -0.10588837 -0.05568028 0.0115509 0.06084633 -0.18752098 0.01155090
> # 查看数据
> head(EC$genelist)
ID logFC AveExpr t P.Value adj.P.Val B
1 Slco1a4 6.645388 1.2168670 88.65515 1.32e-18 2.73e-14 29.02715
2 Slc19a3 6.281525 1.1600468 69.95094 2.41e-17 2.49e-13 27.62917
3 Ddc 4.483338 0.8365231 65.57836 5.31e-17 3.65e-13 27.18476
4 Slco1c1 6.469384 1.3558865 59.87613 1.62e-16 8.34e-13 26.51242
5 Sema3c 5.515630 2.3252117 58.53141 2.14e-16 8.81e-13 26.33626
6 Slc38a3 4.761755 0.9218670 54.11559 5.58e-16 1.76e-12 25.70308
> # 查看数据
> head(EC$david)
Category ID Term
1 BP GO:0007507 heart development
2 BP GO:0001944 vasculature development
3 BP GO:0001568 blood vessel development
4 BP GO:0048729 tissue morphogenesis
5 BP GO:0048514 blood vessel morphogenesis
6 BP GO:0051336 regulation of hydrolase activity
Genes
1 DLC1, NRP2, NRP1, EDN1, PDLIM3, GJA1, TTN, GJA5, ZIC3, TGFB2, CERKL, GATA6, COL4A3BP, GAB1, SEMA3C, MKL2, SLC22A5, MB, PTPRJ, RXRA, VANGL2, MYH6, TNNT2, HHEX, MURC, MIB1, FOXC2, FOXC1, ADAM19, MYL2, TCAP, EGLN1, SOX9, ITGB1, CHD7, HEXIM1, PKD2, NFATC4, PCSK5, ACTC1, TGFBR2, NF1, HSPG2, SMAD3, TBX1, TNNI3, CSRP3, FOXP1, KCNJ8, PLN, TSC2, ATP6V0A1, TGFBR3, HDAC9
2 GNA13, ACVRL1, NRP1, PGF, IL18, LEPR, EDN1, GJA1, FOXO1, GJA5, TGFB2, WARS, CERKL, APOE, CXCR4, ANG, SEMA3C, NOS2, MKL2, FGF2, RAPGEF1, PTPRJ, RECK, EFNB2, VASH1, PNPLA6, THY1, MIB1, NUS1, FOXC2, FOXC1, CAV1, CDH2, MEIS1, WT1, CDH5, PTK2, FBXW8, CHD7, PLCD1, PLXND1, FIGF, PPAP2B, MAP2K1, TBX4, TGFBR2, NF1, TBX1, TNNI3, LAMA4, MEOX2, ECSCR, HBEGF, AMOT, TGFBR3, HDAC7
3 GNA13, ACVRL1, NRP1, PGF, IL18, LEPR, EDN1, GJA1, FOXO1, GJA5, TGFB2, WARS, CERKL, APOE, CXCR4, ANG, SEMA3C, NOS2, MKL2, FGF2, RAPGEF1, PTPRJ, RECK, VASH1, PNPLA6, THY1, MIB1, NUS1, FOXC2, FOXC1, CAV1, CDH2, MEIS1, WT1, CDH5, PTK2, FBXW8, CHD7, PLCD1, PLXND1, FIGF, PPAP2B, MAP2K1, TBX4, TGFBR2, NF1, TBX1, TNNI3, LAMA4, MEOX2, ECSCR, HBEGF, AMOT, TGFBR3, HDAC7
4 DLC1, ENAH, NRP1, PGF, ZIC2, TGFB2, CD44, ILK, SEMA3C, RET, AR, RXRA, VANGL2, LEF1, TNNT2, HHEX, MIB1, NCOA3, FOXC2, FOXC1, TGFB1I1, WNT5A, COBL, BBS4, FGFR3, TNC, BMPR2, CTNND1, EGLN1, NR3C1, SOX9, TCF7L1, IGF1R, FOXQ1, MACF1, HOXA5, BCL2, PLXND1, CAR2, ACTC1, TBX4, SMAD3, FZD3, SHANK3, FZD6, HOXB4, FREM2, TSC2, ZIC5, TGFBR3, APAF1
5 GNA13, CAV1, ACVRL1, NRP1, PGF, IL18, LEPR, EDN1, GJA1, CDH2, MEIS1, WT1, TGFB2, WARS, PTK2, CERKL, APOE, CXCR4, ANG, SEMA3C, PLCD1, NOS2, MKL2, PLXND1, FIGF, FGF2, PTPRJ, TGFBR2, TBX4, NF1, TBX1, TNNI3, PNPLA6, VASH1, THY1, NUS1, MEOX2, ECSCR, AMOT, HBEGF, FOXC2, FOXC1, HDAC7
6 CAV1, XIAP, AGFG1, ADORA2A, TNNC1, TBC1D9, LEPR, ABHD5, EDN1, ASAP2, ASAP3, SMAP1, TBC1D12, ANG, TBC1D14, MTCH1, TBC1D13, TBC1D4, TBC1D30, DHCR24, HIP1, VAV3, NOS1, NF1, MYH6, RICTOR, TBC1D22A, THY1, PLCE1, RNF7, NDEL1, CHML, IFT57, ACAP2, TSC2, ERN1, APAF1, ARAP3, ARAP2, ARAP1, HTR2A, F2R
adj_pval
1 0.000002170
2 0.000010400
3 0.000007620
4 0.000119000
5 0.000720000
6 0.001171166
> # 查看数据
> head(EC$genes)
ID logFC
1 PTK2 -0.6527904
2 GNA13 0.3711599
3 LEPR 2.6539788
4 APOE 0.8698346
5 CXCR4 -2.5647537
6 RECK 3.6926860
> # 查看数据
> EC$process
[1] "heart development" "phosphorylation" "vasculature development" "blood vessel development" "tissue morphogenesis" "cell adhesion"
[7] "plasma membrane"
2.2 数据预处理
使用cirlce_dat
函数整合GO注释结果数据和基因差异表达分析数据结合起来,形成作图对象。
circ <- circle_dat(EC$david, EC$genelist)
circ_filter <- circ %>% filter(category == "MF")
head(circ)
结果展示:
category ID term count genes logFC adj_pval zscore
1 BP GO:0007507 heart development 54 DLC1 -0.9707875 2.17e-06 -0.8164966
2 BP GO:0007507 heart development 54 NRP2 -1.5153173 2.17e-06 -0.8164966
3 BP GO:0007507 heart development 54 NRP1 -1.1412315 2.17e-06 -0.8164966
4 BP GO:0007507 heart development 54 EDN1 1.3813006 2.17e-06 -0.8164966
5 BP GO:0007507 heart development 54 PDLIM3 -0.8876939 2.17e-06 -0.8164966
6 BP GO:0007507 heart development 54 GJA1 -0.8179480 2.17e-06 -0.8164966
三、数据可视化
3.1 常规富集条形图(ggplot2)
#先自定义主题:
mytheme <- theme(
axis.title = element_text(size = 14),
axis.text = element_text(size = 12),
plot.title = element_text(size = 15,
hjust = 0.5,
face = "bold"),
legend.title = element_text(size = 14),
legend.text = element_text(size = 12),
plot.margin = margin(t = 5.8,
r = 12,
l = 6.5,
b = 6.5)
)
#常规富集条形图绘图:
p <- ggplot(data = circ_filter, aes(x = count, y = ID, fill = -log10(adj_pval))) +
scale_fill_distiller(palette = "RdPu",direction = 1) +
geom_bar(stat = "identity", width = 0.8) +
labs(x = "count", y = "", title = "KEGG富集图") +
theme_bw() + mytheme
p
3.2 组合图(ggplot2)
上图看起来还是不是那么明显,我们可以使用组合图的形似来看。
bar <- ggplot(data = circ_filter,aes(x = ID, y = -log10(adj_pval))) +
geom_bar(stat = "identity", width = 0.8, fill = 'pink') +
scale_y_continuous() +
labs(x = "", y = "-log10(adj_pval)", title = "KEGG富集图") +
theme_classic() + mytheme +
coord_flip()
bar
#绘制折线散点图展示count数目:
line <- ggplot(data = circ_filter, aes(x = ID, y = count, group = 1)) +
geom_line(color = "green", cex = 0.5) +
geom_point(size = 2) +
scale_y_continuous() +
labs(x = "", y = "Count", title = "KEGG富集图") +
theme_classic() + mytheme +
coord_flip()
line
# 组合图
bar_line <- ggplot() +
geom_bar(data = circ_filter, aes(x = ID, y = -log10(adj_pval)),
stat = "identity", width = 0.8, fill = 'pink') +
scale_y_continuous(
expand = c(0,0),
sec.axis = sec_axis(~. /1.5,
name = 'Count')) + #辅助轴刻度线断点
geom_line(data = circ_filter, aes(x = ID, y = count*1.5, group = 1),
color = "blue", cex = 0.5) +
geom_point(data = circ_filter, aes(x = ID, y = count*1.5),
size = 2) +
labs(x = "", y = "-log10(pvalue)", title = "KEGG富集图") +
theme_classic() +
mytheme +
coord_flip() #由于geom_line函数绘制折线是按照变量在x轴水平方向顺序进行连接,因此这里把x/y轴对应变量交换了一下,最后再通过坐标翻转回来
bar_line
3.3 GOplot绘制富集条形图
-
所有种类
GOBar(circ, display = 'multiple', zsc.col = c('blue', 'white', 'red'))
是不是觉得有写不清晰,看不出x坐标的标注。没关系,我们可以选择性展示其中感兴趣的部分。
-
展示特定种类
GOBar(subset(circ, category == 'MF'))
这样就很清晰了!
四、富集条形图的应用
-
利用富集条形图解析基因表达的差异
为了探索不同表达谱中的生物学特性和功能,富集条形图常常被用于测量什么样的通路在某些样本中显著富集。这种分析非常适用于探索基因表达差异性,探索基因与功能通路之间的相关性。将不同层次的数据进行分析,也可以为更深层次的功能研究提供指导性意见。
-
描述如何从富集条形图中识别重要的通路或过程
富集条形图可以帮助我们识别在数据集中显著富集的生物过程或通路。在一张富集条形图中,更重要的富集通路会持续出现,并生成更大的富集度。此时,人们应该进一步分析这些重要的富集通路,并从中确定与数据集特性相关的背景和性质。
-
强调富集条形图在生物大数据处理中的重要性。
富集条形图在生物大数据分析中起着核心地位,能够对基因、蛋白质、代谢物等高通量数据进行注释。随着大数据时代的到来,富集分析与富集条形图成为了分析工具的基石之一,如生物医学信息学中的疾病诊断、药物研发、基因功能验证等等,都需要富集条形图进行数据展示,以辅助我们进行快速准确的数据分析与解读。
*「未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。」