quickgo-database

Par mkurman · zorai

Interroge l'API REST QuickGO et Evidence & Conclusion Ontology (ECO). À utiliser lorsque vous avez besoin de mapper des gènes à des processus biologiques, des fonctions moléculaires ou des composants cellulaires, de trouver des gènes associés à une voie métabolique/un terme GO spécifique, ou d'explorer la hiérarchie de la Gene Ontology. Ne pas utiliser pour interroger des cibles médicamenteuses (utiliser OpenTargets) ou des diagrammes mécanistiques de voies de signalisation (utiliser KEGG).

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

Skill Base de Données QuickGO

Les annotations GO (Gene Ontology) constituent l'une des principales façons d'étiqueter la fonction d'un gène. QuickGO est un navigateur rapide basé sur le web pour la GO et l'Evidence & Conclusion Ontology (ECO), maintenu par le groupe Gene Ontology Annotation (GOA) à l'EMBL-EBI.

Il fournit une ressource centralisée pour explorer les attributs fonctionnels des produits géniques (protéines, ARN et complexes). C'est un outil principal pour le mappage des annotations fonctionnelles, car il vous permet de relier un gène (par exemple, USH2A) à ses processus biologiques spécifiques (par exemple, la perception sensorielle du stimulus lumineux), ses fonctions moléculaires et ses composants cellulaires.

Prérequis

  1. uv : Consultez le skill uv et suivez ses instructions de configuration pour vous assurer que uv est installé et dans le PATH.
  2. Notification utilisateur : Si LICENSE_NOTIFICATION.txt n'existe pas déjà dans ce répertoire du skill, alors (1) notifiez de manière visible l'utilisateur de consulter les conditions à https://www.ebi.ac.uk/QuickGO/ et https://www.ebi.ac.uk/QuickGO/api/index.html, puis (2) créez le fichier enregistrant le texte de notification et l'horodatage.

Utilisation

Ce skill fournit un wrapper CLI Python scripts/quickgo_tool.py qui interroge l'API REST QuickGO. Il gère le formatage des requêtes, le respect des limites de débit et le stockage sécurisé des réponses JSON potentiellement volumineuses.

Règles Essentielles

  • Utiliser le Wrapper : TOUJOURS exécuter les scripts d'aide fournis pour interroger la base de données plutôt que d'y accéder directement. Les scripts appliquent automatiquement la limite de débit requise de manière élégante.
  • Pagination & Limites : Restreindre les endpoints à un maximum de 100 résultats par page en utilisant --limit 100 et le paramètre --page pour les ensembles de données plus volumineux.
  • Fichiers de sortie : Toujours utiliser le drapeau --output pour enregistrer les réponses dans un fichier de manière incrémentale ou analyser via jq.
  • Codes de preuve : Prioriser la preuve expérimentale (ECO:0000269) par rapport à la preuve électronique (ECO:0000501) pour éviter les prédictions bruitées.
  • Filtrage taxon : Utiliser --taxonId 9606 pour restreindre les résultats à Humain lors de l'analyse de données cliniques ou génomiques humaines.
  • Notification : Si ce skill est utilisé, assurez-vous que cela soit mentionné dans la sortie.

L'outil comporte quatre sous-commandes principales :

  1. go : Pour récupérer des informations sur les termes GO (par exemple, définitions, ancêtres, descendants et slims). Voir references/go_terms.md.
  2. annotation : Pour trouver les annotations fonctionnelles reliant les produits géniques aux termes GO. C'est votre principal mappeur fonctionnel. Voir references/annotations.md.
  3. geneproduct : Pour résoudre les symboles de gènes (comme PROC) à leurs identifiants formels de base de données. Voir references/gene_products.md.
  4. eco : Pour les termes Evidence & Conclusion Ontology (utilisés dans les annotations pour indiquer comment une annotation a été dérivée, par exemple expérimental versus électronique). Voir references/eco_terms.md.

Flux de travail courants

1. Mapper un gène à ses fonctions (Annotations)

Pour découvrir ce qu'un gène fait, vous devez d'abord résoudre son symbole en ID UniProtKB, puis interroger ses annotations. Il est souvent préférable de filtrer les preuves expérimentales (par exemple, ECO:0000269 pour EXP, ou d'autres comme IDA, IMP) pour éviter les prédictions électroniques bruitées.

# Étape 1 : Trouver l'ID UniProtKB pour le gène humain (9606) PROC
uv run scripts/quickgo_tool.py geneproduct search --query "PROC" --taxonId 9606 --limit 5 --output proc_id.json
# (Regardez proc_id.json, observez que l'ID est par exemple UniProtKB:P04070)

# Étape 2 : Trouver les annotations GO expérimentales pour cet ID
uv run scripts/quickgo_tool.py annotation search --geneProductId "UniProtKB:P04070" --taxonId 9606 --evidenceCode "ECO:0000269" --limit 50 --output proc_annotations.json

2. Trouver tous les gènes dans une voie

Pour trouver tous les gènes annotés à un terme GO spécifique (par exemple, GO:0003700 pour « transcription factor activity ») :

# Trouver les gènes humains avec cette fonction moléculaire spécifique
uv run scripts/quickgo_tool.py annotation search --goId "GO:0003700" --taxonId 9606 --limit 50 --output tf_genes.json

3. Explorer la hiérarchie GO

Pour vérifier si un terme GO spécifique est un descendant d'une catégorie plus large, ou pour récupérer sa définition :

# Récupérer les détails du terme (définitions, synonymes)
uv run scripts/quickgo_tool.py go terms --ids "GO:0003150" --output term_details.json

# Vérifier l'ascendance (par exemple, GO:0001917 est-il un enfant de quelque chose ?)
uv run scripts/quickgo_tool.py go terms --ids "GO:0001917" --relation ancestors --output term_ancestors.json

4. Créer un résumé GO Slim

Si vous avez une liste de gènes candidats et souhaitez un résumé fonctionnel haut niveau, vous pouvez les mapper jusqu'à un GO Slim prédéfini. D'abord, récupérez les annotations des gènes pour extraire leurs IDs GO, puis passez ces IDs à l'endpoint slim :

# Étape 1 : Trouver les IDs GO pour les gènes candidats (par exemple, via leurs IDs UniProt, en récupérant leurs annotations)
# ... (la sortie donne par exemple GO:0006915,GO:0008219)

# Étape 2 : Créer un résumé slim à partir de ces IDs GO spécifiques
uv run scripts/quickgo_tool.py go slim --slimsToIds "GO:0005575,GO:0008150,GO:0003674" --slimsFromIds "GO:0006915,GO:0008219" --output my_slim.json

Skills similaires