首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >详解 Python 批量下载文献情报

详解 Python 批量下载文献情报

作者头像
生信菜鸟团
发布2021-04-29 11:29:20
发布2021-04-29 11:29:20
1.4K00
代码可运行
举报
文章被收录于专栏:生信菜鸟团生信菜鸟团
运行总次数:0
代码可运行

了解一个研究方向和相关研究领域的大佬,收集文献是必不可少的操作。 作为一名生信人,我们可以通过编程来自动化实现以上流程,今后只需要一行代码,研究领域情报尽在囊中。

运行环境准备

1. 构建Python环境

还不熟悉 Python 环境搭建的小伙伴,参考之前发的文章

2. Biopython 安装

在终端执行

代码语言:javascript
代码运行次数:0
运行
复制
pip install biopython

自动化下载文献资料

1. 基础脚本

接下来通过BioPython提供的接口来实现快速的文献情报的收集下载。 下面例子是利用PubMed数据库来查询所有关于小鼠的文献资料,为了展示基础的流程,这里采用逐条下载的方式。

代码语言:javascript
代码运行次数:0
运行
复制
from Bio import Entrez
from Bio import Medline

# 参数设置
Entrez.email = "your_email@163.com"
Entrez.tool  = "PaperScript"

# 用 esearch 在 pubmed 库中搜索关键字为 "mouse" 的文章
# RetMax 这个参数为每次返回的最大个数,因此如果把Count的值赋给RetMax就会获取全部的mouse的文章,这里为实例设置为100
hd_esearch = Entrez.esearch(db="pubmed", term="mouse", RetMax="100")
read_esearch = Entrez.read(hd_esearch)
idlist = read_esearch["IdList"]
print ("Total: ", read_esearch["Count"])
# 用 efetch下载
hd_efetch = Entrez.efetch(db="pubmed", id=idlist, rettype="medline", retmode="text", )
# 用 Medline 来解析
parse_medline = Medline.parse(hd_efetch)
with open("res/mouse_pubmed.xls", "w") as file:
    file.write("title\tauthors\tsource\tPubMed\n")
    for i, ele in enumerate(list(parse_medline)):
        line = ele['TI'] + "\t" + ",".join(ele['AU']) + "\t" + ele['SO'] + "\t" + ele['PMID'] + "\n"
        file.write(line)
        print (i, line)
2. 提高脚本的效率

这里我们来查询近一年的关于 Sus scrofa 的综述。

代码语言:javascript
代码运行次数:0
运行
复制
from Bio import Entrez
# 参数设置
Entrez.email = "example@163.com"
Entrez.tool  = "exampleScript"

# 搜索
hd_esearch = Entrez.esearch(db="pubmed", term="Sus scrofa", reldate=365, ptyp="Review", usehistory="y")
read_esearch = Entrez.read(hd_esearch)
total = int(read_esearch["Count"])
webenv = read_esearch["WebEnv"]
query_key = read_esearch["QueryKey"]

# 这里演示设定total为 10, 实际文献数量不止这么多
total = 10
step = 5
print("Result items: ", total)
with open("res/recent_review_sus_scrofa.txt", "w") as file:
    for start in range(0, total, step):
        print("Download record %i to %i" % (start + 1, int(start+step)))
        hd_efetch = Entrez.efetch(db="pubmed", retstart=start, retmax=step, webenv=webenv, query_key=query_key, rettype="medline", retmode="text")
        file.write(hd_efetch.read())

自动化获取物种谱系

附赠一个小彩蛋:如何自动化查询某个物种的分类学位置?

下面的例子是查询我们人类在分类学中的位置。

代码语言:javascript
代码运行次数:0
运行
复制
# =====查看物种谱系=====
from Bio import Entrez

# 参数设置
Entrez.email = "your_email@163.com"
Entrez.tool  = "TaxScript"

# 在 Taxonomy 库中搜索 Homo sapiens
hd_esearch = Entrez.esearch(db="Taxonomy", term="Homo sapiens")
read_esearch = Entrez.read(hd_esearch)
id = read_esearch["IdList"][0]
hd_eftech = Entrez.efetch(db="Taxonomy", id=id, retmode="xml")
read_eftech = Entrez.read(hd_eftech)
print(read_eftech[0]["Lineage"])

NCBI 提供了很多生物相关数据库,用法几乎差不多,可以根据自身研究或者感兴趣的方向自行选择。

参考

官方文档:https://biopython-cn.readthedocs.io/zh_CN/latest/ 我的博客:https://blog.csdn.net/u011262253/article/details/88542879


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信菜鸟团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 运行环境准备
    • 1. 构建Python环境
    • 2. Biopython 安装
  • 自动化下载文献资料
    • 1. 基础脚本
    • 2. 提高脚本的效率
  • 自动化获取物种谱系
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档