0

Let's say I want to map a KEGG ID to a ChEBI ID using bioservices, I can do:

from bioservices import *

kegg_con = KEGG()
kegg_entry = kegg_con.parse(kegg_con.get('C00033'))
print(kegg_entry['DBLINKS']['ChEBI'].split())

This will return

[u'15366', u'30089']

meaning that there are two ChEBI IDs associated with the KEGG compound (KEGG entry C00033).

An alternative - if one has to do a lot of mappings - is to use the built-in converter like this:

map_kegg_chebi = kegg_con.conv("chebi", "compound")
print(map_kegg_chebi['cpd:C00033'])

This will print

u'chebi:15366'

So for the same compound, only one ID is returned although there are two assicated with this compound. Is there a way to retrieve both of them?

4

1 回答 1

1

简而言之,我没有答案,但这里有一些信息可能会对您有所帮助。

C00033条目显示了 CHEBI 数据库中的两个相关实体:15366 和 30089。现在,如果我们查看 CHEBI 网站,我们可以看到这两个条目对应于:

乙酸盐是由乙酸中的 H+ 损失产生的离子。

为什么KEGG决定提供这两个条目:我不知道。

使用kegg_con.conv,我们可以看到 C00033 仅映射到 chebi 中的一个结果,这对我来说似乎是明智的(但我同意令人困惑),因为 30089 只是乙酸的离子形式(15366)。

为了完整起见,请注意使用 ChEBI 服务(来自 bioservices),我们可以将两个 ChEBI 条目映射回 KEGG,我们看到:

from bioservices import ChEBI
chebi = ChEBI()
chebi.conv("CHEBI:30089", "KEGG COMPOUND accession")
chebi.conv("CHEBI:15366", "KEGG COMPOUND accession")

在这两种情况下都返回 C00033 !然而,在这个例子中,我会说你不会因为忽略乙酸的离子形式而丢失太多信息。

系统地检查其他模糊映射是否也属于此类(离子形式)会很有趣

于 2017-10-23T08:43:00.917 回答