- Le blog participatif de bioinformatique francophone depuis 2012 -

Récupérer la fiche d'un gène avec les Eutils du NCBI

En bio­in­for­ma­tique il n'est pas rare que l'on ait besoin d’accéder à des infor­ma­tions dis­po­nibles sur des bases de don­nées inter­na­tio­nales, nous ver­rons ici le cas de la banque Gene du NCBI. Avant de s'intéresser à la récu­pé­ra­tion d'une fiche d'un gène en pas­sant par les Eutils, un peu de théo­rie et d'explications sur une fiche type s'impose.

Pourquoi choisir d'utiliser les Eutils ?

Bien qu'il soit pos­sible de jouer avec la construc­tion d'une URL afin de récu­pé­rer la fiche d'un gène au for­mat texte ou XML direc­te­ment sur le ser­veur offi­ciel, le NCBI pré­co­nise plu­tôt l'utilisation du ser­veur Eutils, qui est un outil dédié à l'exécution mas­sive externe de ce genre de requête. Cet outil paraît d'autant plus inté­res­sant qu'il vous per­met d'effectuer de nom­breuses requêtes sans avoir à trop vous inquié­ter de savoir si l'IP de votre labo­ra­toire risque d'être blo­quée ou non. La seule limi­ta­tion étant de ne pas effec­tuer plus de trois requêtes par seconde en pas­sant par les Eutils, il est néces­saire de pré­voir une tem­po­ri­sa­tion des requêtes si besoin.

Récupérer une fiche par les Eutils : les étapes

Pour récu­pé­rer la fiche du gène que vous sou­hai­tez consul­ter, vous devez pas­ser par deux étapes dis­tinctes. Dans notre exemple, la pre­mière étape consiste à effec­tuer une recherche sur la banque Gene afin de trou­ver le gène dont l'identifiant est le numé­ro 5371. Pour cela nous devons construire l'URL sui­vante :

http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=5371[uid]&usehistory=y

Voi­ci ce que les Eutils vont com­prendre :

  • http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi indique que le moteur de recherche des Eutils est sol­li­ci­té pour récu­pé­rer des infor­ma­tions dans la banque de don­nées ;
  • db=gene pré­cise que la base de don­nées "db" à consul­ter est Gene "gene" ;
  • term=5371[uid] pré­cise que le terme "term" recher­ché est un numé­ro d'identifiant unique "[uid]" auquel on a spé­ci­fié le numé­ro en ques­tion ;
  • usehistory=y est à uti­li­ser pour spé­ci­fier que vous sou­hai­tez uti­li­ser l'historique mais pas seule­ment (voir plus loin).

Pour la pro­chaine étape vous aurez besoin de récu­pé­rer, dans le fichier XML qui vient de s'afficher, les infor­ma­tions sui­vantes :

  • le WebEnv, qui n'apparait pas si vous avez choi­si de ne pas uti­li­ser l'historique ;
  • le numé­ro Que­ry­Key, qui lui est exi­gé pour la seconde étape

La seconde étape va vous per­mettre de récu­pé­rer la fiche de votre gène d'intérêt avec cette nou­velle requête :

http://​eutils​.ncbi​.nlm​.nih​.gov/​e​n​t​r​e​z​/​e​u​t​i​l​s​/​e​f​e​t​c​h​.​f​c​g​i​?​d​b​=​g​e​n​e​&​W​e​b​E​n​v​=​N​C​I​D​_​1​_​2​3​9​2​6​4​2​6​4​_​1​3​0​.​1​4​.​2​2​.​1​0​1​_​9​0​0​1​_​1​3​3​0​6​3​5​0​3​0​_​7​9​3​7​2​5​6​3​&​q​u​e​r​y​_​k​e​y​=​1​&​r​e​t​t​y​p​e​=​x​m​l​&​r​e​t​m​o​d​e​=​t​ext

Et voi­ci l'explication sur ce que le moteur des Eutils effec­tue­ra :

  • http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi indique que les Eutils doivent affi­cher des infor­ma­tions à l'utilisateur ;
  • db=gene pré­cise que la base de don­nées "db" à consul­ter est Gene "gene" ;
  • WebEnv=NCID_1_239264264_130.14.22.101_9001_1330635030_79372563 indique l'identifiant de WebEnv qui cor­res­pond à la requête de recherche pré­cé­dem­ment effec­tuée ;
  • query_key=1 indique le numé­ro Que­ry­Key "query_​key" pour la requête ;
  • rettype=xml informe que l'affichage devra être de type XML ;
  • retmode=text pré­cise que l'affichage doit être retour­né en mode texte.

Une fois votre requête envoyée au ser­veur, vous aurez sous vos yeux la fiche au for­mat XML du gène PML dont l'identifiant est 5371.

Explications sur la fiche du gène récupéré

