将 fasta 序列解析为字典

use*_*313 2 python dictionary fasta

我需要最简单的解决方案来转换包含多个核苷酸序列的 fasta.txt,例如

>seq1
TAGATTCTGAGTTATCTCTTGCATTAGCAGGTCATCCTGGTCAAACCGCTACTGTTCCGG
CTTTCTGATAATTGATAGCATACGCTGCGAACCCACGGAAGGGGGTCGAGGACAGTGGTG
>seq2
TCCCTCTAGAGGCTCTTTACCGTGATGCTACATCTTACAGGTATTTCTGAGGCTCTTTCA
AACAGGTGCGCGTGAACAACAACCCACGGCAAACGAGTACAGTGTGTACGCCTGAGAGTA
>seq3
GGTTCCGCTCTAAGCCTCTAACTCCCGCACAGGGAAGAGATGTCGATTAACTTGCGCCCA
TAGAGCTCTGCGCGTGCGTCGAAGGCTCTTTTCGCGATATCTGTGTGGTCTCACTTTGGT
Run Code Online (Sandbox Code Playgroud)

到字典(名称,值)对象,其中名称将是>标题,值将分配给相应的序列。

您可以在下面找到我通过 2 个列表进行的失败尝试(不适用于包含 >1 行的长序列)

f = open('input2.txt', 'r')
list={}
names=[]
seq=[]
for line in f:
 if line.startswith('>'):
  names.append(line[1:-1])
 elif line.startswith('A') or line.startswith('C') or line.startswith('G') or line.startswith('T'):
  seq.append(line)

list = dict(zip(names, seq))
Run Code Online (Sandbox Code Playgroud)

如果您向我提供如何修复它的解决方案以及如何通过单独的函数进行示例,我将不胜感激。

感谢帮助,

格莱布

Jos*_* M. 5

最好使用 biopython 库

from Bio import SeqIO
input_file = open("input.fasta")
my_dict = SeqIO.to_dict(SeqIO.parse(input_file, "fasta"))
Run Code Online (Sandbox Code Playgroud)