Как создать цикл для тестирования нескольких запросов в PubMed с использованием BioPython? - PullRequest
0 голосов
/ 16 июня 2019

В настоящее время я пытаюсь сформировать цикл, в котором я могу тестировать различные запросы в PubMed.Я использовал Entrez и Medline BioPython для настройки одного запроса (см. «СРОК»).Однако я не очень хорошо умею создавать циклы или функции для тестирования нескольких запросов.Есть ли способ сделать это эффективно?

from Bio import Entrez, Medline

#Initialisation
Entrez.email = "example@gmail.com"

TERM= "infant*[mh] AND colic[majr]"
TERM2="infant AND colic AND herbal[mh]"
TERM3 = "test"

handle = Entrez.egquery(term=TERM)
record = Entrez.read(handle)
for row in record["eGQueryResult"]:
    if row["DbName"]=="pubmed":
        print(row["Count"])

#filtering process
handle = Entrez.esearch(db="pubmed",
                        term=TERM,
                        retmax='100',
                        sort='relevance',
                        retmode='xml',
                        mindate="2016/11",
                        maxdate="2019/02")
record = Entrez.read(handle)
handle.close()
idlist = record["IdList"]
for i in idlist:
    if i == '27631535':
        idlist.remove(i)

print(idlist)

#downloading the corresponding MEDLINE records
handle = Entrez.efetch(db="pubmed",
                       id=idlist, rettype="medline", retmode="json")
records = Medline.parse(handle)
records = list(records)
output = []
for record in records:
    #if record[PMID] == '27631535':
        #records.remove(record)
    print("title:", record.get("TI", "?"))
    print("PMID:", record.get("PMID", "?"))
    print("MeSH Terms:", record.get("MH","?"))
    #print("abstracts:", record.get("AB", "?"))
    output.append(record["TI"]["PMID"]["MH"])
    print("")

with open('bp_results.txt', 'w') as f:
    for record in output:
        f.write("%s\n" % record)
...