使用biopython编写fasta文件时出错

时间:2014-10-30 07:02:30

标签: sequence biopython fasta

我使用以下代码将fasta序列写入文件。

from Bio import SeqIO
sequences = "KKPPLLRR" # add code here
output_handle = open("example.fasta", "w")
SeqIO.write(sequences, output_handle, "fasta")
output_handle.close()

我收到以下错误:

self = <Bio.SeqIO.FastaIO.FastaWriter object at 0x21c1d10>, record = 'M'
def write_record(self, record):
    """Write a single Fasta record to the file."""
    assert self._header_written
    assert not self._footer_written
    self._record_written = True

    if self.record2title:
        title = self.clean(self.record2title(record))
    else:
      id = self.clean(record.id)
    AttributeError: 'str' object has no attribute 'id'

有人可以为此错误提供解决方案吗?

1 个答案:

答案 0 :(得分:3)

该错误告诉您sequences不是一组SeqRecord个对象。您无法将某些字符串传递给SeqIO.write。那应该怎么做:

from Bio.Seq import Seq
from Bio.SeqRecord import SeqRecord
from Bio.Alphabet import IUPAC


sequences = []
record = SeqRecord(Seq("KKPPLLRR", IUPAC.protein), id="My_protein")
sequences.append(record)

现在您可以将sequences传递给SeqIO.write。如果你有很多序列,你可以创建一些可以传递给SeqIO.write的生成器:

def generator_of_sequences():
    for string_seq in some_source_of_sequences:
        yield SeqRecord(Seq(string_seq, IUPAC.protein), id="Some_ID")

SeqIO.write(generator_of_sequences(), output_handle, "fasta")