问题描述
我想使用 InChI
作为输入从多个数据库中检索 ID,例如
I would like to retrieve IDs from several databases using InChI
as an input, e.g.
InChI=1S/C6H14N2O2/c7-4-2-1-3-5(8)6(9)10/h5H,1-4,7-8H2,(H,9,10)/t5-/m0/s1
可以使用 bioservices
中的 unichem然而,为此,这些函数都需要 InChIKey
作为输入,例如
One can use unichem from bioservices
for this, however, these functions all require the InChIKey
as input, e.g.
KDXKERNSBIXSRK-YFKPBYRVSA-N
是否可以使用 bioservices
将两者相互转换,如果不能,是否可以以某种方式使用 unichem
中的函数与 InChI
而不是InChIKey
?
Is it possible to interconvert the two using bioservices
and if not is it possible to somehow use the functions in unichem
with InChI
rather than the InChIKey
?
我试过了:
from bioservices import *
u = UniChem()
u.get_src_compound_ids_from_inchikey('KDXKERNSBIXSRK-YFKPBYRVSA-N')
不过效果很好,
u.get_src_compound_ids_from_inchikey('InChI=1S/C6H14N2O2/c7-4-2-1-3-5(8)6(9)10/h5H,1-4,7-8H2,(H,9,10)/t5-/m0/s1')
不起作用并返回 400
.
推荐答案
不确定是否可以直接在 bioservices
中使用,但可以使用 chemspider:
Not sure if directly possible in bioservices
but one can do the following workaround using chemspider:
import requests
host = "http://www.chemspider.com"
getstring = "/InChI.asmx/InChIToInChIKey?inchi="
inchi = 'InChI=1S/C6H14N2O2/c7-4-2-1-3-5(8)6(9)10/h5H,1-4,7-8H2,(H,9,10)/t5-/m0/s1'
r = requests.get('{}{}{}'.format(host, getstring, inchi))
if r.ok:
res = str(r.text.replace('<?xml version="1.0" encoding="utf-8"?>\r\n<string xmlns="http://www.chemspider.com/">', '').replace('</string>', '').strip())
else:
print "provide a valid inchi!"
这将提供所需的 InChIKey
This will give the desired InChIKey
'KDXKERNSBIXSRK-YFKPBYRVSA-N'
可以在unichem
中使用.
这篇关于如何相互转换 InChI 和 InChIKey?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!