首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在不指定生物服务的情况下访问KEGG条目?

如何在不指定生物服务的情况下访问KEGG条目?
EN

Stack Overflow用户
提问于 2016-05-27 12:53:51
回答 1查看 325关注 0票数 2

我试图通过KEGG通过生物服务获取有关基因列表的特定信息。问题是,我事先不知道单个基因属于哪一个有机体;在我的清单中,很多基因都属于不同的有机体。我的问题是,我不知道如何在不指定有机体的情况下检索所需的基因信息。

举一个例子:

代码语言:javascript
运行
复制
gene_list = ['YMR293C', 'b3640']

第一基因属于酵母,第二个属于E.coli。

如果我现在试着:

代码语言:javascript
运行
复制
from bioservices import *
kegg_con = KEGG()
res = kegg_con.get('b3640', parse=True)['NAME']

我最后得到了一个TypeError

代码语言:javascript
运行
复制
kegg_con.get('b3640', parse=True)

不返回字典,而只返回一个数字(因为我没有指定它所属的有机体)。然而,当我指定有机体(这里是eco代表E.coli)时,这是可行的:

代码语言:javascript
运行
复制
kegg_con.get('eco:b3640', parse=True)['NAME']

返回

代码语言:javascript
运行
复制
[u'dut']

这是正确的,因为我们可以看到这里

然后,我试图通过使用发现获取有关相关有机体的信息。这对于YMR293C很好,但对于b3640却失败。

代码语言:javascript
运行
复制
kegg_con.find('genes', 'YMR293C')

返回

U‘S : YMR293C \tHER2 2,GEP6,QRS1,RRG6;谷氨酰-tRNA(Gln)酰胺基转移酶亚基HER2 (EC:6.3.5.7);天冬氨酰-tRNA(Asn)/谷氨酰-tRNA(Gln)氨基转移酶A亚基A EC:6.3.5.6 6.3.5.7\n ncal:ncal 19.11438\n可能与酿酒酵母YMR293C线粒体谷氨酰基-tRNA酰胺基转移酶相似:CaO19.3956类似于线粒体谷氨酰转移酶YMR293C推测的谷氨酰基-tRNA;K02433天冬氨酰-tRNA/谷氨酰-tRNA氨基转移酶亚基A EC:6.3.5.6 6.3.5.7\n‘

但是,当我运行时,我可以很容易地提取所需的信息(在本例中是:sce:YMR293C)。

代码语言:javascript
运行
复制
 kegg_con.find('genes', 'b3640')

我得到了

U‘’cnb:‘cnb 3640\胸腺肽蛋白;K06316寡糖易位蛋白RFT1\ncgi:CGB_B3640C\thypothetical蛋白\neco:b 3640\tdut;脱氧尿嘧啶三磷酸酶(EC:3.6.1.23);K01520 dUTP焦磷酸酶EC:3.6.1.23\nsea:SeAg_B3640\tbfd;细菌铁蛋白相关铁氧还蛋白;K02192细菌铁蛋白相关铁氧还蛋白:nyps 3640\保守假想protein\nreu:Reut_B3640\tconserved假想蛋白\nbbr:EC 3640\tphage相关蛋白出口蛋白\nmag:nmag 3640\胸腺嘧啶核苷钩相关蛋白;K02407鞭毛钩相关蛋白2\ncbi:CLJ_B3640\tconserved假想蛋白;K09963未表征蛋白\nmmo:nmmo 3640\胸腺蛋白\nmbo:mb3640ctftsH;膜结合蛋白酶FTSH (细胞分裂蛋白) (EC:3.4.24.-);K03798细胞分裂蛋白酶FtsH EC:3.4.24.

它不提供有关E.coli的信息。

因此,我的问题是:

( 1)是否有一种方法,使我可以只根据基因ID 来获取有关基因的信息,而不需要指定它所属的生物体?

2)获取基因所属的生物信息的最佳方法是什么?为什么find在我搜索E.coli基因时失败了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-28 16:19:22

find()方法的输出是一个不容易读取的纯字符串,但我相信您要查找的信息在输出中。在第三行,您可以看到:

代码语言:javascript
运行
复制
eco:b3640

现在,我不确定KEGG的输出格式是否总是具有相同的结构。如果是这样的话,假设兴趣线是第三条,您可以使用:

代码语言:javascript
运行
复制
res = kegg_con.find('genes', 'b3640') 
orgnanism = res.split("\n")[2].split()[0].split(":")[0]

您可以进一步检查它是一个有效的组织形式,如下所示:

代码语言:javascript
运行
复制
assert organism in kegg_con.organismIds

为了安全起见,您可以搜索字符串中的标识符(而不是第三行):

代码语言:javascript
运行
复制
[x for x in res.split() if "b3640" in x]

希望能帮上忙

TC,生物服务的主要作者

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37484095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档