我们上一期介绍了如何实现GO分析的可视化,运行了GOplot包自带的数据并且很畅通。然而我们如何才能获取那些可以直接输入的数据表格或者说前期的工作是怎么实现的。今天就跟大家介绍下如何利用R语言实现GO的流程化分析。
我们需要以下三个包:GO.db是GO分析的数据基础它包含了GO的基本分层信息;topGO是基因的功能富集分析包;GOProfiles利用GO谱进行富集分析。接下来我们逐个介绍如何使用以上三个R包。所有包的安装我们就不赘述了,都是通过bioconductor进行安装的。
GO.db的使用:
首先,我们看下GO.db数据包的构成:
以上都是GO.db中的数据包,首先我们看下GO.db中包含的列
其他的数据是以工程文件的形式存在,在此需要进行转化转化函数as.list(GOTERM)可将其转化为list 的可检索文件。
接下来我们介绍下其主要的检索函数select(),首先看下它的函数构成:
Select(data,keys,columns,keytypes)
Keys检索的关键词,keytypes指的关键词的类型,columns指的那些列被列出来。
当然还有其他一些有用的函数:
Keys()列出数据的主键列,或者加keytypes参数获取对应的列
MapIds进行数据库的批量匹配。
以上在GO.db中适用的所有函数在其他.db的数据包中都可以适用。如下:
gpl | organism | bioc_package |
---|---|---|
GPL32 | Mus musculus | mgu74a |
GPL33 | Mus musculus | mgu74b |
GPL34 | Mus musculus | mgu74c |
GPL74 | Homo sapiens | hcg110 |
GPL75 | Mus musculus | mu11ksuba |
GPL76 | Mus musculus | mu11ksubb |
GPL77 | Mus musculus | mu19ksuba |
GPL78 | Mus musculus | mu19ksubb |
GPL79 | Mus musculus | mu19ksubc |
GPL80 | Homo sapiens | hu6800 |
GPL81 | Mus musculus | mgu74av2 |
GPL82 | Mus musculus | mgu74bv2 |
GPL83 | Mus musculus | mgu74cv2 |
GPL85 | Rattus norvegicus | rgu34a |
GPL86 | Rattus norvegicus | rgu34b |
GPL87 | Rattus norvegicus | rgu34c |
GPL88 | Rattus norvegicus | rnu34 |
GPL89 | Rattus norvegicus | rtu34 |
GPL91 | Homo sapiens | hgu95av2 |
GPL92 | Homo sapiens | hgu95b |
GPL93 | Homo sapiens | hgu95c |
GPL94 | Homo sapiens | hgu95d |
GPL95 | Homo sapiens | hgu95e |
GPL96 | Homo sapiens | hgu133a |
GPL97 | Homo sapiens | hgu133b |
GPL98 | Homo sapiens | hu35ksuba |
GPL99 | Homo sapiens | hu35ksubb |
GPL100 | Homo sapiens | hu35ksubc |
GPL101 | Homo sapiens | hu35ksubd |
GPL201 | Homo sapiens | Hgfocus |
GPL339 | Mus musculus | moe430a |
GPL340 | Mus musculus | mouse4302 |
GPL341 | Rattus norvegicus | rae230a |
GPL342 | Rattus norvegicus | rae230b |
GPL570 | Homo sapiens | hgu133plus2 |
GPL571 | Homo sapiens | hgu133a2 |
GPL886 | Homo sapiens | hgug4111a |
GPL887 | Homo sapiens | hgug4110b |
GPL1261 | Mus musculus | mouse430a2 |
GPL1352 | Homo sapiens | u133x3p |
GPL1355 | Rattus norvegicus | rat2302 |
GPL1708 | Homo sapiens | hgug4112a |
GPL2891 | Homo sapiens | h20kcod |
GPL2898 | Rattus norvegicu | adme16cod |
GPL3921 | Homo sapiens | hthgu133a |
GPL4191 | Homo sapiens | h10kcod |
GPL5689 | Homo sapiens | hgug4100a |
GPL6097 | Homo sapiens | illuminaHumanv1 |
GPL6102 | Homo sapiens | illuminaHumanv2 |
GPL6244 | Homo sapiens | hugene10sttranscriptcluster |
GPL6947 | Homo sapiens | illuminaHumanv3 |
GPL8300 | Homo sapiens | hgu95av2 |
GPL8490 | Homo sapiens | IlluminaHumanMethylation27k |
GPL10558 | Homo sapiens | illuminaHumanv4 |
GPL11532 | Homo sapiens | hugene11sttranscriptcluster |
GPL13497 | Homo sapiens | HsAgilentDesign026652 |
GPL13534 | Homo sapiens | IlluminaHumanMethylation450k |
GPL13667 | Homo sapiens | hgu219 |
GPL15380 | Homo sapiens | GGHumanMethCancerPanelv1 |
GPL15396 | Homo sapiens | hthgu133b |
GPL17897 | Homo sapiens | hthgu133a |
GO的基础数据已经准备好,接下来是如何做功能富集分析并输出我们想要的结果,那么就用到了下面的包topGO,为了方便我们举例我们还载入了ALL数据包。还是那句话安装啥的直接略过。
首先我们的数据包括ALL,还有topGO自带的geneList。
这样我们就可以构建我们的检索数据。其中用到一个函数topDiffGenes()其主要功能是获取P小于0.01的基因列表。数据构建如下
affyLib <- paste(annotation(ALL), ".db",sep = ".")
library(package = affyLib, character.only =TRUE) #这里其实就是需要载入hgu95av2.db包
sampleGOdata <-new("topGOdata", description = "Simple session", ontology ="BP", allGenes = geneList,geneSel = topDiffGenes, nodeSize = 10, annot = annFUN.db, affyLib = affyLib) #其中的nodeSize代表GO ID包含最少的基因数量。
运行后的结果如下:
至此我们的GO和gene匹配的过程结束了,接下来就是我们的核心部分富集分析了。富集分析有很多方法,在此包中的方法我们列出如下:
我们在此指提供fisher的检验方法,如果你需要更多方法可以自行去尝试。 resultFisher <- runTest(sampleGOdata, algorithm = "classic",statistic = "fisher")
相信聪明的你指导如何扩展,运行结果如下:
接下来就是整理结果了,整理成我们可以用的数据从而导入GOplot实现完美展示。不多说,请看下面的代码:
allRes <- GenTable(sampleGOdata,classicFisher = resultFisher, ranksOf = "classicFisher", topNodes =10)
运行结果如下:
这个结构很熟悉了吧,接下来就是GOplot上场的时刻了。在此省略。。。。。。。。。。一万字。自行去实验吧。
我们继续降格topGO可视化的功能,那就是绘制GO层级图。
showSigOfNodes(sampleGOdata, score(resultFisher),firstSigNodes = 5, useInfo = 'all')#其中useInfo选项很多可以根据自己的需求显示对应的东西。