3

I would like to retrieve the InChI representation for a given KEGG compound but I fail to find a direct solution for this (preferably doing it via bioservices).

One could do it via ChEBI like this:

from bioservices import *

kegg_con = KEGG()

kegg_entry = kegg_con.parse(kegg_con.get('C00047'))

chebi_con = ChEBI()

chebi_entry = chebi_con.getCompleteEntity('CHEBI:' + kegg_entry['DBLINKS']['ChEBI'])

print chebi_entry.smiles
print chebi_entry.inchi
print chebi_entry.inchiKey

which will print

NCCCC[C@H](N)C(O)=O
InChI=1S/C6H14N2O2/c7-4-2-1-3-5(8)6(9)10/h5H,1-4,7-8H2,(H,9,10)/t5-/m0/s1
KDXKERNSBIXSRK-YFKPBYRVSA-N

Is there a direct way which does not require to go via ChEBI?

Cleb
  • 743
  • 7
  • 18
  • I had a look at the KEGG rest API but couldn't find anything; I think you might need to access the data in the KEGG FTP ($$$) – mgalardini Sep 01 '17 at 13:37
  • 1
    @mgalardini: I checked that, but seems it is not available at all, or I overlooked it. The way above is still feasible, just requires one additional step. – Cleb Sep 01 '17 at 13:39
  • 2
    It's not too bad, especially considering that you have a library to do it for you :) – mgalardini Sep 01 '17 at 15:43

1 Answers1

2

I'm not aware of a functionality in the KEGG service that would allow you to do that directly. I believe your solution (using e.g. ChEBI) is the correct one.

You may have other useful service such as unichem, chemspider (you would need a login though for that one) could help as well.

Disclaimer: I'm the bioservices main author

llrs
  • 4,693
  • 1
  • 18
  • 42
user1678
  • 36
  • 2