1

Biopythonを使用してシーケンスファイルを整列させたいのですが、ライブラリからエラーが発生し続けます。私のコードは次のとおりです。

from Bio import AlignIO
import Bio

alignment = AlignIO.read("A_prot.fasta","fasta")
print alignment

A_prot.fastaプログラムと同じディレクトリに配置するようにしましたが、次のようなエラーが表示されます。

Traceback (most recent call last):
  File "bio_seq_align.py", line 5, in <module>
   alignment = AlignIO.read("A_prot.fasta","fasta")
  File "/usr/lib/python2.7/site-packages/biopython-1.61-py2.7-linux-i686.egg/Bio/AlignIO/__init__.py", line 427, in read
raise ValueError("No records found in handle")
ValueError: No records found in handle
4

2 に答える 2

0

peterjcはAlignIO、同じ長さでなければならないアラインメントされたシーケンスを取り込むのに適しています。整列されていないシーケンスを含むファタを読み取りたい場合はSeqIO、次のように使用できます。

>>> from Bio import SeqIO
>>> handle = open("A_prot.fasta", "rU")
>>> print handle
<open file 'A_prot.fasta', mode 'rU' at 0x13fc1d8>
>>> 

シーケンスを辞書に読み込むには、次のようなものを使用できます。

>>> record_dict = SeqIO.to_dict(SeqIO.parse(handle, "fasta"))
>>> print len(record_dict)
2186 # Fasta file contains 2186 entries
>>>  

この場合、IDを記録することがキーになります。特定のキーの使用に関連する情報にアクセスするには、次のようにします。

>>> record_dict['HLA:HLA00001']
SeqRecord(seq=Seq('MAVMAPRTLLLLLSGALALTQTWAGSHSMRYFFTSVSRPGRGEPRFIAVGYVDD...CKV', SingleLetterAlphabet()), id='HLA:HLA00001', name='HLA:HLA00001', description='HLA:HLA00001 A*01:01:01:01 365 bp', dbxrefs=[])
>>> 

詳細については、AlignIOおよび SeqIOのドキュメントを参照してください。

于 2013-03-11T11:46:17.643 に答える
0

「ValueError: No records found in handle」が表示される理由の 1 つは、マシン上のファイルが実際に空だった場合です。

これは、上記のコメントでリンクしたftp://ftp.ebi.ac.uk/pub/databases/ipd/imgt/hla/A_prot.fastaを使用して私に起こることです。

>>> from Bio import AlignIO
>>> align = AlignIO.read("A_prot.fasta", "fasta")
Traceback (most recent call last):
...
ValueError: Sequences must all be the same length

これは予想される結果です - FASTA ファイルはアラインされた配列のセットではありません。アラインメントとしてロードしたい場合は、最初に MUSCLE、Clustal Omega などのアラインメント ツールを実行します。ただし、ファイルと長さの範囲を調べたところ、この例ではそれが賢明であるとは思えません。

>>> from Bio import SeqIO
>>> lengths = set(len(record) for record in SeqIO.parse("A_prot.fasta", "fasta"))
>>> lengths
set([17, 19, 26, 50, 51, 53, 59, 65, 66, 71, 72, 73, 74, ..., 364, 365])
于 2013-03-10T00:29:42.417 に答える