我在尝试读取 python 中的 .fasta 文件时遇到错误



>im 尝试将 .fasta 文件作为字典读取并分别提取标头和序列。文件中有多个标头和序列。 下面是一个示例。

header= CMP12
sequence=agcgtmmnngucnncttsckkld

但是当我尝试使用函数读取 fasta 文件时 read_f 并使用 print(dict.keys((( 对其进行测试时,我得到一个空列表。

def read_f(fasta):
'''Read a file from a FASTA format'''
dictionary = {}
with open(fasta) as file:
text = file.readlines()
print(text)
name=''
seq= ''
#Create blocks of fasta text for each sequence, EXCEPT the last one
for line in text:
if line[0]=='>':
dictionary[name] = seq
name=line[1:].strip()
seq=''
else: seq = seq + line.strip()
yield name,seq

fasta= ("sample.prot.fasta")
dict = read_f(fasta)
print(dict.keys())

这是我得到的错误:

'generator' object has no attribute 'keys'

使用yield关键字意味着当您调用函数read_fasta时,该函数不会执行。相反,将返回一个生成器,您必须迭代此生成器以获取函数生成的元素。
具体来说,用dict = read_fasta(*fasta)替换dict = read_fasta(fasta)应该可以完成这项工作(*是拆包的操作员(。

正如Iguananaut已经提到的,Bipython可以帮助你。(需要安装生物蟒蛇软件包( 参见Biopython"序列文件到字典">

from Bio import SeqIO
fasta= "sample.prot.fasta"
seq_record_dict = SeqIO.to_dict(SeqIO.parse(fasta, "fasta"))

相关内容

  • 没有找到相关文章

最新更新