如何在没有biopython的情况下将多行fasta文件转换为单线fasta文件
我有几个大的fasta文件,其中序列保存在多行中如何在没有biopython的情况下将多行fasta文件转换为单线fasta文件,python,Python,我有几个大的fasta文件,其中序列保存在多行中 >header1 AGTCGTAGCTACGTACGTACGTGTACGTACGTA TGACGTACGTAGCTGCATGCTA >header2 TGCAGATCGTAGTCGATGCTAGTGCATGCATGT ACGTAGTGCAG ... 我想把它转换成fasta文件,在那里序列被合并成一行 >header1 AGTCGTAGCTACGTACGTACGTGTACGTACGTATGACGTACGTAGCTGCATGCT
>header1
AGTCGTAGCTACGTACGTACGTGTACGTACGTA
TGACGTACGTAGCTGCATGCTA
>header2
TGCAGATCGTAGTCGATGCTAGTGCATGCATGT
ACGTAGTGCAG
...
我想把它转换成fasta文件,在那里序列被合并成一行
>header1
AGTCGTAGCTACGTACGTACGTGTACGTACGTATGACGTACGTAGCTGCATGCTA
>header2
TGCAGATCGTAGTCGATGCTAGTGCATGCATGTACGTAGTGCAG
...
我的fasta文件非常大,因此我需要一种内存高效的方法(因为序列文件比我的内存大)。因此,我不能使用Biopython(下面是我与Biopython的问题的解决方案,以防这对任何人都有帮助,这是来自)
以下操作将一次处理一行文件:
with open('input.fasta') as f_input, open('output.fasta', 'w') as f_output:
block = []
for line in f_input:
if line.startswith('>header'):
if block:
f_output.write(''.join(block) + '\n')
block = []
f_output.write(line)
else:
block.append(line.strip())
if block:
f_output.write(''.join(block) + '\n')
为您提供输出。fasta
包含:
>标题1
AGTCGTAGCTACGTACGTACGTACGTACGTATGACGTACGTGAGTCGTCATGCTA
>校长2
TGCAGATCGTAGTCGATGCTAGTGCATGCATGTACGTAGTGCAG
使用以下答案,所有ID和序列将在同一行中,我希望获得一行中的标题以及另一行中序列的所有行
with open('input.fasta') as f_input, open('output.fasta', 'w') as f_output:
block = []
for line in f_input:
if line.startswith('>header'):
if block:
f_output.write(''.join(block) + '\n')
block = []
f_output.write(line)
else:
block.append(line.strip())
if block:
f_output.write(''.join(block) + '\n')
你的python版本是什么?python版本是3.7.5
with open('input.fasta') as f_input, open('output.fasta', 'w') as f_output:
block = []
for line in f_input:
if line.startswith('>header'):
if block:
f_output.write(''.join(block) + '\n')
block = []
f_output.write(line)
else:
block.append(line.strip())
if block:
f_output.write(''.join(block) + '\n')