Python3:从 .fasta 构建字典 - "strange" 值的打印输出

Python3: Building dictionary from .fasta - "strange" printout for value

我正在将包含一个大序列的 .fasta 文件解析为 python,方法是:

for rec in SeqIO.parse(faFile, "fasta"):
    identifier=(rec.id)
    sequence=(rec.seq)

然后,我正在构建字典:

d={identifier:sequence}

仅打印序列时,我得到以下结果:

CAGCCAGATGGGGGGAGGGGTGAGCGCTCTCCCGCTCAAAACCTCCAGCACTTT...CAT

注意:所有的字母都是打印出来的,我做了点来缩短这个

打印字典时,我得到:

{'NC_003047.1': Seq('CAGCCAGATGGGGGGAGGGGTGAGCGCTCTCCCGCTCAAAACCTCCAGCACTTT...CAT', SingleLetterAlphabet())}

"Seq" 和 SingleLetter 字母表从何而来?

期望的结果是:

{'NC_003047.1':'CAGCCAGATGGGGGGAGGGGTGAGCGCTCTCCCGCTCAAAACCTCCAGCACTTT...CAT'}

更新 1:

按照评论中的link,我尝试了

input_file=open(faFile)
d=SeqIO.to_dict(SeqIO.parse(faFile,"fasta"))

导致:

{'NC_003047.1': SeqRecord(seq=Seq('CAGCCAGATGGGGGGAGGGGTGAGCGCTCTCCCGCTCAAAACCTCCAGCACTTT...CAT', SingleLetterAlphabet()), id='NC_003047.1', name='NC_003047.1', description='NC_003047.1 Sinorhizobium meliloti 1021 chromosome, complete genome', dbxrefs=[])}

所以,遗憾的是,这没有帮助:(

提前感谢您的时间和精力:)

SeqIO 不是 return 字符串,它 return 是一个对象。当你打印它时,你打印了对象的字符串表示,在这种情况下,它不仅仅是对象(的某些属性)中包含的数据。

(一些对象被设计成打印对象将只打印它里面的数据。这取决于库是如何放在一起的以及程序员如何设计它的__str__()方法。这可能没有用在这一点上对你来说,但如果你进一步研究,可能会帮助你理解你找到的其他相关资源。)

我不熟悉 SeqIO 但快速谷歌搜索表明您可能想要

d={identifier: sequence.seq}

仅将 SeqIO 对象的 seq 属性作为该标识符的值。