QIIME请求此(here)关于它作为输入接收的fasta文件:
The file is a FASTA file, with sequences in the single line format. That is, sequences are not broken up into multiple lines of a particular length, but instead the entire sequence occupies a single line.
Bio.SeqIO.write
当然跟在format recommendations之后,每隔80个bps拆分一次。
我可以写自己的作家来写那些“单行”的快速 - 但我的问题是,如果有一种方法我错过了让SeqIO
做到这一点。
答案 0 :(得分:6)
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)
答案 1 :(得分:1)
@unode 回答了这个问题。我只想补充一点,从今天起,write_file()
中的 write_record()
和 FastaIO
已标记为 OBSOLETE。因此,另一种解决方案是使用 as_fasta_2line()
函数,它将 fasta 记录转换为普通的两行字符串。
from Bio.SeqIO import FastaIO
records_list = [FastaIO.as_fasta_2line(record) for record in records]
handle.writelines(records_list)