En bioinformatique il n'est pas rare que l'on ait besoin d’accéder à des informations disponibles sur des bases de données internationales, nous verrons ici le cas de la banque Gene du NCBI. Avant de s'intéresser à la récupération d'une fiche d'un gène en passant par les Eutils, un peu de théorie et d'explications sur une fiche type s'impose.
Pourquoi choisir d'utiliser les Eutils ?
Bien qu'il soit possible de jouer avec la construction d'une URL afin de récupérer la fiche d'un gène au format texte ou XML directement sur le serveur officiel, le NCBI préconise plutôt l'utilisation du serveur Eutils, qui est un outil dédié à l'exécution massive externe de ce genre de requête. Cet outil paraît d'autant plus intéressant qu'il vous permet d'effectuer de nombreuses requêtes sans avoir à trop vous inquiéter de savoir si l'IP de votre laboratoire risque d'être bloquée ou non. La seule limitation étant de ne pas effectuer plus de trois requêtes par seconde en passant par les Eutils, il est nécessaire de prévoir une temporisation des requêtes si besoin.
Récupérer une fiche par les Eutils : les étapes
Pour récupérer la fiche du gène que vous souhaitez consulter, vous devez passer par deux étapes distinctes. Dans notre exemple, la première étape consiste à effectuer une recherche sur la banque Gene afin de trouver le gène dont l'identifiant est le numéro 5371. Pour cela nous devons construire l'URL suivante :
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=gene&term=5371[uid]&usehistory=y
Voici ce que les Eutils vont comprendre :
-
1http ://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi
-
1db=gene
-
1term=5371[uid]
-
1usehistory=y
Pour la prochaine étape vous aurez besoin de récupérer, dans le fichier XML qui vient de s'afficher, les informations suivantes :
- le WebEnv, qui n'apparait pas si vous avez choisi de ne pas utiliser l'historique ;
- le numéro QueryKey, qui lui est exigé pour la seconde étape
La seconde étape va vous permettre de récupérer la fiche de votre gène d'intérêt avec cette nouvelle requête :
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=gene&WebEnv=NCID_1_239264264_130.14.22.101_9001_1330635030_79372563&query_key=1&rettype=xml&retmode=text
Et voici l'explication sur ce que le moteur des Eutils effectuera :
-
1http ://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi
-
1db=gene
-
1WebEnv=NCID_1_239264264_130.14.22.101_9001_1330635030_79372563
-
1query_key=1
-
1rettype=xml
-
1retmode=text
Une fois votre requête envoyée au serveur, vous aurez sous vos yeux la fiche au format XML du gène PML dont l'identifiant est 5371.
Explications sur la fiche du gène récupéré
Tout d'abord, merci de tenir compte du fait qu'il est parfaitement possible de trouver la fiche d'un gène en utilisant son seul nom, cependant il peut y avoir une forte redondance et un retour de plusieurs entrées pour un même nom. Dans mon exemple je me focalise sur un identifiant unique afin de n'avoir qu'une seule fiche à récupérer.
La fiche d'un gène du NCBI renferme de nombreuses informations sur le gène, en voici une liste non-exhaustive :
- de nombreuses références croisées avec d'autres banques telles que Ensembl, HPRD, Vega, OMIM, PubMed
- des informations sur la position du gène sur son chromosome
- les protéines qui interagissent avec le gène ainsi que les produits du gène
- la section Gene Ontology permet d'obtenir des renseignements sur la fonction, le processus et le composant cellulaire pour le gène
- un accès direct aux différents profils d'expression du gène en fonction du tissu et/ou de la maladie…
Récupérer la même fiche à l'aide d'un script Perl
Parce qu'il est toujours plus simple d'automatiser ce genre de processus, ce script Perl peut vous être très utile :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
#!/usr/bin/perl ‑w use strict ; use warnings ; # LWP est une bibliothèque permettant de lire les données en HTTP use LWP::Simple ; use LWP::UserAgent ; # vérifie si l'utilisateur a précisé le GeneID if ( !$ARGV[0] ){ print "Argument GeneID not found!\n$!" and die ; } my $geneid = $ARGV[0]; # vérifie si le répertoire tmp/ existe déjà if ( ! -d "tmp/" ){ exec(mkdir "tmp/"); } # nom du fichier XML qui sera créé avec le GeneID comme nom my $xml_handle = "tmp/".$geneid.".xml"; my $gene = $geneid."[uid]"; # on veut l'identifiant unique du gène my $db = "gene"; # on cherche dans la banque de données Gene # construction de la requête de recherche my $base = 'http://eutils.ncbi.nlm.nih.gov/entrez/eutils/'; my $url = $base . "esearch.fcgi?db=".$db."&term=".$gene."&usehistory=y"; # récupération du résultat comme si vous l'aviez ouvert dans votre navigateur my $output = get($url); my $web = $1 if ($output =~ /<WebEnv>(\S+)<\/WebEnv>/); # récupération du WebEnv my $key = $1 if ($output =~ /<QueryKey>(\d+)<\/QueryKey>/); # récupération de la query key my $count = $1 if ($output =~ /<Count>(\d+)<\/Count>/); # récupération du nombre de résultats pour la recherche if ( !$web or !$key or !$count ){ print "Can't read informations from url : ".$url."\n"; exit ; } open (XML, ">", $xml_handle) or ( warn "Can't create file $xml_handle\n$!\n" and die ); # on précise le nombre de résultat à retourner par tour de boucle : # 1 pour un résultat, 50 pour 50 résultats, etc my $retmax = 1 ; for (my $retstart = 0 ; $retstart < $count ; $retstart += $retmax) { my $efetch_url = $base ."efetch.fcgi?db=".$db."&WebEnv=".$web ; $efetch_url .= "&query_key=".$key."&retstart=".$retstart ; $efetch_url .= "&retmax=".$retmax."&rettype=xml&retmode=text"; my $efetch_out = get($efetch_url); if ( !$efetch_out ){ print "Can't get file xml from : ".$efetch_url."\n"; exit ; } print XML $efetch_out ; } close XML ; |
Pour appeler ce script depuis un terminal, il vous suffit d'utiliser la ligne de commande suivante :
1 |
[crayon-672342a84115f312063207 ]perl eutils_gene.pl 5371 |
Ce script étant très largement inspiré du guide officiel, et adapté en fonction de mes besoins, celui-ci est donc libre d'accès. Vous êtes donc parfaitement libre de le récupérer, le disséquer et le modifier à votre convenance.
Sources
Pour une prise en main rapide des Eutils : http://www.ncbi.nlm.nih.gov/books/NBK25500/
Pour aller plus loin avec les Eutils : http://www.ncbi.nlm.nih.gov/books/NBK25501/
Laisser un commentaire