我试图解析一个fasta文件,然后我想创建另一个文件,它将包含fasta文件的所有可能的第100个ATGCN序列。在
例如:
chr1_1-100:ATGC.....GC
chr1_2-101:ATGC.....GC
chr1_3-102:ATGC.....GC
......................
chr22_1-100:ATGC....cG
chr22_2-101:ATGC....cG
......................
我用了以下代码:
^{pr2}$问题是写入的文件不是有序。意味着它可以先包含chr10
,然后再包含chr2
。在
问题是因为解析是使用dict(
完成的,例如SeqIO.to_dict(SeqIO.parse(open(i1), 'fasta'))
。在
那么,我能把dict转换成有序的dict吗,这样我的文件就变得有序了吗?或者有没有其他方法可以解决这个问题?在
别费心做任何形式的口述。你不需要dict给你的属性,你需要dict转换丢失的信息。来自
SeqIO.parse
的记录迭代器已经为您提供了所需的:如果您需要dict键中的信息,那就是
record.id
。在您已经正确地确定了问题的原因:
to_dict
方法返回一个dict,这意味着顺序已经丢失。从那时起,就没有办法恢复订单了。在此外,您并没有真正使用dict,因为您是按顺序处理所有事情,所以您可以迭代:
是的,您可以转换它
OrderedDict(any_dict)
,如果您需要排序键,可以在创建OrderedDict
之前对它们进行排序:相关问题 更多 >
编程相关推荐