- Le blog participatif de bioinformatique francophone depuis 2012 -

Jouer avec l'API de KEGG

Logo de la Kyo­to Ency­clo­pe­dia of Genes and Genomes (KEGG), pro­prié­té intel­lec­tuelle de Kane­hi­sa Labo­ra­to­ries.

Il n'est pas rare que nous ayons un jour besoin de récu­pé­rer des infor­ma­tions de la base de don­nées KEGG (Kyo­to Ency­clo­pe­dia of Genes and Genomes). Cette base de don­nées four­nit un nombre consé­quent d'informations sur les génomes et les réseaux de gènes mais éga­le­ment sur les voies méta­bo­liques ou les mala­dies. Dans ces cas là, bien sou­vent, nous pas­sons direc­te­ment par le site inter­net à l'adresse http://​www​.kegg​.jp/, puis nous effec­tuons une recherche via le moteur pré­vu à cet effet, et enfin nous pou­vons télé­char­ger les infor­ma­tions sou­hai­tées. Mais cette façon de pro­cé­der n'est pas des plus pra­tiques si l'on sou­haite mettre un sys­tème de pipe­line dans nos labo­ra­toires, aus­si KEGG met à notre dis­po­si­tion une API repo­sant sur REST. Ça veut dire qu'il sera pos­sible, à par­tir de la construc­tion d'URL spé­ci­fiques, pré­vues à cet effet, d'interroger et de récu­pé­rer des infor­ma­tions sur dif­fé­rentes don­nées d'intérêts, sans pas­ser par les for­mu­laires exis­tants sur le site de KEGG. Chaque type de requête est défi­nie comme étant une opé­ra­tion. Voyons com­ment on peut s'en sor­tir pour nos pro­jets !

Atten­tion : l'accès au site inter­net et à ses don­nées est entiè­re­ment gra­tuit mais l'accès au ser­veur FTP est payant, pour per­mettre de finan­cer les ser­veurs.

Principe de fonctionnement

Dans l'API REST de KEGG, il existe 7 opé­ra­tions inter­fa­cées sur les 15 tables (plus une en déve­lop­pe­ment au moment où j'écris ces lignes) et donc requé­rables depuis l'extérieur grâce à une suite d'arguments.

Pour chaque opé­ra­tion il va être pos­sible de récu­pé­rer dif­fé­rents types d'informations sur les banques de don­nées :

  1. info : affiche les infor­ma­tions sur la ver­sion de la base de don­nées et éga­le­ment les bases de don­nées aux­quelles celle-ci est en inter­ac­tion le cas échéant. Exemple : http://​rest​.kegg​.jp/​i​n​f​o​/​p​a​t​h​way
  2. list : four­nit la liste des iden­ti­fiants de la base de don­nées ain­si que la défi­ni­tion asso­ciée. Exemple : http://​rest​.kegg​.jp/​l​i​s​t​/​g​e​n​ome
  3. find : trouve les entrées qui cor­res­pondent au mot clé recher­ché ou à d'autres types de don­nées. Exemple : http://​rest​.kegg​.jp/​f​i​n​d​/​d​i​s​e​a​s​e​/​m​e​l​a​n​oma
  4. get : récu­père les infor­ma­tions dans la base de don­nées à par­tir de l'identifiant four­nit. Exemple : http://​rest​.kegg​.jp/​g​e​t​/​d​s​:​H​0​0​038
  5. conv : conver­tit les iden­ti­fiants KEGG en leurs iden­ti­fiants pro­ve­nant d'autres banques de don­nées, comme NCBI Gene. Exemple : http://​rest​.kegg​.jp/​c​o​n​v​/​h​s​a​/​n​c​b​i​-​g​e​n​eid (vous pou­vez aus­si les inver­ser !)
  6. link : récu­père les entrées liées entre elles en uti­li­sant les réfé­rences croi­sées des banques de don­nées. Exemple : http://​rest​.kegg​.jp/​l​i​n​k​/​h​s​a​/​d​s​:​H​0​0​038
  7. ddi : récu­pè­rer la liste des contre-indi­ca­tions et pré­cau­tions à prendre dans le cadre d'interaction médi­ca­men­teuse. Exemple : http://​rest​.kegg​.jp/​d​d​i​/​D​0​0​124

Pour en savoir plus et aller plus loin, n'hésitez pas à aller faire un tour sur la docu­men­ta­tion offi­cielle. Vous y trou­ve­rez éga­le­ment plu­sieurs exemples d'utilisation.

Comme vous venez de le voir dans les exemples ci-des­sus, il est pos­sible de récu­pé­rer beau­coup d'informations en uti­li­sant uni­que­ment son navi­ga­teur inter­net pré­fé­ré, c'est sou­vent un bon moyen pour trou­ver rapi­de­ment les don­nées utiles. Cepen­dant, comme vous pou­vez le consta­ter vous-même, il va très rapi­de­ment exis­ter une limite à ne pas­ser que par le navi­ga­teur.

Si vous sou­hai­tez affi­ner au fur et à mesure votre recherche ou même l'approfondir en allant plus loin dans les don­nées à récu­pé­rer, vous ris­quez de pas­ser des heures à faire de nom­breux copier-col­ler et retours arrière, sans comp­ter le fait que vous vou­drez cer­tai­ne­ment pou­voir récu­pé­rer les résul­tats sur votre ordi­na­teur. Pour le coup, vous aurez donc le choix :

  • soit de gar­der votre navi­ga­teur ouvert avec un édi­teur de texte dans lequel vous reco­pie­rez les infor­ma­tions qui vous inté­ressent
  • soit de faire un script pour effec­tuer une recherche plus effi­cace une fois que vous aurez sché­ma­ti­sé votre stra­té­gie d'acquisition de don­nées !

