KEGG API是一个连接KEGG各类数据库的应用程序,主要以URL形式进行访问:
http://rest.kegg.jp/<operation>/<argument>[/<argument2[/<argument3> ...]]
<operation> = info | list | find | get | conv | link | ddi
我们可以通过上述各种KEGG设定的operation进行访问如下KEGG数据库
pathway | brite | module | ko | genome | <org> | vg | ag | compound |
glycan | reaction | rclass | enzyme | disease | drug | dgroup | environ |
genes | ligand | kegg | <medicus> | <outside>
一般来说,我们可能用的最多是pathway数据库了,brite和ko也会用到,各类数据库的解释以及API相关参数可以看http://www.kegg.jp/kegg/rest/keggapi.html
INFO
主要描述各类数据库的信息以及统计结果
http://rest.kegg.jp/info/pathway
LIST
主要用于列出数据库里面的内容,比如:
列出人类的所有的pathway通路
http://rest.kegg.jp/list/pathway/hsa
然后用R统计下人类的pathway通路总共有多少条了,结果可以看出有320条
pathway <- readLines("http://rest.kegg.jp/list/pathway/hsa") length(pathway) [1] 320
也可以列出KEGG注释到的人类的gene有哪些,等
http://rest.kegg.jp/list/hsa
FIND
这个主要用于查找功能,在各个数据库中查找,以匹配你所要的信息,比如:
查找人类的三羧酸循环的通路的ID是什么
http://rest.kegg.jp/find/pathway/Citrate cycle
结果:path:map00020 Citrate cycle (TCA cycle)
GET
这个主要是用于返回根据你输入的各类数据库的登录号所对应的信息,比如:
我们可以通过KEGG上查询到gene id为10458的基因(人类)在KEGG数据库中各类的信息 http://www.genome.jp/dbget-bin/www_bget?hsa:10458
但是上述可以通过KEGG API获得,从而使得我们可以用R或者其他脚本语言进行信息提取
http://rest.kegg.jp/get/hsa:10458
API也支持使用额外参数指定提取输入的相关信息
aaseq | ntseq | mol | kcf | image | kgml
例如提取geneid为10458的氨基酸序列
http://rest.kegg.jp/get/hsa:10458/aaseq
也可以比如hsa:10458基因参与了hsa04810通路,我们也可以通过API获得这个通路图,然后用R下载下来
http://rest.kegg.jp/get/hsa04810/image #用R来下载pathway的图片 library(downloader) download("http://rest.kegg.jp/get/hsa04810/image", "hsa04810.png", mode = "wb")
CONV
这个主要用于将外部数据库对kegg数据进行ID转化用的,如果用过Y叔的clusterProfiler包做kegg富集的话,有个
bitr_kegg
函数。如果看过其代码,会发现这个函数就是用调用了KEGG API的conv来进行id转化的。支持的外部数据库id只有三种:
ncbi-geneid
,ncbi-proteinid
,uniprot
来个例子比如人类的
ncbi-geneid
与kegg id
:http://rest.kegg.jp/conv/hsa/ncbi-geneid
会发现
ncbi-geneid
和kegg id
其实是一样的,不仅人类如此,KEGG数据库里大部分真核生物都是这样的,当然也有一小部分物种不满足这个规律。再来人类的
uniprot id
与kegg id
的转化http://rest.kegg.jp/conv/hsa/uniprot
LINK
这个我认为是这些operation中最有用的一个了。因为用这个
link
可以将KEGG各个数据库连接在一起,比如列出gene和pathways的联系(人类),然后用R读取,接着就可以做熟悉的KEGG注释。。。。http://rest.kegg.jp/link/pathway/hsa #用R读取gene与pathway对应关系 gene2pathway <- readLines("http://rest.kegg.jp/link/pathway/hsa")
还可以指定特定gene,看看有在那些通路上:
http://rest.kegg.jp/link/pathway/hsa:10458
还可以列出特定通路上有哪些gene(人类):
http://rest.kegg.jp/link/hsa/hsa00010
如果你知道gene对应的K号,然后想通过K号查找对应的pathway,那么可以:
http://rest.kegg.jp/link/ko/pathway
但是KEGG API设定了如果想知道gene与ko两个数据库的联系时,不能直接像上述这种将所有联系都列出来,只能与有限个数的进行关联,比如通过gene数据库,关联ko数据库里的
K00030
,那么会列出所有与K00030
相关的各个物种的gene id
。http://rest.kegg.jp/link/genes/K00030
DDI
这个一般是用来查询drug数据库里药物的信息以及药物与药物之间的作用
Summary
KEGG API其实可以认为是对KEGG各大数据库的查询与关联的作用,如果理解的话,完全可以放弃kegg的bioconductor了,反正KEGG的相关R包里的数据都比较老了,理论上都好久没更新了,用KEGG API配合R也可以完成大部分KEGG注释的工作了。如果想批量用到KEGG某个数据库,而没有比较好的工具的话,可以考虑KEGG API,至少这个东西现在还是免费的。。。
但是想用来商业化使用的话,是需要授权的。。。现在只支持学术使用。。。
本文出自于http://www.bioinfo-scrounger.com转载请注明出处