Découverte :
Bioservices, un module Python très utile

Logo officiel du langage de programmation Python |Tous droits réservés

Logo officiel du langage de programmation Python |Tous droits réservés

Dans notre domaine si vaste, il existe de nombreuses bases de données (cf. Bases de données, notions par nahoy), et parmi ces bases, un certain nombre d'entre elles propose un service web pour accéder à leurs données à partir d'un script. Le problème principal qui peut nous freiner, ou nous faire peur, lorsque l'on se lance dans cette quête, c'est le nombre de services web dont nous devrons connaître la technologie. Ne serait-il pas plus simple pour nous de pouvoir interroger tous ces services sans avoir à devenir des experts en services web, d'autant plus si nous sommes pris par le temps dans nos projets ?

Bioservices est un module Python se proposant de nous permettre d’accéder aux services web de nombreuses banques de données de façon programmatique.

Présentation du module Bioservices

BioServices se propose de vous permettre d'interroger les bases de données majeures en bioinformatique. Souvent ces bases de données sont accessibles via des services pouvant être basés sur les protocoles SOAP/WSDL, ou REST. Grâce à ce module, vous pourrez vous passer, au moins en partie, de l'apprentissage de la syntaxe d'interrogation de chaque banque.

BioServices vous propose ainsi d'accèder à près de 24 bases de données. Parmi les banques qu'il est possible d'interroger vous pourrez trouver :

Exemples d'utilisations

Installation

L'installation se fait facilement depuis les dépôts de Python. Vous avez donc le choix de la commande à utiliser, sous GNU/Linux, pour installer le module.

Ou bien vous pouvez télécharger l'archive du module depuis les dépôts et l'installer avec la commande suivante, une fois l'archive décompressée :

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

QuickGO est un service web proposé par l'EBI permettant de récupérer des informations sur les Gene Ontology.

Il est possible que vous ayez un message d'avertissement vous indiquant que le module pandas n'est pas installé, vous pouvez choisir de l'installer ou non. Pour cet exemple j'ai eu le résultat escompté.

Dans cet exemple, je souhaite récupérer un tableau de 4 colonnes contenant, dans l'ordre :

  • la base de données de protéines ;
  • l'identifiant de la protéine tel qu'il est fourni par la base de données ;
  • l'identifiant GO auquel est associé la protéine ;
  • le nom du terme GO auquel est associé la protéine.

Pour chaque ligne récupérée, je ne veux garder que les protéines issues de la banque UniProtKB. Pour cela, je regarde la premiè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ésenter comment récupérer la liste des identifiants de gènes d'un pathway KEGG et les traduire en symbole en utilisant les services KEGG et HGNC.

Dans un premier temps, j'utilise KeggParser pour découper les informations du pathway pour récupérer la liste des identifiants des gènes.

Dans un second temps, j'utilise la méthode mapping du module HGNC pour récupérer les informations sur le gène et afficher le symbole 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 pouvoir trouver facilement des références avec des banques de données diverses et variées pour les gènes. Le module HGNC nous permet ainsi de pouvoir récupérer ces références croisées qui peuvent être utiles pour obtenir de plus amples informations.

Dans cet exemple, la clé affichée est le nom de la banque de données référencée. Pour chaque base de données, la liste des liens vers les fiches informatives est également affichée.

Interroger EUtils simplement en Python

Pour cet exemple, sachez que, par défaut, le résultat trouvé est au format XML. De plus, la documentation 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 pouvez réadapter assez rapidement. Pour approfondir l'utilisation de ce module, je vous recommande vivement de lire la documentation des EUtils.

Dans cet exemple j'utilise dans un premier temps le module HGNC pour trouver l'identifiant GeneID (NCBI EntrezGene) à partir de son symbole.

Ensuite il me suffit d'utiliser la méthode EFetch ou ESummary pour récupérer un résumé de mon gène d'intérêt.

La ligne 19 de cet exemple vous montre la syntaxe à utiliser pour récupérer un résumé au format XML en passant par le protocole REST.

Conclusion

BioServices est un module Python que j'ai découvert récemment mais qui me semble prometteur et je tenais à vous le faire découvrir également.

J'en suis encore à l'étape d'apprentissage, jonglant entre la documentation, le code source (la documentation n'est pas toujours suffisante) et mes essais, néanmoins je commence à m'amuser avec et à entrevoir différentes possibilités.

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

Sources

Article : BioServices: a common Python package to access biological Web Services programmatically, Cokelaer et al, Bioinformatics (2013)

Documentation : vous pouvez trouver la documentation et les sources sur le site du module BioServices.


Merci à nahoy, waqueteu, Estel et nallias pour leur relecture et leurs commentaires.

  • À propos de
  • Issue d'une licence de biologie cellulaire et physiopathologie et d'un master de bioinformatique, je m'intéresse tout particulièrement au monde de la recherche et au domaine de la santé. J'ai travaillé dans l'unité 946 de l'INSERM, dirigée par Florence Demenais, où mon travail principal a été l'étude et la recherche de bases de données et d'outils d'intérêt majeur pour l'axe de recherche dans lequel j'étais impliquée. J'ai aussi travaillé à l'Institut Pasteur où j'ai été recrutée en tant qu'ingénieure bioinformaticienne dans le cadre du LabEx Milieu Intérieur et où ma mission principale a été de mettre en place une base de données pour la gestion de nos échantillons biologiques. Mes centres d'intérêt en bioinformatique sont : la mise en application de méthodes dans les domaines de la génomique, de la protéomique et les interactions gène-gène protéine-protéine pouvant nous apporter des informations sur leurs influences dans les maladies. Je travaille actuellement au service informatique de l'IBENS où j'ai été recrutée en qualité de développeuse d'applications !

3 commentaires sur “Bioservices, un module Python très utile

  1. Merçi pour cette découverte! Bioservices me sera d'une grande utilité!

  2. Merci pour les exemples. Just un petit mot pour mentionner qu'une des difficultés du dévelopement dans BioServices est de jongler entre les différents services et de trouver leurs documentations respectives. Nous avons essayer de fournir une documentation pertinente mais il est souvent impossible de couvrir toutes les possiblités offertes par chacun des services. Je note que la "documentation n'est pas toujours suffissante", et tacherai de la rendre plus clair. Merci encore pour le post.

    L'auteur 😉

    • Bonjour et merci pour votre commentaire.

      J'ai pleinement conscience qu'il n'est pas facile de jongler entre les différents services, et encore moins de trouver leurs documentations ! C'est pour cela que j'ai été plus que ravie de découvrir votre module, module avec lequel je m'amuse de plus en plus sur QuickGO. Je vous remercie grandement pour ce module qui va nous faciliter la vie à n'en pas douter.
      Pour ce qui est de votre documentation, je vous souhaite un bon courage pour l'étoffer, c'est loin d'être facile et/ou rapide à faire. Si je peux me permettre une suggestion, serait-il possible de préciser quels modules sont utilisés lors de la récupération de certaines données ?
      En utilisant le module QuickGO pour la récupération des terms, j'ai pu remarquer que le format 'oboxml' ne retourne pas une chaîne de caractères mais un objet, j'ai d'ailleurs mis un moment à comprendre quel module était à utiliser pour manipuler cette classe.

      Je vous remercie de votre retour sur ce billet et je vous remercie également pour votre module 🙂 !

      Cordialement, Nolwenn.

Laisser un commentaire