我是新的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)用'\u1'替换分类法字符串中的所有空格,并用分号完成分类(参见下面的示例):
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)
但这根本不管用。有人知道我该怎么做吗?你知道吗
非常感谢你的帮助!你知道吗
以下应起作用:
相关问题 更多 >
编程相关推荐