Как перевести ИнЧИ и ИнЧИКей?
Я хотел бы получить идентификаторы из нескольких баз данных, используя 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
Можно использовать Unichem из bioservices
для этого, однако, все эти функции требуют InChIKey
в качестве ввода, например
KDXKERNSBIXSRK-YFKPBYRVSA-N
Можно ли взаимно преобразовать два, используя bioservices
и если нет, то можно ли как-то использовать функции в unichem
с InChI
а не 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
,
1 ответ
Не уверен, если это возможно в bioservices
но можно использовать следующий обходной путь, используя 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!"
Это даст желаемый ИнЧИКей
'KDXKERNSBIXSRK-YFKPBYRVSA-N'
которые могут быть использованы в unichem
,