bioservices

Par mkurman · zorai

Interface Python unifiée pour plus de 40 services bioinformatiques. À utiliser pour interroger plusieurs bases de données (UniProt, KEGG, ChEMBL, Reactome) dans un même workflow avec une API cohérente. Idéal pour l'analyse multi-bases de données et le mapping d'identifiants entre services. Pour des recherches rapides sur une seule base de données, préférez gget ; pour la manipulation de séquences et de fichiers, utilisez biopython.

npx skills add https://github.com/mkurman/zorai --skill bioservices

BioServices

Vue d'ensemble

BioServices est un package Python qui fournit un accès programmatique à environ 40 services web et bases de données de bioinformatique. Récupérez des données biologiques, effectuez des requêtes inter-bases de données, mappez des identifiants, analysez des séquences et intégrez plusieurs ressources biologiques dans des workflows Python. Le package gère les protocoles REST et SOAP/WSDL de manière transparente.

Quand utiliser cette compétence

Cette compétence doit être utilisée quand :

  • Récupérer des séquences de protéines, des annotations ou des structures depuis UniProt, PDB, Pfam
  • Analyser les voies métaboliques et fonctions géniques via KEGG ou Reactome
  • Chercher dans les bases de données de composés (ChEBI, ChEMBL, PubChem) pour des informations chimiques
  • Convertir des identifiants entre différentes bases de données biologiques (KEGG↔UniProt, IDs de composés)
  • Exécuter des recherches de similarité de séquence (BLAST, alignement MUSCLE)
  • Interroger les termes d'ontologie génique (QuickGO, annotations GO)
  • Accéder aux données d'interactions protéine-protéine (PSICQUIC, IntactComplex)
  • Extraire des données génomiques (BioMart, ArrayExpress, ENA)
  • Intégrer des données provenant de plusieurs ressources bioinformatiques dans un seul workflow

Capacités principales

1. Analyse des protéines

Récupérez des informations, des séquences et des annotations fonctionnelles de protéines :

from bioservices import UniProt

u = UniProt(verbose=False)

# Chercher une protéine par nom
results = u.search("ZAP70_HUMAN", frmt="tab", columns="id,genes,organism")

# Récupérer une séquence FASTA
sequence = u.retrieve("P43403", "fasta")

# Mapper les identifiants entre bases de données
kegg_ids = u.mapping(fr="UniProtKB_AC-ID", to="KEGG", query="P43403")

Méthodes principales :

  • search() : Interroger UniProt avec des termes de recherche flexibles
  • retrieve() : Obtenir les entrées de protéines dans différents formats (FASTA, XML, tab)
  • mapping() : Convertir les identifiants entre bases de données

Référence : references/services_reference.md pour les détails complets de l'API UniProt.

2. Découverte et analyse des voies

Accédez aux informations des voies KEGG pour les gènes et organismes :

from bioservices import KEGG

k = KEGG()
k.organism = "hsa"  # Définir pour les humains

# Chercher des organismes
k.lookfor_organism("droso")  # Trouver les espèces Drosophila

# Trouver des voies par nom
k.lookfor_pathway("B cell")  # Retourne les IDs de voies correspondantes

# Obtenir les voies contenant des gènes spécifiques
pathways = k.get_pathway_by_gene("7535", "hsa")  # Gène ZAP70

# Récupérer et analyser les données de voie
data = k.get("hsa04660")
parsed = k.parse(data)

# Extraire les interactions de voie
interactions = k.parse_kgml_pathway("hsa04660")
relations = interactions['relations']  # Interactions protéine-protéine

# Convertir en Simple Interaction Format
sif_data = k.pathway2sif("hsa04660")

Méthodes principales :

  • lookfor_organism(), lookfor_pathway() : Chercher par nom
  • get_pathway_by_gene() : Trouver les voies contenant des gènes
  • parse_kgml_pathway() : Extraire les données de voie structurées
  • pathway2sif() : Obtenir les réseaux d'interactions protéiques

