【问题标题】:Biopython fetch updated databaseBiopython 获取更新的数据库
【发布时间】:2014-07-03 07:12:10
【问题描述】:

有没有办法,使用 Biopython 找出数据库的更新状态?

我正在尝试做这样的事情;

  1. 我有一个包含 100000 个医学术语的列表

  2. 7 月 1 日,我检索了所有 100000 个术语的 ID 列表。

  3. 今天(7 月 3 日)我想知道是否已为 100000 个术语中的任何一个添加了新文章。

一种方法是重复整个过程(获取所有 100000 个术语),如下所示;

'termlist' = ['Malaria', 'Flu' ,...........]

for term in termlist:
    handle = Entrez.esearch(db = "pubmed", term = 'Malaria')
    record = Entrez.read(handle)
    record['Count']

有没有办法只找出今天在 pubmed 中更新的条款?

如果我的术语是更新列表的一部分,我只需搜索更新的术语,而不是搜索所有 100000 个术语。

【问题讨论】:

    标签: biopython pubmed


    【解决方案1】:

    这里有与搜索相关的所有参数:

    http://www.ncbi.nlm.nih.gov/books/NBK25499/#chapter4.ESearch

    您对:reldate、datetype、mindate 和 maxdate 感兴趣。如果您将这些参数传递给 esearch 命令,Biopython 只需将它们插入 NCBI 查询。

    # Retrieve the entries of the last 3 days
    handle = Entrez.esearch(db = "pubmed", term = 'Malaria',
                            datetype = "edat", reldate = 3)
    
    # Retrieve the entries between two dates:
    handle = Entrez.esearch(db = "pubmed", term = 'Malaria',
                            mindate = "2014/07/03", maxdate = "2014/07/01")
    

    此外,您可以通过使用以下语法连接术语来加快查询过程:

    term = "Malaria+OR+Cancer+OR+Anopheles"
    

    【讨论】:

    • 是的。但是有没有办法获取今天更新的术语列表而不是检查每个术语的状态?在这种情况下,“OR”选项实际上对我没有帮助。
    • 我不认为它是这样工作的。 pubmed 数据库没有每天“更新”的数百万或数十亿个术语的列表。您使用“esearch”在数据库中查询一个术语,并将结果与​​之前的结果进行比较。它们可以缓存最常用的搜索,但您必须再次查询数据库才能获得缓存的结果。
    • 感谢您的努力。我想那时没有其他选择了。
    猜你喜欢
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 2013-03-26
    • 1970-01-01
    相关资源
    最近更新 更多