在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
任何帮助将不胜感激!
答案 0 :(得分:1)
您必须更改此行(隐蔽生成器列表)
identifier_mapper = open("identifier_mapper.csv","r")
data = list(csv.reader(identifier_mapper,delimiter = ','))
csv.reader
在第一次迭代中返回一个生成器到达StopIteration
,因此只显示字典中的第一个序列