Référence : references/workflow_patterns.md pour les workflows d'analyse de voies complets.

3. Recherches dans les bases de données de composés

Cherchez et effectuez des références croisées de composés sur plusieurs bases de données :

from bioservices import KEGG, UniChem

k = KEGG()

# Chercher des composés par nom
results = k.find("compound", "Geldanamycin")  # Retourne cpd:C11222

# Obtenir des informations de composé avec des liens vers les bases de données
compound_info = k.get("cpd:C11222")  # Inclut les liens ChEBI

# Référence croisée KEGG → ChEMBL via UniChem
u = UniChem()
chembl_id = u.get_compound_id_from_kegg("C11222")  # Retourne CHEMBL278315

Workflow courant :

  1. Chercher un composé par nom dans KEGG
  2. Extraire l'ID de composé KEGG
  3. Utiliser UniChem pour le mappage KEGG → ChEMBL
  4. Les IDs ChEBI sont souvent fournis dans les entrées KEGG

Référence : references/identifier_mapping.md pour le guide complet de mappage inter-bases.

4. Analyse de séquences

Exécutez des recherches BLAST et des alignements de séquences :

from bioservices import NCBIblast

s = NCBIblast(verbose=False)

# Exécuter BLASTP contre UniProtKB
jobid = s.run(
    program="blastp",
    sequence=protein_sequence,
    stype="protein",
    database="uniprotkb",
    email="your.email@example.com"  # Requis par NCBI
)

# Vérifier le statut du job et récupérer les résultats
s.getStatus(jobid)
results = s.getResult(jobid, "out")

Note : Les jobs BLAST sont asynchrones. Vérifiez le statut avant de récupérer les résultats.

5. Mappage d'identifiants

Convertissez les identifiants entre différentes bases de données biologiques :

from bioservices import UniProt, KEGG

# Mappage UniProt (de nombreuses paires de bases de données supportées)
u = UniProt()
results = u.mapping(
    fr="UniProtKB_AC-ID",  # Base de données source
    to="KEGG",              # Base de données cible
    query="P43403"          # Identifiant(s) à convertir
)

# KEGG gene ID → UniProt
kegg_to_uniprot = u.mapping(fr="KEGG", to="UniProtKB_AC-ID", query="hsa:7535")

# Pour les composés, utilisez UniChem
from bioservices import UniChem
u = UniChem()
chembl_from_kegg = u.get_compound_id_from_kegg("C11222")

Mappages supportés (UniProt) :

  • UniProtKB ↔ KEGG
  • UniProtKB ↔ Ensembl
  • UniProtKB ↔ PDB
  • UniProtKB ↔ RefSeq
  • Et beaucoup d'autres (voir references/identifier_mapping.md)

6. Requêtes Gene Ontology

Accédez aux termes et annotations GO :

from bioservices import QuickGO

g = QuickGO(verbose=False)

# Récupérer les informations sur les termes GO
term_info = g.Term("GO:0003824", frmt="obo")

# Chercher des annotations
annotations = g.Annotation(protein="P43403", format="tsv")

7. Interactions protéine-protéine

Interrogez les bases de données d'interactions via PSICQUIC :

from bioservices import PSICQUIC

s = PSICQUIC(verbose=False)

# Interroger une base de données spécifique (ex. MINT)
interactions = s.query("mint", "ZAP70 AND species:9606")

# Lister les bases de données d'interactions disponibles
databases = s.activeDBs

Bases de données disponibles : MINT, IntAct, BioGRID, DIP, et 30+ autres.

Workflows d'intégration multi-services

BioServices excelle dans la combinaison de plusieurs services pour une analyse complète. Modèles d'intégration courants :

Pipeline complet d'analyse de protéines

Exécutez un workflow complet de caractérisation de protéines :

