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
属性作为该标识符的值。
我正在将包含一个大序列的 .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
属性作为该标识符的值。