0

我正在尝试在 pubmed 中输入 200 多个条目,以记录作者发表的文章数量,并通过包括他/她的导师和机构来优化搜索。我曾尝试使用 biopython 和 xlrd (代码如下)来做到这一点,但我一直得到 0 结果的所有三种查询格式(1.按名称,2.按名称和机构名称,3.按名称和导师姓名)。是否有我可以执行的故障排除步骤,或者在使用下面指示的关键字在 pubmed 上进行搜索时,我应该使用不同的格式吗?

输入查询的示例输出;search_term 是带有输入查询列表的链表。

print(*search_term[8:15], sep='\n')


[text:'Andrew Bland', 'Weill Cornell Medical College', text:'David Cutler MD']
[text:'Andy Price', 'University of Alabama at Birmingham School of Medicine', text:'Jason Warem, PhD']
[text:'Bah Chamin', 'University of Texas Southwestern Medical School', text:'Dr. Timothy Hillar']
[text:'Eduo Cera', 'University of Colorado School of Medicine', text:'Dr. Tim']

用于生成上述输入查询和在 Pubmed 上搜索的代码:

Entrez.email = "mollyzhaoe@college.harvard.edu"
for search_term in search_terms[8:55]:
    handle = Entrez.egquery(term="{0} AND ((2010[Date - Publication] : 2017[Date - Publication])) ".format(search_term[0]))

    handle_1 = Entrez.egquery(term = "{0} AND ((2010[Date - Publication] : 2017[Date - Publication])) AND {1}".format(search_term[0], search_term[2]))

    handle_2 = Entrez.egquery(term = "{0} AND ((2010[Date - Publication] : 2017[Date - Publication])) AND {1}".format(search_term[0], search_term[1]))

    record = Entrez.read(handle)
    record_1 = Entrez.read(handle_1)
    record_2 = Entrez.read(handle_2)
    pubmed_count = ['','','']
    for row in record["eGQueryResult"]:
        if row["DbName"] == "pubmed":
            pubmed_count[0] = row["Count"]

    for row in record_1["eGQueryResult"]:
        if row["DbName"] == "pubmed":
            pubmed_count[1] = row["Count"]

    for row in record_2["eGQueryResult"]:
        if row["DbName"] == "pubmed":
            pubmed_count[2] = row["Count"]
4

1 回答 1

1

检查你的缩进,很难知道哪个部分属于哪个循环。

如果您想排除故障,请尝试打印您的egquery,例如

print("{0} AND ((2010[Date - Publication] : 2017[Date - Publication])) ".format(search_term[0]))

并将输出粘贴到 pubmed 看看你得到了什么。也许稍微修改一下,看看哪个搜索词会导致问题。

您的输入格式有点难以猜测。打印查询并确保您获得正确的搜索值。

对于作者姓名,尽量去掉学术头衔,PubMed 可能会将它们与首字母混淆,例如 House MD,可能是 Mark David House。

于 2016-10-20T22:14:01.403 回答