我尝试通过生物服务访问KEGG ,以获取有关基因列表的某些信息。问题是我事先不知道各个基因属于哪个生物体;在我的列表中可能有很多基因都属于不同的生物。我的问题是我不知道如何在不指定生物体的情况下检索有关基因的所需信息。
举个例子:
gene_list = ['YMR293C', 'b3640']
如果我现在尝试:
from bioservices import *
kegg_con = KEGG()
res = kegg_con.get('b3640', parse=True)['NAME']
我最终得到了TypeError
一个
kegg_con.get('b3640', parse=True)
不返回字典,而只返回一个数字(因为我没有指定它所属的有机体)。但是,当我指定有机体时(这里它eco
代表大肠杆菌),这是有效的:
kegg_con.get('eco:b3640', parse=True)['NAME']
返回
[u'dut']
这是正确的,可以在这里看到:
然后我尝试使用find获取有关相关生物的信息。这适用于YMR293C
但失败b3640
:
kegg_con.find('genes', 'YMR293C')
返回
u'sce:YMR293C\tHER2, GEP6, QRS1, RRG6; 谷氨酰-tRNA(Gln) 氨基转移酶亚基 HER2 (EC:6.3.5.7);K02433 天冬氨酰-tRNA(Asn)/谷氨酰-tRNA(Gln) 氨基转移酶亚基 A [EC:6.3.5.6 6.3.5.7]\ncal:CaO19.11438\tlikely amidase类似于 S. cerevisiae YMR293C 线粒体推定的谷氨酰-tRNA氨基转移酶\ncal :CaO19.3956\tlikely amidase类似于S. cerevisiae YMR293C线粒体推定的谷氨酰-tRNA氨基转移酶;K02433 天冬氨酰-tRNA(Asn)/谷氨酰-tRNA(Gln) 氨基转移酶亚基 A [EC:6.3.5.6 6.3.5.7]\n'
我可以从中轻松提取所需的信息(在这种情况下:)sce:YMR293C
,但是,当我运行
kegg_con.find('genes', 'b3640')
我明白了
u'cnb:CNBB3640\假设蛋白;K06316 寡糖易位蛋白 RFT1\ncgi:CGB_B3640C\假设蛋白\neco:b3640\tdut;脱氧尿苷三磷酸酶(EC:3.6.1.23);K01520 dUTP 焦磷酸酶 [EC:3.6.1.23]\nsea:SeAg_B3640\tbfd; 细菌铁蛋白相关的铁氧还蛋白;K02192 细菌铁蛋白相关铁氧还蛋白\nyps:YPTB3640\t 保守假设蛋白\nreu:Reut_B3640\t 保守假设蛋白\nbbr:BB3640\t 噬菌体相关输出蛋白\nmag:amb3640\假设蛋白\nbcg:BCG9842_B3640\tflagellar 钩相关蛋白;K02407 鞭毛钩相关蛋白 2\ncbi:CLJ_B3640\t 保守假设蛋白;K09963 未表征蛋白质\nmmo:MMOB3640\假设蛋白质\nmbo:Mb3640c\tftsH; 膜结合蛋白酶 FTSH (细胞分裂蛋白) (EC:3.4.24.-);
它不提供有关大肠杆菌的信息。
因此,我的问题是:
1)有没有办法让我可以仅根据基因 ID 访问有关基因的信息,而无需指定它所属的生物体?
2) 检索基因所属生物体信息的最佳方法是什么?为什么find
我搜索大肠杆菌基因时会失败?