biopython吧 关注:59贴子:174
  • 0回复贴,共1

比较Bio.SeqIO.to_dict(),.index(),.index_db()

只看楼主收藏回复

选择 Bio.SeqIO.to_dict() 而不选择 Bio.SeqIO.index() 或 Bio.SeqIO.index_db() 的原因主要是它的灵活性,尽管会占用更多内存。存储 SeqRecord 对象到内存的优势在于可以随意被改变,添加或者删除。除了高内存消耗这个缺点外,建立索引也可能花费更长的时间,因为所有的条目都需要被完全解析。
Bio.SeqIO.index() 和 Bio.SeqIO.index_db() 都是在需要时才解析序列条目。当建立索引时,他们扫描文件,寻找每个序列条目的起始,并做尽可能少的工作提取出ID信息。
选择 Bio.SeqIO.index() 而不选择 Bio.SeqIO.index_db() 的原因包括以下:
建立索引更快(需要注意的是简单文件格式)
读取 SeqRecord 对象稍快(但是这种差异只有在解析简单格式文件是才可见)
可以使用不可变的Python对象作为字典键而不仅仅是字符串(e.g. 如字符串元组、不可变容器(frozen set))
如果被建立索引的序列文件改变,不需要担心索引数据库过期。
选择 Bio.SeqIO.index_db() 而不选择 Bio.SeqIO.index() 的原因包括以下:
没有内存限制 - 这对通常多达10亿的二代测序文件来说非常重要,如果使用 Bio.SeqIO.index()可能需要超过4G的RAM和64位Python
索引数据量保存在硬盘上,可重复使用。尽管建立索引数据库需要花费更多的时间,但是从长远看来。如果你有个脚本重新运行这个相同的数据库,可以节约时间
可以同时对多个文件建立索引
get_raw() ` 方法可以快得多,因为对于大多数文件格式只需要存储序列条目的长度和偏移量(offset)


IP属地:广东1楼2017-02-11 22:32回复