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 flexiblesretrieve(): 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 nomget_pathway_by_gene(): Trouver les voies contenant des gènesparse_kgml_pathway(): Extraire les données de voie structuréespathway2sif(): 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 :
- Chercher un composé par nom dans KEGG
- Extraire l'ID de composé KEGG
- Utiliser UniChem pour le mappage KEGG → ChEMBL
- 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 :
- Recherche UniProt pour l'entrée de protéine
- Récupération de séquence FASTA
- Recherche de similarité BLAST
- Découverte de voies KEGG
- 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 melanogastersce: 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 boutpathway_analysis.py: Découverte de voies KEGG et extraction de réseaucompound_cross_reference.py: Recherche de composé multi-basesbatch_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éthodesworkflow_patterns.md: Workflows d'analyse détaillés multi-étapesidentifier_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 :
- Documentation officielle : https://bioservices.readthedocs.io/
- Code source : https://github.com/cokelaer/bioservices
- Références spécifiques aux services dans
references/services_reference.md