2014-12-22 7 views
0

postfix/1 및/2를 사용하여 fastq 헤더를 변경하려고 시도하고 새로운 fie로 다시 쓰려고합니다. 그러나이 오류가 발생했습니다 :BioPython으로 fastq 헤더를 변경하고 다시 쓰는 데 오류가 발생했습니다.

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

새 시퀀스에 품질 평가 점수가 없기 때문에 오류가 발생합니다. 당신은 입력 시퀀스에서 품질 평가 점수를 전송할 수 :

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

당신은 출력을 원하는 경우 :

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

그냥 원래 시퀀스의 ID를 수정하고 출력 파일의 상점에 기록 아마 쉽게 입력처럼 보이려면 위 코드 앞에 다음과 같이 추가하십시오. seq_record.description = seq_record.description.replace (seq_record.id, "") – heathobrien