Bioservices, un module Python très utile

Logo officiel du langage de programmation Python |Tous droits réservés
Logo offi­ciel du lan­gage de pro­gram­ma­tion Python |Tous droits réser­vés

Dans notre domaine si vaste, il existe de nom­breuses bases de don­nées (cf. Bases de don­nées, notions par nahoy), et par­mi ces bases, un cer­tain nombre d'entre elles pro­pose un ser­vice web pour accé­der à leurs don­nées à par­tir d'un script. Le pro­blème prin­ci­pal qui peut nous frei­ner, ou nous faire peur, lorsque l'on se lance dans cette quête, c'est le nombre de ser­vices web dont nous devrons connaître la tech­no­lo­gie. Ne serait-il pas plus simple pour nous de pou­voir inter­ro­ger tous ces ser­vices sans avoir à deve­nir des experts en ser­vices web, d'autant plus si nous sommes pris par le temps dans nos pro­jets ?

Bio­ser­vices est un module Python se pro­po­sant de nous per­mettre d’accéder aux ser­vices web de nom­breuses banques de don­nées de façon pro­gram­ma­tique.

Présentation du module Bioservices

Bio­Ser­vices se pro­pose de vous per­mettre d'interroger les bases de don­nées majeures en bio­in­for­ma­tique. Sou­vent ces bases de don­nées sont acces­sibles via des ser­vices pou­vant être basés sur les pro­to­coles SOAP/​WSDL, ou REST. Grâce à ce module, vous pour­rez vous pas­ser, au moins en par­tie, de l'apprentissage de la syn­taxe d'interrogation de chaque banque.

Bio­Ser­vices vous pro­pose ain­si d'accèder à près de 24 bases de don­nées. Par­mi les banques qu'il est pos­sible d'interroger vous pour­rez trou­ver :

Exemples d'utilisations

Installation

L'installation se fait faci­le­ment depuis les dépôts de Python. Vous avez donc le choix de la com­mande à uti­li­ser, sous GNU/​Linux, pour ins­tal­ler le module.

Ou bien vous pou­vez télé­char­ger l'archive du module depuis les dépôts et l'installer avec la com­mande sui­vante, une fois l'archive décom­pres­sée :

Récupérer la liste des protéines UniProtKB avec QuickGO

Quick­GO est un ser­vice web pro­po­sé par l'EBI per­met­tant de récu­pé­rer des infor­ma­tions sur les Gene Onto­lo­gy.

Il est pos­sible que vous ayez un mes­sage d'avertissement vous indi­quant que le module pan­das n'est pas ins­tal­lé, vous pou­vez choi­sir de l'installer ou non. Pour cet exemple j'ai eu le résul­tat escomp­té.

Dans cet exemple, je sou­haite récu­pé­rer un tableau de 4 colonnes conte­nant, dans l'ordre :

  • la base de don­nées de pro­téines ;
  • l'identifiant de la pro­téine tel qu'il est four­ni par la base de don­nées ;
  • l'identifiant GO auquel est asso­cié la pro­téine ;
  • le nom du terme GO auquel est asso­cié la pro­téine.

Pour chaque ligne récu­pé­rée, je ne veux gar­der que les pro­téines issues de la banque Uni­ProtKB. Pour cela, je regarde la pre­mière colonne de chaque ligne et je n'affiche que les lignes qui m'intéressent.

Récupérer la liste des gènes d'un pathway KEGG

Dans cet exemple, je vais vous pré­sen­ter com­ment récu­pé­rer la liste des iden­ti­fiants de gènes d'un path­way KEGG et les tra­duire en sym­bole en uti­li­sant les ser­vices KEGG et HGNC.

Dans un pre­mier temps, j'utilise Kegg­Par­ser pour décou­per les infor­ma­tions du path­way pour récu­pé­rer la liste des iden­ti­fiants des gènes.

Dans un second temps, j'utilise la méthode map­ping du module HGNC pour récu­pé­rer les infor­ma­tions sur le gène et affi­cher le sym­bole du gène.

Récupérer des références à d'autres banques de données avec HGNC

La banque HGNC pré­sente l'avantage de pou­voir trou­ver faci­le­ment des réfé­rences avec des banques de don­nées diverses et variées pour les gènes. Le module HGNC nous per­met ain­si de pou­voir récu­pé­rer ces réfé­rences croi­sées qui peuvent être utiles pour obte­nir de plus amples infor­ma­tions.

Dans cet exemple, la clé affi­chée est le nom de la banque de don­nées réfé­ren­cée. Pour chaque base de don­nées, la liste des liens vers les fiches infor­ma­tives est éga­le­ment affi­chée.

