> Modules non standards > Biopython > Utilisation avec Entrez
Utilisation avec Entrez
Le module Entrez permet d'accéder aux bases du NCBI (à la fois les bases type séquences et autre, mais aussi PubMed par exemple).
Pour utiliser le module, faire : from Bio import Entrez.
Recommandations pour utiliser le module :
Principe général : la plupart des requêtes récupère les infos sous forme de XML, et il y a un parseur intégré que l'on peut appeler avec Entrez.read qui transforme le xml en structure python (avec dictionnaires et listes).
Pour récupérer la liste de toutes les bases Entrez :
- handle = Entrez.einfo(); result = Entrez.read(handle); handle.close()
- le résultat est un dictionnaire avec une seule clef 'DbList' et comme valeur la liste de toutes les bases : ['pubmed', 'protein', 'nuccore', ...]
Pour récupérer des infos sur une base Entrez :
Pour effectuer une requête :
- handle = Entrez.esearch(db = 'pubmed', term = 'acetylcholine[TITL] AND receptor[TIAB] AND chang*[AUTH]', retmax = 10); result = Entrez.read(handle); handle.close() : effectue une requête exactement comme avec l'interface utilisateur en restreignant si nécessaire certains termes à certains champs.
- on peut utiliser les booléens AND, OR, NOT (par défaut, c'est AND).
- on peut utiliser la troncation de mot avec un '*'.
- retmax : permet de limiter le résultat à un certain nombre de records. attention : par défault, il est fixé à 20 pour PubMed si non indiqué, donc l'augmenter si nécessaire.
- le résultat est un dictionnaire contenant notamment les clefs :
- Count : nombre d'ids existants correspondant à la requête.
- RetMax : nombre d'ids retournés, qui peut être plus petit si limité par retmax.
- IdList : la liste des ids des records retournés, par exemple le PMID dans le cas de PubMed.
- attention : si il y a des caractère spéciaux dans la requête, il faut les échapper en html.
Pour récupérer un résumé de différentes entrées :
- handle = Entrez.esummary(db = 'pubmed', id = '25632877,1322090'); result = Entrez.read(handle); handle.close()
- on peut mettre un seul id ou plusieurs séparés par une virgule.
- le résultat est une liste de dictionnaires avec comme clefs : Id, Title, FullJournalName, AuthorList, et beaucoup d'autres (mais pas l'abstract pour PubMed).
- attention : si trop d'ids (plus de 200 environ), utiliser epost pour faire un POST plutôt qu'un GET.
Pour récupérer des entrées complètes, par exemple pour PubMed :
- handle = Entrez.efetch(db = 'pubmed', id = '25632877,1322090', rettype = 'medline', retmod = 'text'); result = handle.read(); handle.close() : recupère le résultat sous forme de texte avec des champs.
- handle = Entrez.efetch(db = 'pubmed', id = '25632877,8663316', rettype = 'abstract', retmod = 'xml'); result = Entrez.read(handle); handle.close() : récupère le résultat sous forme de xml qui est parsé :
Récupération d'un grand nombre d'entrées :
- on fait d'abord un post avec la liste des ids et on récupère en retour le cookie (sous forme d'environnement web) et un id de query :
handle = Entrez.epost(db = 'pubmed', id = '25632877,8663316')
result = Entrez.read(handle)
webEnv = result['WebEnv']
queryKey = result['QueryKey']
- puis, on réutilise cet environnement pour demander les entrées correspondantes :
handle = Entrez.efetch(db = 'pubmed', webenv = webEnv, query_key = queryKey,
rettype = 'abstract', retmod = 'xml')
result = Entrez.read(handle)
handle.close()
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert