【问题标题】:Biopython : Looping over a dictionary full of fasta sequences, while simulatenously renaming the headersBiopython:循环遍历一个充满fasta序列的字典,同时同时重命名标题
【发布时间】:2016-01-13 15:51:37
【问题描述】:

在 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

任何帮助将不胜感激!

【问题讨论】:

  • 你能展示一个fasta文件的样本吗?

标签: loops csv dictionary biopython


【解决方案1】:

你必须改变这一行(隐蔽生成器到列表)

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

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

【讨论】:

  • 啊,是的!这行得通。我没有意识到 csv 阅读器有这个 StopIteration 生成器。这对所有生成器都通用吗?
猜你喜欢
  • 1970-01-01
  • 2017-11-15
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多