Как перевести ИнЧИ и ИнЧИКей?

Я хотел бы получить идентификаторы из нескольких баз данных, используя 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,

Другие вопросы по тегам