我正在尝试使用以下代码从通过biopython发布的查询中检索搜索结果

from Bio import Entrez
from Bio import Medline

Entrez.email = "[email protected]"
LIM = 3


def search(Term):
    handle = Entrez.esearch(db='pmc', term=Term, retmax=100000000)
    record = Entrez.read(handle)
    idlist = record["IdList"]
    handle = Entrez.efetch(db='pmc', id=idlist, rettype="medline", retmode="text")
    records = Medline.parse(handle)
    return list(records)
mydic=search('(pathological conditions, signs and symptoms[MeSH Terms]) AND (pmc cc license[filter]) ')
print(len(mydic))


无论我尝试多少次,我都会得到10000的输出。尝试了不同的查询,但是我仍然得到10000。当我通过浏览器手动检查多少结果时,我得到了随机数。

到底出了什么问题?如何确保获得最佳结果?

最佳答案

您似乎只在更改esearch限制,但不理会efetch(NCBI似乎默认为10000)。您需要使用retstartretmax参数。

参见《 Biopython教程》中的“使用历史记录搜索和下载摘要”,http://biopython.org/DIST/docs/tutorial/Tutorial.htmlhttp://biopython.org/DIST/docs/tutorial/Tutorial.pdf

关于python - 固定数量的结果biopython,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37121485/

10-12 07:22