2017-09-01 4 views
0

InChIを入力として使用して、いくつかのデータベースからIDを取得したいとします。このためbioservicesからunichemを使用することができInChIと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 

一つ、しかし、これらの機能は全てInChIKey入力として必要とする、例えば

KDXKERNSBIXSRK-YFKPBYRVSA-N 

それはbioservicesを使用して2つを相互変換し、それが何らかの形でInChIはなくInChIKeyunichemで関数を使用することが可能であるない場合はすることは可能ですか?

私が試した:正常に動作します

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で直接可能ならばわからない

答えて

0

が、1つは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 unichemで使用することができ

'KDXKERNSBIXSRK-YFKPBYRVSA-N' 

を与えるだろう。

関連する問題