Comme nous sommes sur un blog de bio­in­for­ma­ti­ciens, vous vous dou­tez bien que je ne peux pas m'empêcher de vous mon­trer un ou deux exemples de scripts ! Prêts ? C'est par­ti !

Récupérer la liste des gènes impliqués dans le mélanome chez l'Homme

Pour cet exemple, j'utiliserai Python (ver­sion 3++) avec la biblio­thèque requests (dans les biblio­thèques de base, appuyée par la docu­men­ta­tion offi­cielle), pré­vue pour les requêtes REST, afin de récu­pé­rer les don­nées et les mani­pu­ler à ma guise. Notez que si vous ne pré­ci­sez pas quel est le for­mat de sor­tie que vous sou­hai­tez récu­pé­rer, celui-ci sera par défaut en texte plat !

Étape 1 : récupérer l'identifiant du mélanome dans la base de données Disease

Pour récu­pé­rer l'identifiant du méla­nome, dans la base de don­nées Disease, j'utilise l'opération find (sou­ve­nez-vous, l'API REST de KEGG repose sur 7 opé­ra­tions) :

Le résul­tat de sor­tie final est au for­mat texte tabu­lé. Nous allons donc pou­voir récu­pé­rer faci­le­ment la liste des clés (ici une seule clé), en uti­li­sant seule­ment les built in de Python.

Étape 2 : récupérer les identifiants des gènes humains impliqués dans le mélanome

À par­tir de la liste des iden­ti­fiants récu­pé­rés pré­cé­dem­ment, nous allons pou­voir récu­pé­rer la liste des iden­ti­fiants des gènes humains impli­qués dans le méla­nome, grâce à l'opération link.

Étape 3 : récupérer les informations sur les gènes humains récupérés

Main­te­nant que nous avons récu­pé­ré les iden­ti­fiants des gènes, nous allons pou­voir retrou­ver la liste de nos gènes à pro­pre­ment par­ler ! Pour cela nous uti­li­se­rons cette fois-ci la méthode list.

Nous avons ici un résul­tat sur 2 colonnes :

  1. l'identifiant du gène KEGG
  2. les dif­fé­rents sym­boles connus du gène avec son nom com­plet juste après le point-vir­gule.

Récupérer la liste des pathways à partir des gènes

L'une des choses qui est sans doute celle qui nous inté­resse le plus est la pos­si­bi­li­té de récu­pé­rer la liste des path­ways dans les­quels nos gènes pré­cé­dents sont impli­qués. Eh bien c'est tout à fait pos­sible ! Voi­ci com­ment nous pou­vons pro­cé­der.

Dans un pre­mier temps, nous uti­li­sons l'opération link :

Ici nous n'avons récu­pé­ré que la liste des iden­ti­fiants. Pour pou­voir récu­pé­rer les réseaux en eux-mêmes, nous allons uti­li­ser l'opération get sur chaque iden­ti­fiant, tout en pré­ci­sant que nous vou­lons obte­nir les images. Pour pou­voir enre­gis­trer les images j'ai uti­li­sé le module shu­til, qui fait éga­le­ment par­tie des biblio­thèques de base :

Une fois ceci fait, ren­dez-vous dans le réper­toire où vos images ont été sau­ve­gar­dées, il ne vous reste plus qu'à ana­ly­ser et inter­pré­ter les résul­tats !

Voi­ci l'un des réseaux que j'ai récu­pé­ré :

Réseau de la leu­cé­mie myé­loïde chro­nique. Image four­nie par KEGG

Conclusion

KEGG nous per­met, grâce à son API REST, d'effectuer des requêtes simples aus­si bien manuel­le­ment que pro­gram­ma­ti­que­ment. Dans ces petits exemples courts et somme toute clas­sique, vous avez pu entre­voir les pos­si­bi­li­tés d'imbrications de recherches que nous pour­rions faire pour faci­li­ter notre quo­ti­dien.

Dans un pré­cé­dent article, je vous avais pré­sen­té la biblio­thèque Python Bio­Ser­vices qui per­met éga­le­ment de faire ce genre de requête auprès de KEGG. Le but de ce billet était de vous pré­sen­ter le fonc­tion­ne­ment de l'API sans pas­ser par un module plus ou moins lourd. Rien ne vous empêche pour autant de com­bi­ner les deux afin de faci­li­ter vos pro­grammes !


Un grand mer­ci à mes relec­teurs d'amours pour leurs  remarques et sug­ges­tions : Mathu­rin, Yoann M.Guillaume Devailly et Kum­qua­tum.




Commentaires

Une réponse à “Jouer avec l'API de KEGG”

  1. Mer­ci Nol­wenn pour ce chouette article. Au pas­sage, pour celles et ceux qui uti­lisent R, on peut noter le package KEGGREST dans Bio­con­duc­tor, qui se base là-des­sus et pro­pose des inter­faces sym­pas. http://​bio​con​duc​tor​.org/​p​a​c​k​a​g​e​s​/​r​e​l​e​a​s​e​/​b​i​o​c​/​h​t​m​l​/​K​E​G​G​R​E​S​T​.​h​tml

Laisser un commentaire