最近在群里發(fā)現(xiàn)大家經(jīng)常交流如何下載各種數(shù)據(jù)庫,數(shù)據(jù)庫對做各種組學(xué)來說,確實是非常重要的,但是很多數(shù)據(jù)庫的下載做的并不是那么友好。KEGG是我們平時接觸最多,以及最受大家歡迎的數(shù)據(jù)庫之一,因此,這次我把一個非常好用的R包,KEGGREST下載KEGG數(shù)據(jù)庫的用法進(jìn)行了總結(jié)。
KEGGREST包是一個bioconductor包,是由bioconductor的核心小組成員之一,Dan Tenenbaum寫的,主要就是用來下載KEGG數(shù)據(jù)庫。鏈接如下,https://bioconductor.org/packages/release/bioc/html/KEGGREST.html。
可以直接使用Bioconductor提供的下載方式進(jìn)行下載,在R控制面板中輸入下列代碼:
## try http:// if https:// URLs are not supportedsource('https://bioconductor.org/biocLite.R')biocLite('KEGGREST')
如果出錯,不能安裝,可以考慮把https換為http,輸入下列代碼:
## try http:// if https:// URLs are not supportedsource('http://bioconductor.org/biocLite.R')biocLite('KEGGREST')
安裝成功之后,就可以使用了。
成功安裝之后,這個包有自己的說明文檔,輸入下列代碼可以打開說明文檔。
browseVignettes('KEGGREST')
文檔如下:
輸入下列代碼:
library(KEGGREST)listDatabases()
可以看到該包可以下載的數(shù)據(jù)類型:
可以看到KEGG中幾乎所有數(shù)據(jù)庫都可以下載下來,我們以我們最為常用的pathway和compound數(shù)據(jù)為例,來說明如何使用KEGGREST。
我們知道pathway信息有不同的物種,因此我們首先需要弄清楚有哪些物種,可以使用以下代碼獲得包含哪些物種:
org <- keggList('organism')head(org)
org是一個matrix,其中第三列是各個物種的名字,第二列是各個物種的簡稱。
下面我們就來獲取人類所有的pathway。
可以看到人類的簡稱是hsa。下面再獲得人類的所有通路的代碼簡稱:
hsa.pathway <- keggLink('pathway', 'hsa')hsa.pathway <- unique(hsa.pathway)
hsa.pahtway就是所有人類pathway的代碼簡稱。
然后使用keggGet函數(shù)就可以將每個pathway的信息全部爬去下來,比如第一個pathway是:path:hsa00010'
hsa.pathway[1]hsa00010 <- keggGet(dbentries = hsa.pathway[1])[[1]]
hsa00010是一個list格式的數(shù)據(jù),它的內(nèi)容分別是:
names(hsa00010)
與KEGG網(wǎng)頁版的數(shù)據(jù)是一一對應(yīng)的。
如果想要得到人類所有KEGG pahtway的信息,則可以使用下列代碼得到,以為該函數(shù)每次最多只接受10個pathway的下載請求(推測是為了防止KEGG的下載崩潰),因此更為便捷的辦法是,循環(huán)獲得所有的pathway信息:
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])}
最后可以將得到的信息保存下來:
save(hsa.pathway.database, file = 'hsa.pathway.database')
首先需要獲得所有代謝物的ID
compound.id <- keggList('compound')compound.id <- names(compound.id)
然后仍然通過keggGet函數(shù)獲得所有代謝物的詳細(xì)信息:
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數(shù)據(jù),如果想要將其轉(zhuǎn)換為datafrmae格式,然后輸出位csv或者xlsx格式,自己進(jìn)行轉(zhuǎn)換即可。
這個包用來下載KEGG數(shù)據(jù)庫真的是非常方便,以前用過,后來忘掉了,最近又找出來,為了防止自己忘掉,所以寫了一篇文章來記錄一下,其他的功能后面會再研究記錄。后續(xù)會再教大家怎么爬取HMDB數(shù)據(jù)庫。