Biopython根据关键词在NCBI上查找文献

Biopython是python的一个库,这个库可以解决很多生物上的问题,使大量的生物数据简单化,是个很好用的包。

对于数据库上的各种信息,有专门的函数处理,不用按照常规的文本处理方法,写大量的代码。比如很常见的报告中展示的参考文献,一般思路是有了文章的PMID,然后通过爬虫的方法,获取这些文章的title,author,source等信息。

在Biopython中有自己独特的解决方法。在NCBI中,搜索与epilepsy有关的文章,并输出相关信息。

from Bio import Entrez
Entrez.email = '[email protected]'  # always tell who you are 
handle = Entrez.egquery(term="epilepsy")
record = Entrez.read(handle)
for row in record["eGQueryResult"]:
    if row["DbName"]=="pubmed":
        print row["Count"]    #total is 143833

可以看到在PubMed数据库中有epilepsy有关的文章有143833,所以取前40个看下输出的信息是什么。

handle = Entrez.esearch(db="pubmed", term="epilepsy", retmax=463)
record = Entrez.read(handle)
idlist = record["IdList"]
print idlist[0:40]

输入上面的PMID,去验证一下是否真的和 epilepsy有关,发现是真的。取前10个测试一下。

parse对于大文件使解析使用,变成一个迭代器。

 id =idlist[0:10]
 from Bio import Medline
 handle = Entrez.efetch(db="pubmed", id=id, rettype="medline",retmode="text")
 records = Medline.parse(handle)
 records = list(records)    #records 是一个迭代器,所以只能访问这些records一次。如果想保存这些records,需要把他们转成列表。
 for record in records:
     print "title:", record.get("TI", "?")
     print "authors:", record.get("AU", "?")
     print "source:", record.get("SO", "?")
     print

Biopython根据关键词在NCBI上查找文献_第1张图片

对于大量的数据,可以通过history来操作。具体见https://biopython-cn.readthedocs.io/zh_CN/latest/cn/chr09.html#sec-entrez-specialized-parsers。

你可能感兴趣的:(生物信息分析,python)