0

私のコードは次のようになります。

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()

最後から 2 番目の行で、次のエラーが表示されます。

ValueError: No records found in handle

私のファイルは問題ないようです - 空でも何でもありません。たくさんのレコードがあり、私が知る限り、それは正しい形式です。私は正確に何を間違っていますか?

これが他のデータベース、たとえば「ヌクレオチド」で機能することに気付きました。それはPubmedの問題ですか?それには別のフォーマットが必要ですか?ありがとう。

4

1 に答える 1

0

間違った形式を解析しようとしています。「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"])

出力

Exploiting the CRISPR/Cas9 System for Targeted Genome Mutagenesis in Petunia.
于 2016-04-19T15:09:36.087 に答える