我有 2 ~59GB 的“.fastq”格式的文本文件。fastq 文件是从测序仪读取的基因组学文件。每 4 行是一个新的读取,但这些行的大小是可变的。
文件大小大约为 59GB,大约有 211M 读取——这意味着,给或取,大约 211M*4 = 844M 行。我正在使用的程序 Bowtie 目前能够执行以下选项:
“--跳过 105M --qupto 105M”
这本质上意味着“跳过前 105M 读取,只处理下一个 105M 读取”。通过这种方式,您可以分解文件的处理。问题是,它跳过的方式非常慢。它只是像往常一样读取前 105M 读取,但不处理它们。然后,一旦达到给出的读取值,它就会开始比较。
我想知道我是否可以使用 C/C++ 的 fsetpos 之类的东西将位置设置为文件的中间[或任何地方],我意识到这可能会将我放在一行中间的某个位置,然后从那里找到开始第一次完整读取开始处理,而不是等待它读取大约 422M 行,直到它到达它需要去的地方。有没有人有在这么大的文件上做 fsetpos 的经验,并且知道性能是否比它目前的表现更好?
谢谢——尼克