微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

RISmed和大型ish数据集的问题

如何解决RISmed和大型ish数据集的问题

RISmed(从技术上讲是EUtilsGet)已决定是有问题的。尝试从约3000个PMID下载标题会导致错误

Error in h(simpleError(msg,call)) : 
  error in evaluating the argument 'object' in selecting a method for function 'YearPubmed': cannot open the connection to 'https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?

我不包含示例代码,因为该问题是偶发性的(并且如果该问题是由于过多的查询导致的,我不想触发试图复制和使NCBI服务器饱和的人们的攻击!)

我怀疑这-可能是由于试图在单个请求中推送这么多PMID,但就像我说的那样,这是零星的。...它有时确实工作,现在比过去少了。

另一种选择可能是分块下载,或者使用entrez及其网络历史记录功能,但是在不知道为什么RISmed EUtilsGet令人窒息的情况下,我不相信这些方法也不会失败。

解决方法

API文档说:

可以传递给ESummary的UID的数量没有设置的最大值,但是如果要提供大约200个以上的UID,则应使用HTTP POST方法发出请求。

但这在RISmed软件包的代码中没有兑现。 EUtilsGet函数调用EUtilsSubGet,它只是折叠ID。这是代码的开头:

RISmed:::EUtilsSubGet
# the ::: operator will sometimes retrieve non-exported code.
function (ids,type = "efetch",db = "pubmed") 
{
    FetchURL <- EUtilsURL(type,db = db)
    IDStr <- collapse("id=",paste(ids,collapse = ","))
    EUtilsFetch <- collapse(FetchURL,IDStr)
 Remainer snipped

因此,您可能不经意间发送的请求是API承诺要处理的时间的10倍以上。您可以要求维护者提供增强功能,该增强功能遵循API搜索另一个符合发布参数的软件包的要求。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。