SGE Array Jobの例

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で多数の処理が簡単に実行できます。