- Le blog participatif de bioinformatique francophone depuis 2012 -

Débuter avec l'API Ensembl (Perl)

But : Décou­vrir com­ment on peut accé­der très sim­ple­ment aux infor­ma­tions d'Ensembl à l'aide d'un script Perl.

Niveau : débu­tant.

Pré-requis : Avoir des notions de Perl allant jusqu'à l'utilisation de librai­ries. Avoir accès à une machine où les librai­ries Perl d'Ensembl sont ins­tal­lées.

Par­mi les sites agré­geant de l'information bio­lo­gique, Ensem­bl four­nit une API (Appli­ca­tion Pro­gram­ming Inter­face) Perl qui per­met de déve­lop­per des pro­grammes (en Perl donc) pour accé­der à cette infor­ma­tion.

L'API Ensem­bl est très com­plète et on ne s'intéressera ici qu'aux classes et méthodes de plus haut niveau. Il est pos­sible d'utiliser des fonc­tions plus proches des bases de don­nées, mais c'est en géné­ral une erreur. Sans entrer dans les consi­dé­ra­tions habi­tuelles jus­ti­fiant la créa­tion d'une API, on note­ra quand même que l'accès aux don­nées est très facile car il y a beau­coup de points d'entrée et que l'orientation objet sim­pli­fie gran­de­ment les écri­tures.

Pour illus­trer cette note, nous allons nous inté­res­ser à un trans­crit (ENST00000368759) du gène BCCIP qui code pour une pro­téine inter­agis­sant avec BRCA2 et CDKN1A. Notre but sera de retrou­ver la posi­tion de tous les exons du trans­crit à par­tir de son nom dans Ensem­bl, le stable_​id.

La docu­men­ta­tion est très pra­tique et donne déjà quelques indices sur l'organisation. Vous arri­vez alors à la racine de la docu­men­ta­tion (géné­rée auto­ma­ti­que­ment par Doxy­gen). Il y a quatre sec­tions de base (mar­quées API) : core, varia­tion, com­pa­ra et funct­ge­no­mics. Core contient tous les objets de base, à savoir les chro­mo­somes, gènes, trans­crits, exons, "slice" (lit­té­ra­le­ment, une tranche de génome), etc. Les autres sec­tions sont plus expli­cites. Cli­quez sur le lien "Ensem­bl core data­base API", puis sur "Class Index". Obser­vez tout ce qui est dis­po­nible à par­tir de "core".

Venons-en main­te­nant au cœur du pro­blème. Comme dit pré­cé­dem­ment, toute l'information conte­nue dans Ensem­bl est acces­sible par des objets. Mais avant d'accéder aux objets, il y a 3 étapes à fran­chir.

1- Il faut créer un objet de type "Bio::EnsEMBL::Registry".
Ex :

2- Récu­pé­rer le registre depuis la base de don­nées.
Ex :

3- Récu­pé­rer un adap­ta­teur cor­res­pon­dant à l'objet qui nous inté­resse, ici, un trans­crit.
Ex :

Il convient de sou­li­gner plu­sieurs points.

À l'étape 2, une connexion est éta­blie avec la base de don­née. D'ailleurs, l'option -ver­bose => 1 per­met­trait de voir toutes les espèces dis­po­nibles. Ce n'est évi­dem­ment pas la seule manière de char­ger le registre. À titre d'exercice, je sug­gère de cher­cher la hié­rar­chie des classes de "core" (il faut cli­quer jusqu'à voir un graphe, bonne chance),  puis cli­quer sur "regis­try" pour voir les dif­fé­rentes méthodes.

À l'étape 3, nous voyons ici la méthode la plus impor­tante et la notion qui en découle : l'adaptateur. Pour chaque objet, il existe un adap­ta­teur. L'adaptateur est lui-même un objet, que l'on pour­rait qua­li­fier d'intermédiaire, et qui contient, entre autres, toutes les méthodes capables de retour­ner un objet du type de l'adaptateur.

