- Le blog participatif de bioinformatique francophone depuis 2012 -

À la découverte de BioMart !

Dans le cadre de mon tra­vail, j'ai récem­ment décou­vert un outil for­mi­dable pour la consul­ta­tion et la récu­pé­ra­tion de don­nées à par­tir de cer­taines banques : Bio­Mart.

Logo de BioMart. Image du domaine public
Logo de Bio­Mart. Image du domaine public

Après avoir pas­sé la frus­tra­tion de devoir uti­li­ser l'interface du ser­vice four­ni pour télé­char­ger les dif­fé­rentes don­nées dont j'avais besoin, je me suis ren­sei­gnée davan­tage sur ce logi­ciel. De façon sim­pliste, on peut défi­nir Bio­Mart comme un pro­gramme que l'on peut trou­ver sur cer­taines banques sous la forme d'un ser­vice web. En cher­chant davan­tage, sur­prise : cette appli­ca­tion peut être uti­li­sée aus­si bien pour créer sa propre base de don­nées (étant don­nées les spé­ci­fi­ca­tions de l'interface) que pour inter­ro­ger à dis­tance d'autres banques au tra­vers d'une API four­nie.

Bien qu'il existe deux API, l'une faite en Java, l'autre faite en Perl, je me suis basée sur l'API Bio­Mart-Perl, pour des rai­sons d'architecture de mon lieu de tra­vail, mais éga­le­ment en rai­son de mon manque d'expérience actuel en Java. Je vous pré­sen­te­rai donc plus spé­ci­fi­que­ment Bio­Mart-Perl au tra­vers de quelques exemples pour la suite de ce billet.

Présentation de BioMart : qui gère cet outil et qui l'utilise ?

Bio­Mart est déve­lop­pé dans le but de per­mettre d'interroger, avec un seul outil, un grand nombre de bases de don­nées inter­na­tio­nales. La volon­té pre­mière du fon­da­teur, Arek Kas­pr­zyk, est de pou­voir four­nir à la com­mu­nau­té scien­ti­fique un outil qui n'exige pas d'avoir de grandes connais­sances en infor­ma­tique pour pou­voir l'utiliser, ce qui peut être inté­res­sant pour de nom­breux bio­lo­gistes et labo­ran­tins à court d'ingénieurs en infor­ma­ti­que/­bio-infor­ma­tique.

À l'origine, Bio­Mart fut déve­lop­pé pour le genome brow­ser (navi­ga­teur de génome) Ensem­bl, en tant que base de don­nées sous le nom de Ens­Mart. Au fil du déve­lop­pe­ment, Bio­Mart est deve­nu une solu­tion géné­rique pour l'intégration de don­nées au tra­vers d'une appli­ca­tion simple et rapide à mettre en place ain­si que d'algorithmes per­met­tant aux labo­ra­toires de créer et de consul­ter leurs bases de don­nées avec cet outil.

Par­mi les bases de don­nées qui peuvent être inter­ro­gées à tra­vers Bio­Mart on peut citer, pour les plus connues :

Vous pou­vez trou­ver une liste plus exhaus­tive sur la page de la com­mu­nau­té de Bio­mart.

Exemples d'utilisation de l'API BioMart-Perl

Installer BioMart-Perl et configurer un registre

Avant d'utiliser l'API Bio­Mart-Perl, sachez qu'elle n'existe pas encore pour la ver­sion 0.8 de l'outil : vous ne pour­rez ain­si l'obtenir que pour la ver­sion 0.7. L'installation se fait plu­tôt faci­le­ment en sui­vant la docu­men­ta­tion four­nie. Les seuls pré­re­quis à avoir sont : CVS ins­tal­lé sur votre machine, le lan­gage Perl, les droits d'installation sur la machine. N'oubliez pas non plus de créer le fichier de confi­gu­ra­tion comme indi­qué dans la docu­men­ta­tion.

Afin de pou­voir récu­pé­rer les infor­ma­tions sur les banques acces­sibles via Bio­Mart, vous devez créer des fichiers de confi­gu­ra­tion pour les registres. La liste des dif­fé­rents registres acces­sibles peut être consul­tée ici.

Voi­ci à quoi res­semble un fichier de confi­gu­ra­tion pour inter­ro­ger la banque HGNC :

Une fois votre fichier de confi­gu­ra­tion créé, vous êtes paré pour créer votre script.

Consulter la banque HGNC avec BioMart-Perl

Pro­blè­ma­tique : pour un gène don­né, dont je connais le nom approu­vé par HGNC — ou nom offi­ciel, — je sou­haite connaître ses noms syno­nymes, les noms qui lui ont été attri­bués par le pas­sé, mais éga­le­ment des réfé­rences pour ce lien vers les banques Ensem­bl (pour les don­nées d'annotation) et Entrez Gene.

Dans un pre­mier temps, ren­dez-vous sur le Bio­Mart de HGNC. Pour ce faire, vous avez deux pos­si­bi­li­tés : soit vous pas­sez par le site HGNC, soit vous pas­sez direc­te­ment par le por­tail cen­tral de Bio­Mart en sélec­tion­nant la base de don­nées HGNC. Pour cet exemple, je passe par le Bio­Mart four­nit par HGNC (depuis le menu Down­loads > Bio­mart et en cli­quant sur Start Mart­view ses­sion), s'ensuit une pro­cé­dure en trois étapes :

  1. Dans la rubrique DATASET, je choi­sis la DATABASE HGNC Data­base et le DATASET HGNC Data (par défaut).
  2. Dans la rubrique FILTERS, j'ouvre l'onglet "Fil­ter by sym­bol" et je sai­sis, dans le champ "Appro­ved Sym­bol", MAPK1. Par défaut le filtre "Record Grou­ping : pri­ma­ry" est tou­jours acti­vé. Pour le désac­ti­ver, ouvrez l'onglet "Fil­ter by Cura­ted ID".
  3. Dans la rubrique ATTRIBUTES, je coche les attri­buts que je sou­haite obte­nir. Dans cet exemple, je coche les attri­buts "Appro­ved Sym­bol", "Appro­ved Name", "Pre­vious Sym­bols", "Name Aliases", "Entrez Gene ID", "Ensem­bl ID (map­ped data sup­plied by Ensem­bl)".

Une fois mes para­mètres choi­sis, je clique sur le bou­ton Results afin de voir si le tableau obte­nu me convient :

Appro­ved Sym­bolAppro­ved NameName AliasesPre­vious Sym­bolsEnsem­bl ID (map­ped data sup­plied by Ensem­bl)Entrez Gene ID
MAPK1mito­gen-acti­va­ted pro­tein kinase 1 PRKM2, PRKM1ENSG000001000305594

Une fois satis­faite des résul­tats obte­nus, je clique sur le bou­ton Perl, qui me four­nit le script Perl à uti­li­ser avec l'API ins­tal­lée sur ma machine :

Avant d'exécuter le script, il faut modi­fier la variable $conf­File en lui indi­quant le che­min vers le fichier de confi­gu­ra­tion que vous avez pré­cé­dem­ment créé. Lorsque j'exécute ce script en local, je récu­père bien un tableau au for­mat TSV sur mon ter­mi­nal. Je pour­rais aus­si redi­ri­ger la sor­tie dans un fichier texte pour effec­tuer d'autres trai­te­ments par la suite. Il se peut que vous ayez des mes­sages vous indi­quant les dif­fé­rentes étapes d'interrogation et de récu­pé­ra­tion des don­nées sur la banque HGNC, ces mes­sages sont affi­chés sur la sor­tie d'erreur stan­dard, pour ne plus les voir, il suf­fit donc de redi­ri­ger ces der­niers dans un fichier d'erreur ou, dans mon cas, dans le trou noir (/​dev/​null) ; voir plus bas pour la com­mande.

Comme vous pou­vez le consta­ter, il peut être facile de modi­fier le code source afin de per­mettre à l'utilisateur d'exécuter ce script en envoyant direc­te­ment le nom du gène d'intérêt en argu­ment. Voi­ci à quoi res­semble le pro­gramme une fois récrit :

Comme vous pou­vez le consta­ter, le script ne demande pas for­cé­ment des connais­sances très pous­sées en Perl pour réa­li­ser un pre­mier jet, ce qui peut être utile si on sou­haite avoir des résul­tats rapi­de­ment. Voi­ci la com­mande que vous pou­vez uti­li­ser depuis un ter­mi­nal afin de récu­pé­rer vos don­nées tout en redi­ri­geant la sor­tie d'erreur dans la pou­belle :

Récupérer les coordonnées de plusieurs gènes avec Ensembl

Pro­blè­ma­tique : pour une liste de gènes don­née, dont je connais les nom approu­vés par HGNC — ou nom offi­ciel — et éven­tuel­le­ment les iden­ti­fiants vers les don­nées anno­tées par Ensem­bl, je sou­haite connaître leur chro­mo­some, leurs posi­tions de début et de fin, le brin sur lequel ils se situent (un gène pou­vant être dans le sens inverse), ain­si que leur nom asso­cié et une réfé­rence vers leur fiche d'identité chez Entrez­Gene.

Ce second exemple, un peu plus com­plexe, va vous per­mettre de voir à quel point Bio­Mart peut se mon­trer puis­sant et utile. Dans un pre­mier temps, nous allons créer le script Perl de base en pas­sant par le Bio­Mart d'Ensembl, la pro­cé­dure est la même que pour HGNC aus­si je ne la redé­taille­rai pas. Voi­ci le script que j'obtiens avec mes para­mètres :

La pre­mière chose notable est la pos­si­bi­li­té de pas­ser plu­sieurs noms de gènes approu­vés par HGNC chez Ensem­bl afin de pou­voir en récu­pé­rer plu­sieurs lignes. Je ne vous ai pas mon­tré ce cas de figure pour la banque HGNC pour la simple et bonne rai­son que, ne sachant pas à l'avance si le gène à pas­ser en para­mètre sera un gène approu­vé et non pas un alias ou un ancien nom, il me fal­lait pou­voir trai­ter les dif­fé­rentes pos­si­bi­li­tés une par une.

Le script four­ni par Ensem­bl peut donc être adap­té en fonc­tion des argu­ments pas­sés en para­mètre. Dans notre exemple, l'argument pas­sé en para­mètre sera un fichier au for­mat TSV où chaque ligne contient un gène qui indique son sym­bole approu­vé par HGNC et son iden­ti­fiant Ensem­blID. En effet, il est pos­sible que HGNC ne connaisse pas encore l'identifiant Ensem­blID pour le gène mais qu'Ensembl en connaisse le sym­bole approu­vé par HGNC, d'où l'intérêt du script que je vous pré­sente :

Bien sûr, ce ne sont que de simples exemples, je n'ai pas la pré­ten­tion d'être une experte de Bio­Mart, loin de là, mais cette pre­mière approche de l'outil m'a beau­coup plu et j'espère avoir pro­chai­ne­ment l'occasion de pou­voir me replon­ger dedans. Dans ce billet nous n'avons vu l'utilisation de Bio­Mart-Perl que pour deux banques, mais nous avons déjà un bon aper­çu des pos­si­bi­li­tés qui s'offrent à nous pour faire com­mu­ni­quer entre elles d'autres banques en ne pas­sant que par un outil, rédui­sant ain­si de nom­breuses heures de tra­vail à cher­cher à com­prendre les API de plu­sieurs banques pour un même résul­tat.

Je ne dis pas que Bio­Mart est par­fait pour tout : dans le cas de la banque HGNC par exemple, je n'ai pas encore trou­vé com­ment uti­li­ser un sys­tème de wild­cards (joker) pour les gènes de type HLA qui com­prennent de nom­breux com­plexes. Après avoir cher­ché un long moment — dans la docu­men­ta­tion et sur le moteur de recherche Google –, il s'avérerait que cette option ne soit pas encore gérée par le logi­ciel, mais pour une pre­mière approche afin de trou­ver rapi­de­ment des don­nées, cet outil me parait ample­ment suf­fi­sant.

Pour aller plus loin :

Bio­Mart Cen­tral Por­tal — uni­fied access to bio­lo­gi­cal data, Syed Hai­der et al., Nucleic Acids Research, 2009, Vol. 37, Web Ser­ver issue, W23-W27
Bio­Mart — bio­lo­gi­cal que­ries made easy, Damian Smed­ley et al., BMC Geno­mics 2009, 10:22
Ensem­bl Bio­Marts : a hub for data retrie­val across taxo­no­mic space, Rho­da J. Kin­sel­la et al., Data­base, Vol. 2011, Article ID bar030
Site offi­ciel de Bio­Mart




Commentaires

Laisser un commentaire