Interroger EUtils simplement en Python

Pour cet exemple, sachez que, par défaut, le résul­tat trou­vé est au for­mat XML. De plus, la docu­men­ta­tion n'est pas encore finie pour ce module, qui est encore en cours d'implémentation.

Il s'agit d'exemples courts et simples que vous pou­vez réadap­ter assez rapi­de­ment. Pour appro­fon­dir l'utilisation de ce module, je vous recom­mande vive­ment de lire la docu­men­ta­tion des EUtils.

Dans cet exemple j'utilise dans un pre­mier temps le module HGNC pour trou­ver l'identifiant GeneID (NCBI Entrez­Gene) à par­tir de son sym­bole.

Ensuite il me suf­fit d'utiliser la méthode EFetch ou ESum­ma­ry pour récu­pé­rer un résu­mé de mon gène d'intérêt.

La ligne 19 de cet exemple vous montre la syn­taxe à uti­li­ser pour récu­pé­rer un résu­mé au for­mat XML en pas­sant par le pro­to­cole REST.

Conclusion

Bio­Ser­vices est un module Python que j'ai décou­vert récem­ment mais qui me semble pro­met­teur et je tenais à vous le faire décou­vrir éga­le­ment.

J'en suis encore à l'étape d'apprentissage, jon­glant entre la docu­men­ta­tion, le code source (la docu­men­ta­tion n'est pas tou­jours suf­fi­sante) et mes essais, néan­moins je com­mence à m'amuser avec et à entre­voir dif­fé­rentes pos­si­bi­li­tés.

J'espère que ce billet vous aura don­né envie d'essayer ce module qui mérite de se faire connaître !

Sources

Article : Bio­Ser­vices : a com­mon Python package to access bio­lo­gi­cal Web Ser­vices pro­gram­ma­ti­cal­ly, Coke­laer et al, Bio­in­for­ma­tics (2013)

Docu­men­ta­tion : vous pou­vez trou­ver la docu­men­ta­tion et les sources sur le site du module Bio­Ser­vices.


Mer­ci à nahoy, waque­teu, Estel et nal­lias pour leur relec­ture et leurs com­men­taires.



Pour continuer la lecture :


Commentaires

3 réponses à “Bioservices, un module Python très utile”

  1. Mer­çi pour cette décou­verte ! Bio­ser­vices me sera d'une grande uti­li­té !

  2. Mer­ci pour les exemples. Just un petit mot pour men­tion­ner qu'une des dif­fi­cul­tés du déve­lo­pe­ment dans Bio­Ser­vices est de jon­gler entre les dif­fé­rents ser­vices et de trou­ver leurs docu­men­ta­tions res­pec­tives. Nous avons essayer de four­nir une docu­men­ta­tion per­ti­nente mais il est sou­vent impos­sible de cou­vrir toutes les pos­si­bli­tés offertes par cha­cun des ser­vices. Je note que la "docu­men­ta­tion n'est pas tou­jours suf­fis­sante", et tache­rai de la rendre plus clair. Mer­ci encore pour le post.

    L'auteur 😉

    1. Bon­jour et mer­ci pour votre com­men­taire.

      J'ai plei­ne­ment conscience qu'il n'est pas facile de jon­gler entre les dif­fé­rents ser­vices, et encore moins de trou­ver leurs docu­men­ta­tions ! C'est pour cela que j'ai été plus que ravie de décou­vrir votre module, module avec lequel je m'amuse de plus en plus sur Quick­GO. Je vous remer­cie gran­de­ment pour ce module qui va nous faci­li­ter la vie à n'en pas dou­ter.
      Pour ce qui est de votre docu­men­ta­tion, je vous sou­haite un bon cou­rage pour l'étoffer, c'est loin d'être facile et/​ou rapide à faire. Si je peux me per­mettre une sug­ges­tion, serait-il pos­sible de pré­ci­ser quels modules sont uti­li­sés lors de la récu­pé­ra­tion de cer­taines don­nées ?
      En uti­li­sant le module Quick­GO pour la récu­pé­ra­tion des terms, j'ai pu remar­quer que le for­mat 'oboxml' ne retourne pas une chaîne de carac­tères mais un objet, j'ai d'ailleurs mis un moment à com­prendre quel module était à uti­li­ser pour mani­pu­ler cette classe.

      Je vous remer­cie de votre retour sur ce billet et je vous remer­cie éga­le­ment pour votre module 🙂 !

      Cor­dia­le­ment, Nol­wenn.

Laisser un commentaire