2014-10-30 2 views
2

Я использовал следующий код для записи последовательности fasta в файл.Ошибка при записи файла fasta с использованием biopython

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' 

Может кто-нибудь обеспечить решение этой ошибки?

ответ

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") 
Смежные вопросы