#!/usr/bin/env python # -*-coding:Utf-8 -* #========================================================================================== from Bio import Entrez #========================================================================================== # Quelques exemples de parametres pour les fonctions "esearch", "esummary" et autres de Eutils - NCBI : # db=pubmed : recherche effectuee dans la base de donnees PubMed / Autres exemples : db=nucleotide ou db=structure ou db=taxonomy # db=protein&term=16000:60000[molecular+weight] : recherche dans la base de donnees "Protein" de proteines de masses molaires entre 16 kDa et 60 kDa # retmode=xml : renvoie une chaine au format XML - les methodes "read" et "parse" necessitent xml # retmode=json : renvoie une chaine au format JSON (JavaScript Object Notation) plus lisible qu'un fichier XML # retmax=10 : renvoie 10 resultats # datetype : les parametres usuels de dates sont "mdat" (modification date), "pdat" (publication date) et "edat" (Entrez date) # sort=relevance : resultats tries par pertinence et non par date (qui est l'option de classement par defaut de PubMed) # field : limite la recherche au champ specifie # term="la requete" => la requete entree dans l'URL directement ou via un formulaire # Voir la syntaxe de TOUS les parametres => https://www.ncbi.nlm.nih.gov/books/NBK25499/ #=============== Obtention des informations a partir de la fonction "esearch" de Eutils du moteur de recherche "Entrez" au NCBI =============================== motCle = input ("Entrez votre mot cle : ") # "motCle" est renvoye dans la fonction "rechercheBiblio()" ci-dessous def rechercheBiblio(motCle): # Definition de la fonction "rechercheBiblio()" Entrez.email = 'adress.mail@toto.com' # Le NCBI exige une adresse e-mail (meme "loufoque") parametresRecherche = Entrez.esearch(db='pubmed',retmax='10',datetype='PDAT',reldate=365,retmode='xml',term = motCle) # On genere l'URL requete au NCBI suivante : https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&retmax=5&datetype=pdat&retmode=xml&term=motCle resultats = Entrez.read(parametresRecherche) # Creation d'un dictionnaire "resultats" : extraction des informations du fichier XML avec l'analyseur ("parser") du module "Entrez" print ("Dictionnaire des resultats :", resultats) print ("\n") # Retour a la ligne nombreTotal = resultats.get('Count') # Extrait la valeur de la cle "Count" print ("Nombre total de resultats :", nombreTotal) print ("\n") global listeIdentifiants # La portee de la variable "listeIdentifiants" est globale = ensemble des parties du programme listeIdentifiants = resultats.get('IdList') # Extrait les valeurs de la cle "IdList" print ("Liste partielle des identifiants PMID :", listeIdentifiants) print ("\n") rechercheBiblio(motCle) # Execution de la fonction "rechercheBiblio()" avec "motCle" comme parametre #=============== Lecture des informations a partir de la fonction "esearch" de Eutils - NCBI =============================== def affichage(listeIdentifiants): # Parametre = variable "listeIdentifiants" => raison pour laquelle cette variable est globale for PMID in listeIdentifiants: information = Entrez.esummary(db='pubmed',id=PMID,retmax='10',datetype='PDAT',reldate=365,retmode='xml') tousLesArticles = Entrez.parse(information) for article in tousLesArticles: print ("Date de l'article :", (article['PubDate'])) print ("Identifiant PMID :", PMID) print ("Titre de l'article :", (article['Title'])) print ("Auteurs :", (article['AuthorList'])) affichage(listeIdentifiants) # Execution de la fonction "affichage()" avec "listeIdentifiants" comme parametre