2014-12-22 3 views
0

Я пытаюсь изменить заголовок fastq с postfix/1 и/2 и записать его как новый fie. Однако, я получил эту ошибку:Ошибка в изменении заголовка fastq и написана обратно с BioPython

No suitable quality scores found in letter_annotations of SeqRecord 

Есть ли способ решить эту проблему? Нужно ли мне изменять информацию об оценке качества в соответствии с измененным заголовком fastq?

import sys 
from Bio.Seq import Seq 
from Bio import SeqIO 
from Bio.SeqRecord import SeqRecord 

file = sys.argv[1] 
final_records=[] 
for seq_record in SeqIO.parse(file, "fastq"): 
    print seq_record.format("fastq") 
    #read header 
    header =seq_record.id 
    #add /1 at the end 
    header ="{0}/1".format(header) 
    # print(repr(seq_record.seq)) 
    record = SeqRecord(seq_record.seq,id=header,description=seq_record.description) 
    final_records.append(record) 
SeqIO.write(final_records, "my_example.fastq", "fastq") 

ответ

0

Вы получаете ошибку, потому что ваши новые последовательности не имеют показателей качества. Вы могли бы передать показатели качества из входных последовательностей:

record.letter_annotations["phred_quality"]=seq_record.letter_annotations["phred_quality"] 

Это, наверное, проще просто изменить идентификаторы исходных последовательностей и записать их в выходной файл Тхо:

seq_record.id = header 
final_records.append(seq_record) 
+0

Если вы хотите выход чтобы выглядеть как вход, вы добавляете что-то вроде этого перед кодом выше: seq_record.description = seq_record.description.replace (seq_record.id, "") – heathobrien