将Fasta序列解析为字典 [英] Parse fasta sequence to the dictionary

查看:254
本文介绍了将Fasta序列解析为字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I need most trivial solution to convert fasta.txt containing multiple nucleotide sequences like

>seq1
TAGATTCTGAGTTATCTCTTGCATTAGCAGGTCATCCTGGTCAAACCGCTACTGTTCCGG
CTTTCTGATAATTGATAGCATACGCTGCGAACCCACGGAAGGGGGTCGAGGACAGTGGTG
>seq2
TCCCTCTAGAGGCTCTTTACCGTGATGCTACATCTTACAGGTATTTCTGAGGCTCTTTCA
AACAGGTGCGCGTGAACAACAACCCACGGCAAACGAGTACAGTGTGTACGCCTGAGAGTA
>seq3
GGTTCCGCTCTAAGCCTCTAACTCCCGCACAGGGAAGAGATGTCGATTAACTTGCGCCCA
TAGAGCTCTGCGCGTGCGTCGAAGGCTCTTTTCGCGATATCTGTGTGGTCTCACTTTGGT

到dictionary(name,value)对象,其中name为>标题,值将分配给对应的序列。

to the dictionary(name,value) object where name will be the >header and value will be assigned to corresponded sequence.

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

Below you can find my failed attempt do it via 2 lists (does not work for long sequence containing >1 line )

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))

如果您能提供有关如何解决该问题的解决方案以及如何通过单独的功能进行示例的示例,我将不胜感激。

I'll be thankful if you provide me with the solution of how fix it and example how to do it via separate function.

感谢帮助,

Gleb

推荐答案

使用biopython库

It is better to use biopython library

from Bio import SeqIO
input_file = open("input.fasta")
my_dict = SeqIO.to_dict(SeqIO.parse(input_file, "fasta"))

这篇关于将Fasta序列解析为字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