À titre d'exercice : une fois dans la docu­men­ta­tion de core, uti­li­ser la "class index" pour trou­ver l'objet transcript_​adaptor (facile). Quelle est la dif­fé­rence entre fetch_​all_​* et fetch_​* ?

À ce stade, nous sommes prêts à creu­ser. En Perl, c'est bien connu : "there is more than one way to do it". Nous allons com­men­cer par le plus gros objet et des­cendre vers le plus petit, c'est-à-dire par­tir du trans­crit et des­cendre vers les exons. En consul­tant la docu­men­ta­tion de l'objet Trans­crip­tA­dap­tor, on trouve une méthode nom­mée fetch_​by_​stable_​id qui prend en argu­ment une variable String et va nous retour­ner un objet Bio::EnsEMBL::Transcript :

Ensuite l'objet Bio::EnsEMBL::Transcript contient une méthode get_​all_​Exons qui va nous retour­ner une réfé­rence sur une liste d'objets de type Bio::EnsEMBL::Exon :

On peut faire affi­cher par exemple le nom (stable_​id), le start et le end :

Au final, le script com­plet (rem­pla­cer $PATH_​perl par le che­min qui va bien) :

On pour­rait s'arrêter là mais nous allons voir com­ment adop­ter une démarche (presque) inverse. Nous allons par­tir d'un Exo­nA­dap­tor et récu­pé­rer les exons cor­res­pon­dant au trans­cript. Pour cela, on voit qu'il existe une méthode fetch_​all_​by_​Transcript qui prend en argu­ment un objet de type Bio::EnsEMBL::Transcript et retourne à nou­veau une réfé­rence sur une liste de Bio::EnsEMBL::Exon.

On vient de voir com­ment cher­cher l'objet cor­res­pon­dant au trans­crit, il ne nous reste donc plus qu'à écrire :

Résul­tat :

Copie d'écran de la sortie du script
Copie d'écran de la sor­tie du script

Voi­là qui conclue cette note sur com­ment débu­ter avec l'API Perl d'Ensembl. J'espère qu'avec ce tout petit exemple, vous aurez envie d'aller plus avant et de décou­vrir les monts et mer­veilles cachés dans la docu­men­ta­tion.

Pour aller plus loin

À noter, des ses­sions de for­ma­tions sont régu­liè­re­ment pro­po­sées et conduites par des membres de l'équipe de déve­lop­pe­ment. Pour un plan­ning on pour­ra consul­ter ce calen­drier et éga­le­ment le blog d'Ensembl. J'ai pu assis­ter à une for­ma­tion (gra­tuite) de 3 jours à Cam­bridge (UK) qui don­nait les points clefs de Core, Varia­tion, Com­pa­ra et Funct­Ge­no­mics (par ordre d'importance dans la for­ma­tion). Pour des groupes plus larges, il peut être inté­res­sant d'organiser une for­ma­tion ad hoc à domi­cile (payant).

Sans attendre une for­ma­tion ou une pro­chaine (et incer­taine) note, pour ceux qui veulent aller plus loin, vous pou­vez consul­ter les pages ci-des­sous faites par les sus-men­tion­nés membres de l'équipe de for­ma­tion et de déve­lop­pe­ment :
Vers une for­ma­tion Core
Vers les for­ma­tions Com­pa­ra
Une pré­sen­ta­tion de Varia­tion
Vers les for­ma­tion Funct­Ge­no­mics

Mer­ci de votre atten­tion, ain­si qu'à mes gen­tils cor­rec­teurs Mali­cia, Norore, Max et Yoann M.

Vous avez aimé ? Dites-le nous !

Moyenne : 0 /​ 5. Nb de votes : 0

Pas encore de vote pour cet article.

Partagez cet article :



Pour continuer la lecture :


Commentaires

Laisser un commentaire