使用Bio.SeqIO写入单行FASTA
3 个回答
2
虽然 @unode 和 @HongboZhu 都给出了有效的答案,但他们使用了 FastaIO
。
而 SeqIO
(现在在 Python3 中)提供了你想要的格式写入功能:
from Bio import SeqIO
SeqIO.write(data, handle, 'fasta-2line')
2
@unode 回答了这个问题。我只是想补充一下,今天起 write_file()
和 write_record()
这两个来自 FastaIO
的函数已经被标记为过时了。所以可以考虑使用 as_fasta_2line()
函数,它可以把一个 fasta 记录转换成简单的两行字符串。
from Bio.SeqIO import FastaIO
records_list = [FastaIO.as_fasta_2line(record) for record in records]
handle.writelines(records_list)
7
BioPython的SeqIO
模块使用FastaIO
子模块来读取和写入FASTA格式的数据。
FastaIO.FastaWriter
这个类可以让你每行输出不同数量的字符,但这个功能在SeqIO
中并没有直接提供。你需要直接使用FastaIO
。
所以,不要使用:
from Bio import SeqIO
SeqIO.write(data, handle, format)
而是使用:
from Bio.SeqIO import FastaIO
fasta_out = FastaIO.FastaWriter(handle, wrap=None)
fasta_out.write_file(data)
或者
for record in data:
fasta_out.write_record(record)