Python3:从.fasta构建字典 - “奇怪”打印输出值

时间:2017-11-30 09:52:54

标签: python-3.x dictionary fasta

我使用:

将包含一个大序列的.fasta-File解析为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'}

UPDATE1:

根据评论中的链接,我试过

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=[])}

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

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

1 个答案:

答案 0 :(得分:1)

SeqIO没有返回字符串,它返回一个对象。打印时,打印对象的字符串表示形式,在这种情况下,不仅仅是对象的(某些属性)中包含的数据。

(有些对象的设计是为了打印对象只打印其中的数据。这取决于库如何组合以及程序员如何设计其__str__()方法。这可能对你没用此时,如果您继续这样做,可能会帮助您了解您找到的其他相关资源。)

我不熟悉SeqIO,但快速谷歌搜索暗示你可能想要

d={identifier: sequence.seq}

只将SeqIO对象的seq属性作为此标识符的值。