我使用:
将包含一个大序列的.fasta-File解析为pythonfor 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'}
根据评论中的链接,我试过
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=[])}
所以,遗憾的是,这没有帮助:(
提前感谢您的时间和精力:)
答案 0 :(得分:1)
SeqIO
没有返回字符串,它返回一个对象。打印时,打印对象的字符串表示形式,在这种情况下,不仅仅是对象的(某些属性)中包含的数据。
(有些对象的设计是为了打印对象只打印其中的数据。这取决于库如何组合以及程序员如何设计其__str__()
方法。这可能对你没用此时,如果您继续这样做,可能会帮助您了解您找到的其他相关资源。)
我不熟悉SeqIO
,但快速谷歌搜索暗示你可能想要
d={identifier: sequence.seq}
只将SeqIO对象的seq
属性作为此标识符的值。