搜索
查看: 2546|回复: 0

初识KEGG API

[复制链接]

29

主题

131

帖子

1208

积分

金牌会员

Rank: 6Rank: 6

积分
1208
发表于 2017-8-24 23:21:05 | 显示全部楼层 |阅读模式
本帖最后由 anlan 于 2017-8-24 23:34 编辑

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](http://www.kegg.jp/kegg/rest/keggapi.html)

1. INFO主要描述各类数据库的信息以及统计结果,如:
http://rest.kegg.jp/info/pathway


2. LIST
主要用于列出数据库里面的内容,比如:

列出人类的所有的pathway通路
http://rest.kegg.jp/list/pathway/hsa


然后用R统计下人类的pathway通路总共有多少条了,结果可以看出有320条:
[AppleScript] 纯文本查看 复制代码
pathway <- readLines("http://rest.kegg.jp/list/pathway/hsa")
                length(pathway)
                [1] 320


也可以列出KEGG注释到的人类的gene有哪些,等
http://rest.kegg.jp/list/hsa


3. FIND
这个主要用于查找功能,在各个数据库中查找,以匹配你所要的信息,比如:


查找人类的三羧酸循环的通路的ID是什么
http://rest.kegg.jp/find/pathway/Citrate cycle
结果:path:map00020    Citrate cycle (TCA cycle)


4. 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下载下来
[AppleScript] 纯文本查看 复制代码
http://rest.kegg.jp/get/hsa04810/image
		#用R来下载pathway的图片
		library(downloader)
		download("http://rest.kegg.jp/get/hsa04810/image", "hsa04810.png", mode = "wb")



5. 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


6. LINK
这个我认为是这些operation中最有用的一个了。因为用这个`link`可以将KEGG各个数据库连接在一起,比如列出gene和pathways的联系(人类),然后用R读取,接着就可以做熟悉的KEGG注释。。。。
[AppleScript] 纯文本查看 复制代码
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


7. DDI
这个一般是用来查询drug数据库里药物的信息以及药物与药物之间的作用


总结:
KEGG API其实可以认为是对KEGG各大数据库的查询与关联的作用,如果理解的话,完全可以放弃kegg的bioconductor了,反正KEGG的相关R包里的数据都比较老了,理论上都好久没更新了,用KEGG API配合R也可以完成大部分KEGG注释的工作了。如果想批量用到KEGG某个数据库,而没有比较好的工具的话,可以考虑KEGG API,至少这个东西现在还是免费的。。。

但是想用来商业化使用的话,是需要授权的。。。现在只支持学术使用。。。
      














回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-9-21 05:13 , Processed in 0.034616 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.