关闭。这个问题需要更多 focused .它目前不接受答案。
想改进这个问题?更新问题,使其仅关注一个问题 editing this post .
2年前关闭。
Improve this question
我正在寻找一些关于如何通过 Raku/perl6 中的每个第 n 个文件读取文本文件的建议。
在生物信息学研究中,有时我们需要以一种不太直接的方式解析文本文件。例如 Fastq 文件,它一次以 4 行为一组存储数据。更重要的是,这些 Fastq 文件是成对出现的。所以如果我们需要解析这样的文件,我们可能需要从第一个 Fastq 文件中读取 4 行,从第二个 Fastq 文件中读取 4 行,然后从第一个 Fastq 文件中读取接下来的 4 行,然后读取来自第二个 fastq 文件的接下来的 4 行,......
我可以就解决此问题的最佳方法提出一些建议吗? Raku 的“IO.lines”方法似乎能够一次处理每一行。但不确定如何处理每一行
示例 fastq 文件对:https://github.com/wtwt5237/perl6-for-bioinformatics/tree/master/Come%20on%2C%20sister/fastq
我们之前用“IO.lines”尝试过的:https://github.com/wtwt5237/perl6-for-bioinformatics/blob/master/Come%20on%2C%20sister/script/benchmark2.p6
最佳答案
从 2 个文件中一次读取 4 行并将它们处理成一个东西,可以使用 zip
轻松完成和 batch
:
my @filenames = <file1 file2>;
for zip @filenames.map: *.IO.lines.batch(4) {
# expect ((a,b,c,d),(e,f,g,h))
}
这将继续生成,直到至少有一个文件被完全处理。
batch
的替代品是 rotor
:当两个文件完全填满 4 行时,这将继续进行。完成循环的其他方法是同时指定 :partial
带有 rotor
的标志, 并使用 roundrobin
而不是 zip
. YMMV。
关于raku - 需要在 Raku 中的每 n 行读取文本文件的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58776407/