首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从pubmed in中提取Pubmed中存放的文章的标题

从pubmed in中提取Pubmed中存放的文章的标题
EN

Stack Overflow用户
提问于 2019-12-09 14:38:13
回答 1查看 55关注 0票数 0

我正在尝试使用Pubmed IDs (我有一个名为‘ids’的列表)为Pubmed中存放的一些文章提取标题。大约有650K的Pubmed ID。代码看起来运行得很好,没有抛出任何错误。但是代码只提取了一小部分文章的标题,而不是全部。

代码如下:

代码语言:javascript
复制
Entrez.email = "xyz@enginebio.com"

for i in range(0,len(ids),10000):

    if i%10000 == 0:   # for me to track the progress of the script
        print (i)

    idlist=ids[i:i+10000]
    handle = Entrez.efetch(db="pubmed", id=idlist, retmode="xml")

    try:
        record = Entrez.read(handle)
    except:
        continue

    title={}

    for j in range(len(record["PubmedArticle"])):

        pmid=record["PubmedArticle"][j]['MedlineCitation']['PMID'][:]
        if "Abstract" in record["PubmedArticle"][j]['MedlineCitation']['Article'].keys():
            title[pmid]=record["PubmedArticle"][j]['MedlineCitation']['Article']['ArticleTitle'].encode('ascii', 'ignore').decode('ascii')

    # save article titles
    subfile='article_titles_'+str(i)+'.txt'
    ar = pd.DataFrame.from_dict(title, orient="index")
    ar.to_csv(subfile,sep="\t",header=None)

任何建议都会很有用。谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-12-10 18:10:18

我无法复制您的示例,因为我没有您的Pubmed ID列表。知道你恢复了大约650K的It中有多少也是很有趣的,如果你正在恢复639K的标题(可能你的一些it只是丢失了),或者10K,那就不一样了。我自己试过一个小例子,它确实检索到了标题。我想可能有一些身份证是无效的。您可以尝试执行较小的批次,也可以:

  1. except: continue将隐藏可能由空句柄引起的任何问题(如果查询结果为空)。如果len(record["PubmedArticle"])小于您的批处理大小,我会尝试检查exceptions.
  2. Throw并给出一个警告。这样你就可以缩小你可能缺少的ID的范围。
  3. 如果注册表中有Abstract字段,你只是将标题添加到你的title字典中。您确定所有记录都是这样的吗?我尝试过的案例确实适用,但可能并不是所有条目都有这一点。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59243700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档