【发布时间】:2021-01-22 17:49:47
【问题描述】:
我有一个文件 (index1) 具有 17,270,877 个 ID,另一个文件 (read1) 具有这些 ID 的子集 (17,211,741)。对于这两个文件,ID 位于每 4 行。
我需要一个仅包含 read1 中的 ID 的新 (index2) 文件。对于每个 ID,我还需要从index1 中获取接下来的 3 行。所以我会得到index2,它的格式与index1完全匹配,除了它只包含来自read1的ID。
我正在尝试实现我阅读过的方法here。但我在这两点上绊倒了:1)我需要在每 4 行检查一次 ID,但我需要 index1 中的所有数据(按顺序),因为我必须在 ID 后面写相关的 3 行。 2) 与那篇关于在大文件中搜索一个字符串的帖子不同,我正在另一个大文件中搜索大量字符串。
有人能指出我的方向吗?也许这 5 种方法都不适合这个。我不懂任何信息论;我们有足够的 RAM,所以我认为将数据保存在 RAM 中进行搜索是最有效的吗?我真的不确定。
这里是index 的样例(ID 以@M00347 开头):
@M00347:30:000000000-BCWL3:1:1101:15589:1332 1:N:0:0
CCTAAGGTTCGG
+
CDDDDFFFFFCB
@M00347:30:000000000-BCWL3:1:1101:15667:1332 1:N:0:0
CGCCATGCATCC
+
BBCCBBFFFFFF
@M00347:30:000000000-BCWL3:1:1101:15711:1332 1:N:0:0
TTTGGTTCCCGG
+
CDCDECCFFFCB
read1 看起来非常相似,但“+”前后的行不同。
【问题讨论】:
标签: python performance search subset large-files