3

我有一个可以通过以下方式执行的代码:

$ ./mycode [param1] [param2] [input1-fasta] [input2-fasta] [output-file]

例如执行它:

 $ ./mycode 4 4 input.fasta input2.fasta output.txt

通常,该代码会进行全反全序列比较。

Fasta 文件如下所示:

>Seq_1 
TTTGTTTGCTTCATATTGTAATTAATTTTAAAGAAA
>Seq_2
CTGTGACAAATTGCCCTTAACCCTGTGACAAATTGC

请注意,两个输入的序列数可能不同。

我想要做的是使用多核运行该代码命令并使用GNU Parallel自动分块文件。希望它能跑得更快。

所以我尝试了这个命令:

$ parallel --pipe --recstart '>' "./mycode 4 4 input.fasta input2.fasta output.txt"

但它无法执行,而是给了我这个:

parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.

正确的方法是什么?

4

1 回答 1

1

目前尚不清楚您期望这样做会做什么:

parallel --pipe --recstart '>' "./mycode 4 4 input.fasta input2.fasta output.txt"

如果您想要全部反对,我建议您将大文件分成块,然后针对小文件测试每个块。所以像:

cat big.fasta | parallel --pipe --recstart '>' "./mycode 4 4 small.fasta - output{#}.txt"

要使用 --pipe 您的程序必须能够从标准输入(stdin)读取,因此是“-”。如果它不能尝试 bash 的重定向魔法:

cat big.fasta | parallel --pipe --recstart '>' "./mycode 4 4 small.fasta <(cat -) output{#}.txt"
于 2012-09-13T11:03:04.070 回答