python scripts/protein_analysis_workflow.py ZAP70_HUMAN your.email@example.com

Ce script démontre :

  1. Recherche UniProt pour l'entrée de protéine
  2. Récupération de séquence FASTA
  3. Recherche de similarité BLAST
  4. Découverte de voies KEGG
  5. Mappage d'interactions PSICQUIC

Analyse de réseau de voies

Analysez toutes les voies pour un organisme :

python scripts/pathway_analysis.py hsa output_directory/

Extrait et analyse :

  • Tous les IDs de voies pour l'organisme
  • Interactions protéine-protéine par voie
  • Distributions des types d'interaction
  • Exports aux formats CSV/SIF

Recherche de composé inter-bases

Mappez les identifiants de composés sur les bases de données :

python scripts/compound_cross_reference.py Geldanamycin

Récupère :

  • ID de composé KEGG
  • Identifiant ChEBI
  • Identifiant ChEMBL
  • Propriétés de composé basiques

Conversion batch d'identifiants

Convertissez plusieurs identifiants à la fois :

python scripts/batch_id_converter.py input_ids.txt --from UniProtKB_AC-ID --to KEGG

Bonnes pratiques

Gestion du format de sortie

Différents services retournent les données dans divers formats :

  • XML : Analyser avec BeautifulSoup (la plupart des services SOAP)
  • Tab-separated (TSV) : DataFrames Pandas pour les données tabulaires
  • Dictionary/JSON : Manipulation directe en Python
  • FASTA : Intégration BioPython pour l'analyse de séquences

Rate Limiting et verbosité

Contrôlez le comportement des requêtes API :

from bioservices import KEGG

k = KEGG(verbose=False)  # Supprimer les détails des requêtes HTTP
k.TIMEOUT = 30  # Ajuster le timeout pour les connexions lentes

Gestion des erreurs

Enveloppez les appels de service dans des blocs try-except :

try:
    results = u.search("ambiguous_query")
    if results:
        # Traiter les résultats
        pass
except Exception as e:
    print(f"Search failed: {e}")

Codes des organismes

Utilisez les abréviations d'organismes standard :

  • hsa : Homo sapiens (humain)
  • mmu : Mus musculus (souris)
  • dme : Drosophila melanogaster
  • sce : Saccharomyces cerevisiae (levure)

Lister tous les organismes : k.list("organism") ou k.organismIds

Intégration avec d'autres outils

BioServices fonctionne bien avec :

  • BioPython : Analyse de séquences sur les données FASTA récupérées
  • Pandas : Manipulation de données tabulaires
  • PyMOL : Visualisation de structure 3D (récupérer les IDs PDB)
  • NetworkX : Analyse de réseau des interactions de voies
  • Galaxy : Wrappers d'outils personnalisés pour les plateformes de workflow

Ressources

scripts/

Scripts Python exécutables démontrant des workflows complets :

  • protein_analysis_workflow.py : Caractérisation de protéine de bout en bout
  • pathway_analysis.py : Découverte de voies KEGG et extraction de réseau
  • compound_cross_reference.py : Recherche de composé multi-bases
  • batch_id_converter.py : Utilitaire de mappage d'identifiants en masse

Les scripts peuvent être exécutés directement ou adaptés pour des cas d'usage spécifiques.

references/

Documentation détaillée chargée selon les besoins :

  • services_reference.md : Liste complète de tous les 40+ services avec méthodes
  • workflow_patterns.md : Workflows d'analyse détaillés multi-étapes
  • identifier_mapping.md : Guide complet de conversion d'ID inter-bases

Chargez les références quand vous travaillez avec des services spécifiques ou des tâches d'intégration complexes.

Installation

uv pip install bioservices

Les dépendances sont gérées automatiquement. Le package est testé sur Python 3.9-3.12.

Informations supplémentaires

Pour la documentation API détaillée et les fonctionnalités avancées, consultez :

Skills similaires