SGEでarray jobを使えば、多検体の処理も素直に表現できます。
例
#!/bin/sh #$ -S /bin/sh #$ -q normal #$ -cwd #$ -t 3:8 n=$SGE_TASK_ID qf=SRR42081$n.fastq PATH=$HOME/lcl/bin:$PATH case $n in 3) libname=control1;; 4) libname=control2;; 5) libname=control3;; 6) libname=phos1;; 7) libname=phos2;; 8) libname=phos3;; esac rsem-calculate-expression -p 8 $qf TAIR10 $libname
解説 SRR420813~SRR420818までの6個のエントリーのデータについて、発現量の値が欲しいときする。 1つなら、
rsem-calculate-expression -p 8 SRR420813 TAIR10 control1
で済む話である。で、これを分散させるのに、1つのデータに対して1つjob fileを作ってやればもちろん分配されます。 しかし、違うのは名前くらいで、ほとんど同じものなのでいくつもやるのは面倒です。 そんな時にarray jobを使うと便利です。
#$ -t 3:8
と指定することにより、$SGI_TASK_IDが3から8の範囲で異なるだけの6個のjobが生成されます。
qf=SRR42081$n.fastq
でつないでやったり、その値に応じて
case $n in 3) libname=control1;; 4) libname=control2;; 5) libname=control3;; 6) libname=phos1;; 7) libname=phos2;; 8) libname=phos3;; esac
名前や$libnameを振り分ける事ができます。その上で
rsem-calculate-expression -p 8 $qf TAIR10 $libname
を実行することにすれば、1つのjobで多数の処理が簡単に実行できます。