大規模な入力ファイルを処理する場合、入力ファイルを分割しPBSのアレイジョブの機能を使ってジョブをPCクラスターで同時並列実行するのが効率的です。 例)
入力ファイルの分割
分割された入力ファイルに対するジョブの作成seqコマンドで連番を出力し、xargsコマンドとechoコマンドを組み合わせて連番が付いたジョブを作成します。 $ seq -w 0 99 | xargs -i echo "blastp –db xxx -query test{}.fa -num_threads 1 1>test{}.out 2>test{}.err" > com.txt $ cat com.txt blastp -db xxx -query test00.fa -num_threads 1 1>test00.out 2>test00.err blastp -db xxx -query test01.fa -num_threads 1 1>test01.out 2>test01.err ... blastp -db xxx -query test98.fa -num_threads 1 1>test98.out 2>test98.err blastp -db xxx -query test99.fa -num_threads 1 1>test99.out 2>test99.err 多数の入力ファイルに対するジョブの作成予め入力ファイルが多数ある場合は、findコマンドで入力ファイルを列挙し、xargsコマンドとechoコマンドを組み合わせて各入力ファイルに対するジョブを作成します。 例) 多数の gb*.seq に対して command を実行 $ find gb*.seq | xargs -i echo "command {} 1>{}.out 2>{}.err“> com.txt $ cat com.txt ... command gbvrt7.seq 1>gbvrt7.seq.out 2>gbvrt7.seq.err command gbvrt8.seq 1>gbvrt8.seq.out 2>gbvrt8.seq.err command gbvrt9.seq 1>gbvrt9.seq.out 2>gbvrt9.seq.err $ find gb*.seq -exec basename {} .seq \; | xargs -i echo "command {}.seq 1>{}.out 2>{}.err" > com.txt $ cat com.txt ... command gbvrt7.seq 1>gbvrt7.out 2>gbvrt7.err command gbvrt8.seq 1>gbvrt8.out 2>gbvrt8.err command gbvrt9.seq 1>gbvrt9.out 2>gbvrt9.err ファイルに書かれた多数のジョブの実行PBSのアレイジョブを使い易くした qsubarraypbs コマンドを使えば、ファイルに書かれた多数のジョブをお手軽に(かつ効率的に)実行できます。 関連ページ
|