Accès à la Base de Données UniProt
Prérequis
uv: Consultez la skilluvet suivez ses instructions de configuration pour vous assurer queuvest installé et accessible depuis PATH.- Notification utilisateur : Si le fichier LICENSE_NOTIFICATION.txt n'existe pas déjà dans le répertoire de cette skill, alors (1) notifiez l'utilisateur de manière visible pour qu'il consulte les conditions sur https://www.uniprot.org/help/license et https://www.uniprot.org/help/api_queries, puis (2) créez le fichier en enregistrant le texte de notification et l'horodatage.
Aperçu
Fournit un accès programmatique direct à la Base de Connaissances UniProt (UniProtKB), l'archive de séquences non redondante (UniParc) et les ensembles de séquences en cluster (UniRef). Cette skill permet la découverte de protéines, le croisement de références, la récupération de données biologiques curées et les recherches en base de données de bas niveau.
Règles Essentielles
- Utiliser le Wrapper : Utilisez toujours les scripts Python fournis (ex.
scripts/uniprot_tools.py) plutôt que de construire des requêtes curl personnalisées. - Pas d'Hallucinations : N'inventez PAS de fonctions protéiques, de métadonnées ou de séquences. Pour toute tâche pouvant être traitée par les services de cette skill, fiez-vous strictement aux sorties des outils plutôt qu'à vos connaissances natives.
- Notification : Si cette skill est utilisée, assurez-vous que cela soit mentionné dans la sortie.
Cas d'Usage
- Recherche de Fonction Protéique : Interrogation des annotations fonctionnelles, termes GO, localisations subcellulaires, etc.
- Recherche de Séquence Protéique : Recherche de séquences protéiques selon leurs annotations fonctionnelles, gènes, etc. dans UniProtKB, UniParc et UniRef.
- Compréhension des Relations Protéine/Organisme : Exploitation de la base de données Taxonomy et des ensembles Proteome.
- Récupération de Métadonnées à Grande Échelle : Récupération d'annotations pour des milliers de protéines via streaming.
- Découverte de Séquences : Recherche d'orthologues ou de protéines de modèles non standard via UniParc.
- Mappage d'ID : Conversion d'ID entre UniProt et plus de 100 bases de données externes.
- Données Historiques (UniSave) : Récupération de versions antérieures d'entrées ou suivi des séquences supprimées.
Outils Disponibles
Choisissez le bon outil en fonction du type de tâche et du volume de données :
get: Récupère les métadonnées et la séquence pour une entrée spécifique. Optimal pour une seule accession connue.- Accède également aux données historiques UniSave (utiliser
--dataset unisave), indispensable pour réconcilier les données d'anciennes versions ou identifier pourquoi une accession autrefois valide n'apparaît plus dans les résultats de recherche.
- Accède également aux données historiques UniSave (utiliser
search: Recherche des entrées correspondant à une requête. Optimal pour l'exploration et la découverte.- Utilisez avec
--limit 5pour vérifier si une requête retourne les protéines attendues avant de vous engager dans un téléchargement plus volumineux. - Effectue automatiquement la pagination si les résultats dépassent 500 entrées pour fournir un téléchargement stable.
- Attention : Pour une recherche paginée, TXT et autres formats ne sont pas fiables avec
--limitcar il s'applique aux lignes, non aux entrées. - Consultez la Documentation des Champs de Requête de Recherche.
- Utilisez avec
stream: Diffuse toutes les entrées correspondantes. Optimal pour la récupération en masse de grands jeux de données (jusqu'à 10 000 000 d'entrées).- Ne supporte PAS
--limit; retourne toujours l'ensemble complet des résultats. - Utilisez
searchavec--limitsi vous avez besoin d'un sous-ensemble.
- Ne supporte PAS
count: Compte les entrées correspondant à une requête. Optimal pour répondre à des questions de dénombrement direct ou pour une estimation initiale avant d'exécuter unesearchou unstreamcomplet.sparql: Exécute des requêtes de graphe pour la découverte complexe. Optimal pour le dénombrement, les correspondances de séquences exactes et les requêtes multi-bases de données.- Consultez les Exemples SPARQL.
map: Convertit les ID entre UniProt et plus de 100 bases de données. Optimal pour les tâches de mappage d'ID.- Consultez la Documentation de Mappage d'ID.
searchvs.map: Essayez d'abordsearchavant de recourir àmapsi ce n'est pas explicitement demandé par l'utilisateur. Par exemple, un ID externe peut être recherchable dans UniParc mais échouer à mapper vers UniProtKB.
Flux de Travail
Flux de Travail Typique de Recherche Protéique
Copiez cette liste de contrôle et suivez la progression :
- [ ] Étape 1 : Identifier la/les protéine(s) cible(s) et l'organisme/les organismes.
- [ ] Étape 2 : Rechercher dans UniProtKB les entrées révisées (
reviewed:true). - [ ] Étape 3 : Si aucune entrée révisée, rechercher les non révisées ou utiliser UniParc pour la découverte de séquences.
- [ ] Étape 4 : Mapper les ID externes (ex. Ensembl, PDB) vers les Accessions UniProt si nécessaire.
- [ ] Étape 5 : Récupérer les métadonnées fonctionnelles ou la séquence au format souhaité (JSON, FASTA).
Gestion des Recherches Infructueuses (ex. Recherche de Gène chez Organismes Non Modèles)
Si une requête directe échoue (ex. gene:SYMBOL) :
- Passer au Nom de la Protéine : Rechercher le nom commun de la protéine (ex.
protein_name:Alpha-crystallin A). - Utiliser UniParc : Rechercher dans l'ensemble de données UniParc, qui intègre les séquences de l'ensemble du vivant, même si elles ne sont pas entièrement annotées dans UniProtKB.
- Vérifier les Orthologues/Canoniques : Résoudre d'abord l'ortholog Humain/Souris pour trouver la dénomination/mnémonique correcte.
Priorités de Récupération en Masse
[!IMPORTANT] Préférez toujours
streamousparqlpour les données en masse.searchconvient pour l'exploration ; si les résultats dépassent 500 entrées, il effectue automatiquement la pagination pour fournir un téléchargement stable.
- Priorité 0 :
count: Vérifiez TOUJOURS le nombre de résultats avant d'exécuter unesearchou unstream. - Priorité 1 :
stream: Méthode principale pour la récupération de données en masse (jusqu'à 10 M d'entrées). Ne supporte PAS--limit; retourne toujours tous les résultats. - Priorité 2 :
sparql: Optimal pour les filtres complexes et les correspondances exactes lors de la récupération.
Recherche Basée sur la Séquence (Correspondance Exacte)
[!IMPORTANT] Utilisez SPARQL pour rechercher une protéine par sa séquence d'acides aminés complète. Le endpoint
/searchde l'API REST ne supporte pas les recherches directes de chaînes de séquences. Pour toute correspondance non-exacte, utilisez des skills spécialisées de recherche de similarité de séquence. Utilisez UniParc si vous ne trouvez pas la requête dans UniProt.
Modèle de Requête SPARQL (UniProt) :
PREFIX up: <http://purl.uniprot.org/core/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?protein ?name WHERE {
?protein a up:Protein ;
up:sequence/rdf:value "SEQUENCE_HERE" .
OPTIONAL {
?protein up:recommendedName/up:fullName ?name .
}
}
Modèle de Requête SPARQL (UniParc) :
PREFIX up: <http://purl.uniprot.org/core/>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT ?uniparc ?val WHERE {
GRAPH <http://sparql.uniprot.org/uniparc> {
?uniparc a up:Sequence ;
rdf:value ?val .
FILTER (?val = "SEQUENCE_HERE")
}
}
Dénombrement Efficace des Entrées
[!IMPORTANT] Utilisez
countouSPARQLpour dénombrer les entrées (ex. « Combien de protéines chez l'Humain ? »).
Modèle de Dénombrement (Protéines par Organisme) :
PREFIX up: <http://purl.uniprot.org/core/>
PREFIX taxon: <http://purl.uniprot.org/taxonomy/>
SELECT (COUNT(?protein) AS ?count) WHERE {
?protein a up:Protein ;
up:reviewed true ;
up:organism taxon:9606 .
}
Syntaxe de Recherche REST
- Pas de Virgules dans les Listes : Les virgules sont traitées comme des littéraux. Utilisez
ORen majuscules pour séparer les éléments.- Groupé :
accession:(P12345 OR P67890) - Répété :
accession:P12345 OR accession:P67890
- Groupé :
- Espace = ET : Ex.
gene:p53 humanrecherche les deux.
Commandes Exemples
Ci-dessous se trouvent des commandes exemples pour chaque mode de uniprot_tools.py.
Dénombrer le nombre total d'entrées pour une requête donnée.
uv run scripts/uniprot_tools.py count "taxonomy_id:9606"
Rechercher des entrées.
uv run scripts/uniprot_tools.py search "gene:p53 AND reviewed:true" --limit 5
Récupérer une seule entrée par accession.
uv run scripts/uniprot_tools.py get P04637
Récupérer une Entrée Historique/Supprimée (UniSave).
uv run scripts/uniprot_tools.py get P04637 --dataset unisave
Diffuser les grands jeux de résultats pour la récupération en masse (retourne TOUTES les entrées correspondantes, pas de support --limit).
uv run scripts/uniprot_tools.py stream "taxonomy_id:9606 AND reviewed:true" --format tsv --fields accession,gene_names > human_reviewed.tsv
Mapper les ID d'une base de données à une autre.
uv run scripts/uniprot_tools.py map "P04637" --from_db UniProtKB_AC-ID --to_db Gene_Name
Exécuter des requêtes de graphe avec SPARQL.
uv run scripts/uniprot_tools.py sparql 'PREFIX up: <http://purl.uniprot.org/core/> SELECT ?protein WHERE { ?protein a up:Protein ; up:reviewed true . } LIMIT 5'
Erreurs Courantes
- Utiliser
name:au lieu deprotein_name::name:n'est pas un terme de requête supporté, utilisezprotein_name:à la place. - Ignorer UniParc : Les organismes non modèles peuvent n'exister que dans UniParc.
- Confondre Accession avec UPI : Les Accessions UniProtKB (ex.
P04637) sont liées aux métadonnées fonctionnelles ; les ID UniParc (UPI...) sont réservés aux séquences uniquement. Vous pouvez trouver les références croisées entre les ID UniParc et les Accessions UniProtKB en utilisant l'outil de Mappage d'ID. - Utiliser UniProtKB-AC comme Cible dans le Mappage d'ID : Utilisez
UniProtKBà la place. - Abandonner les Requêtes Complexes : Si une requête de recherche complexe échoue, essayez d'utiliser SPARQL au lieu d'abandonner.
- Utiliser les ID Sans Vérifier la Signification : NE SUPPOSEZ JAMAIS que vous connaissez la signification d'un ID (ex. mot-clé, terme GO, ID Pfam, etc.). CONSULTEZ TOUJOURS la description/signification en langage naturel d'un ID dans UniProt avant de l'utiliser pour une recherche afin de vous assurer qu'il correspond à votre terme de recherche prévu.
- Ignorer le Bruit de Citation dans les Recherches Larges : Les recherches de texte larges (
search "term") retournent fréquemment des faux positifs (ex. protéines de maintenance courantes) car UniProt recherche les métadonnées complètes, y compris les titres de publications. PRÉFÉREZ TOUJOURS les filtres spécifiques aux champs commecc_function:ouprotein_name:pour la découverte fonctionnelle. - Oublier de Citer les Termes de Recherche Courts : Les termes courts non cités (ex.
lanM) peuvent correspondre à des sous-chaînes dans les noms d'organismes (ex. Lancefieldella) ou d'autres champs. Utilisez des guillemets et des préfixes de champ (ex.gene:lanM) pour isoler les vrais résultats. - Manipuler les Séquences Protéiques Directement : Utilisez toujours du code et des outils pour les opérations basées sur les séquences. N'essayez pas d'éditer, tronquer ou modifier manuellement les séquences protéiques.
- Surutiliser Search pour les Données en Masse : N'UTILISEZ PAS
searchpour récupérer des millions d'entrées sistreamousparqlpeuvent faire le travail. Le streaming est plus efficace pour les très grands jeux de données. Notez questreama une limite stricte de 10 000 000 sorties et ne supporte PAS--limit. - Oublier de Vérifier le Volume de Données : EFFECTUEZ TOUJOURS un
countavant d'exécuter unesearchsans--limitou avant d'utiliserstream. Les requêtes illimitées peuvent prendre longtemps et consommer des ressources importantes si des millions d'entrées sont retournées. - Utiliser
--limitavecstream: La commandestreamne supporte PAS--limit. Si vous avez besoin d'un nombre limité de résultats, utilisezsearchavec--limità la place. - Oublier la Notice de Licence : N'oubliez pas de déclarer que la Base de Données UniProt a été utilisée et de conseiller à l'utilisateur de consulter les conditions de licence lors de la présentation des résultats pour la première fois. Même si la tâche est concise, cette attribution est obligatoire dans la première réponse contenant des données UniProt.
Documents de Référence
- Exemples SPARQL
- Documentation des Champs de Requête de Recherche
- Documentation de Mappage d'ID
- Docs Preuves UniProt
- Endpoints API Sous-jacents (Utilisés par
scripts/uniprot_tools.py) :get,search,stream,count->rest.uniprot.org/{dataset}/map->rest.uniprot.org/idmapping/sparql->sparql.uniprot.org/sparqlget --dataset unisave->rest.uniprot.org/unisave/