【aRsenal-3】KEGG API

由于工作需要,今天花了一上午的时间研究了一下KEGG的API,虽然走了不少弯路,但最终还是圆满完成任务。下面我将复盘整个过程,和大家分享在使用KEGG API中的经历和体会。

事情的起因是这样的,我手上有一个KEGG的ID列表,我的任务是找到这些ID所对应的gene以及它们所在的pathway。


KO_list.png

我已经很多年没有用过KEGG了,刚拿到这些ID的时候也是一头雾水。经过一番搜索(也要感谢小伙伴们的指点),我在KEGG的网站上找到了这些ID以及我想要的gene和pathway信息。


keg_web.png

我一开始想抓这个网页,解析HTML文件,但是发现这些信息是javascript程序动态产生的,此路不通。在这个网页的右上方有一个【Download htext】的链接,下载后得到的是一个后缀名为 .keg 的文本文件,看上去和网页上的内容一样。


keg.png

如果这是个xml或者是json格式的文件,故事就到此为止了,因为有很多现成的工具可以拿来解析它。但是这个文件的格式比较特殊,得自己动手写程序来提取,比较麻烦。有没有更简单一点的方法呢?

身为一名Rapper,不找找Bioconductor的包怎么行呢?果然有一个叫KEGGREST的包可以方便的调用KEGG的API,这样问题就变得简单多了。
https://www.bioconductor.org/packages/release/bioc/vignettes/KEGGREST/inst/doc/KEGGREST-vignette.html

KEGGREST.png

但是,我高兴的太早了!在使用KEGGREST的过程中,不断有 Timeout was reached 的错误产生,真的让人抓狂!


code1.png

于是我再回过头来研究KEGGREST的原理。它实际上是先通过KEGG API下载一个文本文件,然后再去解析。而我现在就卡在了调用API这一步。

弄清楚原理之后,我调整了自己的策略:首先用外部工具来调用API,将文本文件保存下来,然后用KEGGREST内部的parser来解析这些文件。

具体做法如下:

  1. 在不借助KEGGREST提供的keggGet函数的情况下,我得先搞清楚KEGG API 的URL格式是怎样的。
    http://www.kegg.jp/kegg/docs/keggapi.html

    KEGG_API.png

    我需要的operation是get,dbentries就是ID号,所以API的URL就可以写成:http://rest.kegg.jp/get/K00001

  2. 然后用curl来调用API,由于我有3000多个ID,所以需要生成一个脚本来批量下载:


    bash.png

    bash脚本的内容:


    curl_list.png

    运行该脚本,下载过程很顺利。我发现每次下载前总是要停大概15秒左右,也许这就是前面的方法总是Timeout的原因吧。具体原因就不深究了,只要能达到我的目的就行。
    curl.png
  3. 接下来要弄清楚KEGGREST包中的哪个函数负责文本解析。通过查看keggGet函数的代码,我觉得应该是.flatFileParser函数


    code2.png
  4. 目标明确后,我们就来下载KEGGREST的源代码(Package Source)
    https://www.bioconductor.org/packages/release/bioc/html/KEGGREST.html

    package_source.png

    将KEGGREST_1.14.0.tar.gz解压后,我在它的R目录下发现了一个parsers.R的文件,我们要找的函数就在里面。

  5. 最后,我们用下面的代码来解析下载好的文本文件


    code3.png

    需要注意的是,这里不要再写library(KEGGREST),直接source它的2个文件就可以了。.flatFileParser返回的是一个长度为1的list,list里面又嵌套了一个list。

  6. 最终的结果如下,任务圆满完成!


    table.png

我的方法不一定是最好的,欢迎广大Rapper提供更好的方法和大家分享。

qrcode.jpg
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,468评论 5 473
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,620评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,427评论 0 334
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,160评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,197评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,334评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,775评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,444评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,628评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,459评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,508评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,210评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,767评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,850评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,076评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,627评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,196评论 2 341

推荐阅读更多精彩内容