我是 pythong 编程的新手,并且有一个我想解析以在特定软件中使用的 fasta 文件。该文件包含两行:1) 一个序列标识符和一个由空格分隔的分类,分类中的最后一个物种名称也可能包含空格,以及 2) 一个 dna 序列(参见下面的示例):
>123876987 Bacteria;test;test;test test test
ATCTGCTGCATGCATGCATCGACTGCATGAC
>239847239 Bacteria;test;test;test1 test1 test1
ACTGACTGCTAGTACGATCGCTGCTGCATGACTGAC
经过一番努力和一些帮助,我设法将我的 fasta 文件解析为仅显示序列 ID 和分类的分类文件:
123876987 Bacteria;test;test;test test test
239847239 Bacteria;test;test;test1 test1 test1
但是对于我使用的软件,需要以特殊方式格式化分类文件。分类文件的内容必须:1) 删除 fasta 文件中的“>”,2) 用制表符将标识符和分类与每个序列头分开(即替换字符串中第一次出现的空格通过制表符),3)将分类字符串中的所有空格替换为“_”,并以分号结束分类(参见下面的示例):
123876987 Bacteria;test;test;test_test_test;
239847239 Bacteria;test;test;test1_test1_test1;
我一直在尝试通过摆弄我的工作脚本来做到这一点:
with open("test.fasta", "r") as fasta, open("test.tax", "w") as tax:
while True:
SequenceHeader= fasta.readline()
Sequence= fasta.readline()
if SequenceHeader == '':
break
tax.write(SequenceHeader.replace('>', ''))
修改如下:
with open("test.fasta", "r") as fasta, open("clean_corrected.tax", "w") as tax:
while True:
SequenceHeader= fasta.readline()
Sequence= fasta.readline()
old = {'>',' '}
new = {'','_'}
CorrectedHeader = SequenceHeader.replace('old','new')
if SequenceHeader == '':
break
tax.write(CorrectedHeader)
但这根本行不通。有谁知道我该怎么做?
非常感谢您的帮助!