Xiaotao Shen

使用R语言下载KEGG数据库

2018/06/03 Share

最近在群里发现大家经常交流如何下载各种数据库,确实,数据库对做各种组学来说,确实是非常重要的,但是很多数据库的下载做的并不是那么友好。KEGG是我们平时接触最多,以及最受大家欢迎的数据库之一,因此,这次我把一个非常好用的R包,KEGGREST下载KEGG数据库的用法进行了总结。

简单介绍

KEGGREST包是一个bioconductor包,是由bioconductor的核心小组成员之一,Dan Tenenbaum写的,主要就是用来下载KEGG数据库。链接如下,https://bioconductor.org/packages/release/bioc/html/KEGGREST.html。

安装KEGGREST

可以直接使用Bioconductor提供的下载方式进行下载,在R控制面板中输入下列代码:

1
2
3
## try http:// if https:// URLs are not supported
source("https://bioconductor.org/biocLite.R")
biocLite("KEGGREST")

如果出错,不能安装,可以考虑把https换为http,输入下列代码:

1
2
3
## try http:// if https:// URLs are not supported
source("http://bioconductor.org/biocLite.R")
biocLite("KEGGREST")

安装成功之后,就可以使用了。

概览

成功安装之后,这个包有自己的说明文档,输入下列代码可以打开说明文档。

1
browseVignettes("KEGGREST")

文档如下:

image

输入下列代码:

1
2
library(KEGGREST)
listDatabases()

可以看到该包可以下载的数据类型:

image

可以看到KEGG中几乎所有数据库都可以下载下来,我们以我们最为常用的pathway和compound数据为例,来说明如何使用KEGGREST。

下载pathway信息

我们知道pathway信息有不同的物种,因此我们首先需要弄清楚有哪些物种,可以使用以下代码获得包含哪些物种:

1
2
org <- keggList("organism")
head(org)

image

org是一个matrix,其中第三列是各个物种的名字,第二列是各个物种的简称。

下面我们就来获取人类所有的pathway。

可以看到人类的简称是hsa。下面再获得人类的所有通路的代码简称:

1
2
hsa.pathway <- keggLink("pathway", "hsa")
hsa.pathway <- unique(hsa.pathway)

image

hsa.pahtway就是所有人类pathway的代码简称。

然后使用keggGet函数就可以将每个pathway的信息全部爬去下来,比如第一个pathway是:path:hsa00010”

1
2
hsa.pathway[1]
hsa00010 <- keggGet(dbentries = hsa.pathway[1])[[1]]

hsa00010是一个list格式的数据,它的内容分别是:

1
names(hsa00010)

image

与KEGG网页版的数据是一一对应的。

image

如果想要得到人类所有KEGG pahtway的信息,则可以使用下列代码得到,以为该函数每次最多只接受10个pathway的下载请求(推测是为了防止KEGG的下载崩溃),因此更为便捷的办法是,循环获得所有的pathway信息:

1
2
3
4
5
6
hsa.pathway.database <- vector(mode = "list", length = length(hsa.pathway))
for(i in 1:length(hsa.pathway)){
cat(i, " ")
hsa.pathway.database[[i]] <- keggGet(dbentries = hsa.pathway[i])
}

最后可以将得到的信息保存下来:

1
save(hsa.pathway.database, file = "hsa.pathway.database")

下载compound信息

首先需要获得所有代谢物的ID

1
2
compound.id <- keggList("compound")
compound.id <- names(compound.id)

然后仍然通过keggGet函数获得所有代谢物的详细信息:

1
2
3
4
5
6
kegg.compound.database <- vector(mode = "list", length = length(compound.id))
for(i in 1:length(compound.id)){
cat(i, " ")
kegg.compound.database[[i]] <- keggGet(dbentries = compound.id[i])
}

得到的kegg.compound.database也是一个list数据,如果想要将其转换为datafrmae格式,然后输出位csv或者xlsx格式,自己进行转换即可。

写在后面的话

这个包用来下载KEGG数据库真的是非常方便,以前用过,后来忘掉了,最近又找出来,为了防止自己忘掉,所以写了一篇文章来记录一下,其他的功能后面会再研究记录。

CATALOG
  1. 1. 简单介绍
  2. 2. 安装KEGGREST
  3. 3. 概览
  4. 4. 下载pathway信息
  5. 5. 下载compound信息
  6. 6. 写在后面的话