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 に答える