FASTA to FASTQ

FASTA フォーマットを FASTQ フォーマットに変換する Python スクリプト。FASTQ フォーマットに変換する際に、各塩基のクオリティスコアを全て I としている。

import sys
import re

fasta_file = sys.argv[1]
re_fa_header = re.compile('^>(.+)')

fa_header = ''
fa_seq    = ''
qa_header = '+\n'
qa_seq    = ''

with open(fasta_file, 'r') as fh:
    for buf in fh:
        buf.rstrip('rn')
        m = re_fa_header.match(buf)
        if m:
            if fa_header != '':
                print fa_header, fa_seq, qa_header, qa_seq
            fa_header = '@' + m.group(1) + '\n'
            fa_seq    = ''
            qa_seq    = ''
        else:
            fa_seq = fa_seq + buf
            qa_seq = qa_seq + ''.join(['I'] * (len(buf) - 1))

print fa_header, fa_seq, qa_header, qa_seq

このファイルを fa2fq.py の名前で保存すれば、以下のように実行できる。

python fa2fq.py sample.fa > sample.fq