编写一个 python 程序来操作 fasta 文件
writing a python program to manipulate a fasta file
假设我有以下 fasta 文件和文本文件:
#fasta
>seq1
AAATTTCCC
>seq2
CCCGGGTTT
#txt (tab seperated)
seq1 3
seq2 4
我需要帮助尝试编写一个程序,该程序将提前为 fasta n times.Thanks 中的每个序列重复字符串!
#output fasta
>seq1
AAATTTCCCAAATTTCCCAAATTTCCC
>seq2
CCCGGGTTTCCCGGGTTTCCCGGGTTTCCCGGGTTT
试试这个:
with open('fasta.txt') as fp, open('seq.txt') as fp2:
data = [line.strip() for line in fp if line.strip()]
seq = [line.split() for line in fp2 if line.strip()]
data = dict([(data[i], data[i + 1]) for i in range(0, len(data), 2)])
with open('output.txt', 'w') as fw:
for x in seq:
key = '>' + x[0]
fw.write(key + '\n' + data[key] * int(x[1]) + '\n')
#output.txt
#>seq1
#AAATTTCCCAAATTTCCCAAATTTCCC
#>seq2
#CCCGGGTTTCCCGGGTTTCCCGGGTTTCCCGGGTTT
假设我有以下 fasta 文件和文本文件:
#fasta
>seq1
AAATTTCCC
>seq2
CCCGGGTTT
#txt (tab seperated)
seq1 3
seq2 4
我需要帮助尝试编写一个程序,该程序将提前为 fasta n times.Thanks 中的每个序列重复字符串!
#output fasta
>seq1
AAATTTCCCAAATTTCCCAAATTTCCC
>seq2
CCCGGGTTTCCCGGGTTTCCCGGGTTTCCCGGGTTT
试试这个:
with open('fasta.txt') as fp, open('seq.txt') as fp2:
data = [line.strip() for line in fp if line.strip()]
seq = [line.split() for line in fp2 if line.strip()]
data = dict([(data[i], data[i + 1]) for i in range(0, len(data), 2)])
with open('output.txt', 'w') as fw:
for x in seq:
key = '>' + x[0]
fw.write(key + '\n' + data[key] * int(x[1]) + '\n')
#output.txt
#>seq1
#AAATTTCCCAAATTTCCCAAATTTCCC
#>seq2
#CCCGGGTTTCCCGGGTTTCCCGGGTTTCCCGGGTTT