Biopython:在一个充满fasta序列的字典上循环,同时重新命名标题

时间:2015-10-15 09:07:48

标签: loops csv dictionary biopython

在biopython中,您可以选择将多序列fasta文件制作成字典。

handle = open ("file.fasta","r")
records = SeqIO.parse(handle, "fasta")
records_dict = SeqIO.to_dict(records)
handle.close() 

我有另一个文件(csv),第一列中有序列标识符列表,第二列中有相应的标题行。

import csv
descriptions = open("identifier_mapper.csv","r")
data = csv.reader(identifier_mapper,delimiter = ',')

例如:

SBNP0002Q39M,Artificial Sequence 1
SBNP0004AJIU,Artificial Sequence 2
SBNP0004AJIV,Artificial Sequence 3
SBNP0004AJHM,Artificial Sequence 4

在我的fasta文件中,所有序列都在标题中包含序列键。我可以使用字符串解析来获取它们。

我的问题: 出于某种原因,当我尝试遍历字典和csv阅读器时,它似乎总是在检查列表中的第一个序列后终止!不知道为什么?!

for m in records_dict:
    sequence_key1 = (records_dict[m].id).split("|")[1]
    for row in data:
        sequence_key = row[0]
        organism= row[1]
        if sequence_key1 == sequence_key:
              print ">" + sequence_key + organism 
              print records_dict[m].seq

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

您必须更改此行(隐蔽生成器列表)

identifier_mapper = open("identifier_mapper.csv","r")
data = list(csv.reader(identifier_mapper,delimiter = ','))

csv.reader在第一次迭代中返回一个生成器到达StopIteration,因此只显示字典中的第一个序列