我目前有一个FASTA文件,里面有几个DNA序列。
描述符之间的行替代:“> \ w {4} \ d {6}” 还有一个DNA序列文件 - 一系列300多个随机大写的字母。
我试图使每个序列选项卡分隔,以便每个描述符和序列在一行上,由制表符分隔。以下是我的尝试:
from __future__ import print_function
import re
import sys
Fasta_seq = open(sys.argv[1])
for a_line in Fasta_seq:
if re.search('^>.+', a_line):
re.sub('.+\n', '.+\t', a_line)
print(a_line, end='')
else:
re.sub('.+', '.+', a_line)
print(a_line, end='\n')
但是,此代码似乎不会删除在描述符末尾结束的行。它只是向我返回完全相同的输出。
有没有人知道我在忽视什么?
答案 0 :(得分:1)
我不确定你是在处理离开还是交织fasta,但是这个任务可以在没有正则表达式的情况下轻松完成(同样,使用4个空格缩进)。请尝试以下方法:
Fasta_seq = open(sys.argv[1])
output_file = open("outfile.txt", "w")
seq = ""
for a_line in Fasta_seq:
if a_line.startswith(">"):
# Do this only when a sequence has been populated
if seq:
output_file.write("{}\t{}\n".format(header, seq))
header = a_line.strip()
seq = ""
else:
seq += a_line.strip()
这应该在leave和interleave fasta输入中起作用