SRR000001~SRR000003の3つのファイルに処理を施したいとき、それぞれの処理が独立した処理なのでクラスタで並列に実施できる。
そのためにアレイジョブとしてスクリプトを記載。
#$ -t 1-3:1
でジョブ1〜3までプロセッサに空きがあったら順次実行する。
それぞれのジョブIDは$SGE_TASK_IDに格納されるがこの中身は1,2,3・・・
しかるにリストの配列は左から0,1,2・・・で認識されているのでジョブIDでファイルを指定すると先頭のファイルは飛ばされてしまう。なのでダミーなListという項目を入れておいた。
qsub read_test.sh
#!/bin/sh #$ -cwd #$ -t 1-3:1 #read_test.sh seq_libs=(List SRR000001 SRR000002 SRR000003) seq_lib=${seq_libs[$SGE_TASK_ID]} echo "$seq_lib" > "$SGE_TASK_ID".txt
-rw-r--r-- 1 hogehoge domain users 10 6月 1 16:01 1.txt -rw-r--r-- 1 hogehoge domain users 10 6月 1 16:01 2.txt -rw-r--r-- 1 hogehoge domain users 10 6月 1 16:01 3.txt -rw-r--r-- 1 hogehoge domain users 0 6月 1 16:01 read_test.sh.e00001.1 -rw-r--r-- 1 hogehoge domain users 0 6月 1 16:01 read_test.sh.e00001.2 -rw-r--r-- 1 hogehoge domain users 0 6月 1 16:01 read_test.sh.e00001.3 -rw-r--r-- 1 hogehoge domain users 0 6月 1 16:01 read_test.sh.o00001.1 -rw-r--r-- 1 hogehoge domain users 0 6月 1 16:01 read_test.sh.o00001.2 -rw-r--r-- 1 hogehoge domain users 0 6月 1 16:01 read_test.sh.o00001.3
こんな感じに返ってくる。
less 1.txt SRR000001 1.txt (END)
read_test.sh.e00001.1、read_test.sh.o00001.1はうまく動いていれば空。