KEGG数据库不会下载?了解下API!

2022-05-05 11:41:54 浏览数 (2)

KEGG数据库(http://www.kegg.jp/)也即京都基因和基因组百科全书(Kyoto Encyclopedia of Genes and Genomes),是系统分析基因功能、基因组信息的数据库,它整合了基因组学、生物化学以及系统功能组学的信息,有助于研究者把基因及表达信息作为一个整体网络进行研究。KEGG提供的整合代谢途径查询十分出色,包括碳水化合物、核苷酸、氨基酸等代谢及有机物的生物降解,不仅提供了所有可能的代谢途径,还对催化各步反应的酶进行了全面的注解,包含其氨基酸序列、到PDB数据库的链接等。

相信生物领域的学习者和研究者都或多或少对KEGG数据库有一定的了解,尤其是对研究者,KEGG是十分有力的分析工具。然而需要使用KEGG做大规模比较功能组学研究的人,可能对于KEGG数据库是又爱又恨。不同于NR、NOG、COG等数据库,KEGG是收费的,似乎不提供数据库的开源下载,这使得大批研究者只能借助一些在线工具。

目前可以肯定的是,KEGG数据库并不提供免费、批量的蛋白序列下载,其官方提供在线分析工具BlastKOALA(https://www.kegg.jp/blastkoala/)等可用于KEGG数据库的注释分析。此外还有其他一些在线分析工具例如很常用的KAAS(https://www.genome.jp/tools/kaas/)等。这些在线工具看起来可堪实用,然而你永远也无法知道这些闭源的工具为了节约计算量在背后做了多少手脚。例如KAAS只可以选择不超过40个物种的基因组进行比对,即使你知道自己基因组的物种分类,即使每次都尽量选择近缘物种,大量水平转移的基因可能还是无法有效注释,更不用说你要注释的是一个新的类群。

不过,KEGG也并非如此“闭关锁国”,似乎给我们留了一条小小的“缝隙”从而可以深入“虎穴”,这个小小的“缝隙”就是KEGG API。KEGG API是和KEGG内核数据库进行交互的程序界面,允许用户基于该界面检索KEGG数据库,其主页为(https://www.kegg.jp/kegg/rest/keggapi.html),该界面的运行基于用户电脑的浏览器,在浏览器地址栏书写相应的地址指令即可检索KEGG数据库条目,该地址指令的编写规则如下所示:

http://rest.kegg.jp/<operation>/<argument >[/<argument2>...]

其中operation可选info、list、find、get、conv、link、ddi,后面的参数可以是数据库名称以及选项,在其主页有详细的介绍。下面基于KEGG API我们一步步获取最新的KEGG数据库。

首先,我们可以使用list获取所有的KEGG pathway map信息:

下面我们直接使用wegt指令在服务器操作:

wget -c http://rest.kegg.jp/list/pathway

这样我们会得到一个包含所有KEGG pathway map的文本文档,通过这一步操作,希望读者明白KEGG API的检索与数据下载方法。list操作可以列出所有的KO、pathway、genome,但是无法列出所有的genes(KEGG可能在这里故意设置了限制),但是我们可以通过其他方法link到genes,例如先list所有的KO,然后使用link操作获取每个KO对应的gene名称:

代码语言:javascript复制
wget -c http://rest.kegg.jp/list/ko
cut -f 1 ko | sed 's/ko://' | while read id; do wget -c http://rest.kegg.jp/link/genes/$id; done
cat K* | sed 's/ko://' > ko_genes.txt

结果如下所示:

这样我们就有了所有的KO以及其包含的gene id,这个信息对于后续的分析十分重要。通过这一步操作,希望读者明白link操作的用法。但这里有一个问题,并不是所有的gene都有对应的KO。事实上目前代表性基因组里面只有50%左右的gene功能比较明确并有对应的KO,我们不能只下载有KO的gene,那样比对有很大的偏差。如何下载所有的gene?这时候需要以基因组或者物种为单位,我们首先list所有的KEGG genome,获取所有的物种信息,然后list每个物种的gene id,如下所示:

代码语言:javascript复制
wget -c http://rest.kegg.jp/list/genome
cut -f 2 genome | cut -f 1 -d "," | while read id; do wget -c http://rest.kegg.jp/list/$id; done
cat * | cut -f 1 > all_genes.list

结果如下所示:

在下载的genome列表中还给出了每个物种的taxid,可以根据该taxid筛选特定类群的物种,这样下载更加快速。例如全部的KEGG gene有2800万个,而原核生物的大概只有1300万个,接下来我们根据gene id下载序列。获取蛋白或基因序列可以通过get操作,如下所示:

格式为genebank,里面包含基因和蛋白序列,我们可以添加选项/aaseq或者/ntseq就可以只提取序列,如下所示:

那么接下来只需写个小小的循环,遍历所有的gene id即可:

代码语言:javascript复制
cat all_genes.list | while read id; do wget -c http://rest.kegg.jp/get/$id/aaseq; done
cat * > kegg_genes.fasta

现在,我们有了所有KEGG蛋白序列及其与KO的对应信息,可以在本地使用BLAST或者DIAMOND进行注释分析。

0 人点赞