Python AlignIO在FASTA文件中找不到记录

Python AlignIO在FASTA文件中找不到记录,python,biopython,Python,Biopython,我想开始使用Biopython来对齐序列文件,但库一直给我错误。我的代码如下: from Bio import AlignIO import Bio alignment = AlignIO.read("A_prot.fasta","fasta") print alignment >>> from Bio import SeqIO >>> handle = open("A_prot.fasta", "rU") >>> print handl

我想开始使用Biopython来对齐序列文件,但库一直给我错误。我的代码如下:

from Bio import AlignIO
import Bio

alignment = AlignIO.read("A_prot.fasta","fasta")
print alignment
>>> from Bio import SeqIO
>>> handle = open("A_prot.fasta", "rU")
>>> print handle
<open file 'A_prot.fasta', mode 'rU' at 0x13fc1d8>
>>> 
我确保将_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

您可能会得到ValueError的一个原因是:在句柄中找不到记录是因为您计算机上的文件实际上是空的

这就是你在上面的评论中链接到的我所发生的事情

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

peterjc很好地指出了AlignIO采用的对齐序列必须具有相同的长度。如果您想读取包含未对齐序列的fata,可以使用SeqIO,如下所示:

from Bio import AlignIO
import Bio

alignment = AlignIO.read("A_prot.fasta","fasta")
print alignment
>>> from Bio import SeqIO
>>> handle = open("A_prot.fasta", "rU")
>>> print handle
<open file 'A_prot.fasta', mode 'rU' at 0x13fc1d8>
>>> 
在这种情况下,记录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=[])
>>> 

有关更多信息,请参阅和文档

您是否检查了fasta文件的格式?fasta文件包含哪些内容?蛋白质序列?还是一个比对?它包含蛋白质序列我已经测试过你的代码它对我有效。>>>从Bio导入AlignIO>>>alignment=AlignIO.readresult\u cbpa.fasta,fasta>>打印对齐单字母字母字母表对齐502行781列扫描您发布的fasta文件示例再现了问题?您的第一个示例实际上并没有解析fasta文件。对于使用字典的第二个示例,考虑到条目的数量,Bio.SeqIO.index函数在这里可能更合理。