【发布时间】:2020-09-17 22:53:40
【问题描述】:
我有一个巨大的制表符分隔文件,其中包含多达 2 亿行(通常约为 2000 万)和两列:第一列包含一个最多 40 个字符的 ASCII 字,第二列包含一个整数。
我想执行以下步骤:
- 按第一列排序
- 删除重复行以使所有行唯一
- 读出第一列中给定条目的所有行
我有 3 GB 的内存限制(因此将所有数据读入哈希将不起作用),无限的硬盘空间并希望在单核上运行脚本。我打算并行运行几个脚本,所以对硬盘的读写操作不应该太高。
考虑到文件的大小,应该如何执行我的脚本(在 Perl 中)?
考虑到文件的大小,您建议第一步使用哪种算法?
第 3 步是我认为最复杂的部分。我该如何处理?我不熟悉索引算法。你能推荐一个最适合这个问题的吗?有没有我可以使用的 Perl 模块?
首先将文件转换为二进制文件是否有意义(例如将 SAM 转换为 BAM)?如果有,您是否有任何关于转换和处理此类文件的说明或算法?
【问题讨论】:
-
为什么不将这样的数据存储在数据库中?
标签: database perl indexing samtools bam