Entrez和SeqIO“在handle中找不到记录”

2024-07-03 05:40:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我的代码如下:

import re
from Bio import SeqIO
from Bio import Entrez

Entrez.email = "...@..." # My e-mail address

handle1 = Entrez.efetch(db="pubmed", id=pmid_list_2010, rettype="gb", retmode="text")
data1 = handle1.read()
handle1.close()
handle2 = Entrez.efetch(db="pubmed", id=pmid_list_2011, rettype="gb", retmode="text")
data2 = handle2.read()
handle2.close()
handle3 = Entrez.efetch(db="pubmed", id=pmid_list_2012, rettype="gb", retmode="text")
data3 = handle3.read()
handle3.close()
handle4 = Entrez.efetch(db="pubmed", id=pmid_list_2013, rettype="gb", retmode="text")
data4 = handle4.read()
handle4.close()
handle5 = Entrez.efetch(db="pubmed", id=pmid_list_2014, rettype="gb", retmode="text")
data5 = handle5.read()
handle5.close()
handle6 = Entrez.efetch(db="pubmed", id=pmid_list_2015, rettype="gb", retmode="text")
data6 = handle6.read()
handle6.close()

out_handle = open("test2.gb", "w")
out_handle.write(data1)
out_handle.write(data2)
out_handle.write(data3)
out_handle.write(data4)
out_handle.write(data5)
out_handle.write(data6)
out_handle.close()

in_handle = open("test2.gb", "r")
record = SeqIO.read(in_handle,"genbank")
in_handle.close()

倒数第二行给我的错误是:

^{pr2}$

我的文件看起来很好,不是空的或者什么的。有很多记录,据我所知,它的格式是正确的。我到底做错了什么?在

我注意到这可以与其他数据库一起工作,例如“nuceleotide”。这是Pubmed的问题吗?这需要不同的格式吗?谢谢。在


Tags: textidclosereaddbentrezoutlist
1条回答
网友
1楼 · 发布于 2024-07-03 05:40:33

您试图分析错误的格式。查询“pubmed”数据库时,只接收rettypes medline、uilist或abstract。然而,您需要Genbank rettype,这在本文中没有任何意义。在

相反,您可以使用Medline解析器:

from Bio import Medline

h1 = Entrez.efetch(db="pubmed",
                   id=["26837606"],
                   rettype="medline",
                   retmode="text")

for record in Medline.parse(h1):
    print(record["TI"])

输出

^{2}$

相关问题 更多 >