Tout d'abord, mer­ci de tenir compte du fait qu'il est par­fai­te­ment pos­sible de trou­ver la fiche d'un gène en uti­li­sant son seul nom, cepen­dant il peut y avoir une forte redon­dance et un retour de plu­sieurs entrées pour un même nom. Dans mon exemple je me foca­lise sur un iden­ti­fiant unique afin de n'avoir qu'une seule fiche à récu­pé­rer.
La fiche d'un gène du NCBI ren­ferme de nom­breuses infor­ma­tions sur le gène, en voi­ci une liste non-exhaus­tive :

  • de nom­breuses réfé­rences croi­sées avec d'autres banques telles que Ensem­bl, HPRD, Vega, OMIM, Pub­Med
  • des infor­ma­tions sur la posi­tion du gène sur son chro­mo­some
  • les pro­téines qui inter­agissent avec le gène ain­si que les pro­duits du gène
  • la sec­tion Gene Onto­lo­gy per­met d'obtenir des ren­sei­gne­ments sur la fonc­tion, le pro­ces­sus et le com­po­sant cel­lu­laire pour le gène
  • un accès direct aux dif­fé­rents pro­fils d'expression du gène en fonc­tion du tis­su et/​ou de la mala­die…

Récupérer la même fiche à l'aide d'un script Perl

Parce qu'il est tou­jours plus simple d'automatiser ce genre de pro­ces­sus, ce script Perl peut vous être très utile :

Pour appe­ler ce script depuis un ter­mi­nal, il vous suf­fit d'utiliser la ligne de com­mande sui­vante :

Ce script étant très lar­ge­ment ins­pi­ré du guide offi­ciel, et adap­té en fonc­tion de mes besoins, celui-ci est donc libre d'accès. Vous êtes donc par­fai­te­ment libre de le récu­pé­rer, le dis­sé­quer et le modi­fier à votre conve­nance.

Sources

Pour une prise en main rapide des Eutils : http://​www​.ncbi​.nlm​.nih​.gov/​b​o​o​k​s​/​N​B​K​2​5​5​00/
Pour aller plus loin avec les Eutils : http://​www​.ncbi​.nlm​.nih​.gov/​b​o​o​k​s​/​N​B​K​2​5​5​01/



Pour continuer la lecture :


Commentaires

6 réponses à “Récupérer la fiche d'un gène avec les Eutils du NCBI”

  1. Comme vous vous limi­tez à l'uid toute la par­tie esearch est inutile. Vous pou­vez direc­te­ment taper dans efetch

    [crayon-667aaa3bb0b91374750286/]

    1. Norore

      Mer­ci pour la remarque, je l'ignorais à ce moment là mais je pense que cela me sera utile un jour ou l'autre.
      Néan­moins, le script étant géné­rique, il peut par­fai­te­ment adap­té à d'autres cas de figures, tel que la recherche d'un gène par son nom, où là il peut y avoir plus d'une fiche.

  2. Avatar de HEBRARD Maxime
    HEBRARD Maxime

    mer­ci pour ce script très ins­truc­tif.
    ‑Serait il pos­sible de récu­pé­rer de manière simi­laires les séquences nucléo­ti­dique d'un gène ?
    ‑Y'a t'il une pos­si­bi­li­té simi­laire d'interrogation de la base Ensem­bl ?

    mer­ci

    1. Norore

      Bon­jour, oui c'est pos­sible.

      Pour récu­pé­rer les séquences nucléo­ti­diques d'un gène de façon simi­laire, il vous fau­dra pas­ser par la banque Nucleo­tide du NCBI, donc a prio­ri il vous suf­fit de rem­pla­cer gene par nuc­core, tou­te­fois le com­por­te­ment de la banque est très dif­fé­rent, aus­si il vous fau­dra ajus­ter la requête envoyée par term afin de trou­ver la liste des séquences nucléo­ti­diques connues pour votre gène d'intérêt.
      Il existe éga­le­ment un autre moyen, pour cela vous pou­vez pas­ser par la récu­pé­ra­tion de la fiche XML de votre gène d'intérêt et cher­cher le tag XML défi­nis­sant la banque de don­née Nucleo­tide, vous devriez ain­si trou­ver l'identifiant unique pour la séquence nucléo­ti­dique que vous cher­chez, ce qui vous per­met­tra d'envoyer la requête direc­te­ment à cette banque. Après il ne vous res­te­ra plus qu'à choi­sir de récu­pé­rer la fiche au for­mat XML ou au for­mat Fas­ta.
      Voi­ci un exemple du tag auquel je fais allu­sion :
      [crayon-667aaa3bb0b18476975891/]
      Je vous conseille, par expé­rience, de pas­ser par un par­ser XML (Perl en pos­sède quelques uns, dis­po­nibles sur le CPAN) afin de vous faci­li­ter la tâche, les fichiers XML four­nis par le NCBI ne sont pas tou­jours faciles à appré­hen­der pour cer­taines infor­ma­tions.

      Pour la pos­si­bi­li­té simi­laire d'interrogation de la base Ensem­bl, oui, il en existe au moins 2, dont une que je connais bien, il s'agit de l'API Bio­Mart-Perl, que vous pou­vez trou­ver chez Bio­Mart, four­ni par le San­ger Ins­ti­tute. L'API Perl n'est dis­po­nible que pour la ver­sion 0.7, mais si vous pré­fé­rez une API en Java la ver­sion 0.8, plus récente, est dis­po­nible pour ce lan­gage. La seconde API en Perl, dont un article pour le blog est pré­vu, uti­lise Bio­Perl et est four­nie, et docu­men­tée, par Ensem­bl.

      J'espère avoir répon­du à vos attentes.

    2. Pour inter­ro­ger Ensem­bl, un sys­tème équi­valent existe. Vous trou­ve­rez la docu­men­ta­tion ici.

    3. Avatar de HEBRARD Maxime
      HEBRARD Maxime

      Mer­ci a vous,
      Je regarde tout ça avec inté­rêt.

Laisser un commentaire