シェルスクリプトをつかい、染色体を全部束ねたindexに対してbowtieでsamファイルを吐かせ、 そのあとsamtoolsでbam, bam sort, bam indexを順に作らせています。すべて逐次処理です。 Mac OSXを使っているので、どうせならば、xgridで分散処理をしたいのですが、どういうジョブにしたらいいと思いますか? gmapにあるように染色体ごとにindexを作成し、それぞれ染色体ごとのbowtieのジョブを走らせるというのは 魅力的ですが、今までの逐次処理を染色体ごとのgridのジョブにしてしまうと、染色体ごとのbam indexができはずですが、 最終的なbam indexは一つにまとめたいのです。 おそらくは、各染色体ごとのbowtieをそれぞれ別個のジョブにしておいて 「xgirdのすべてのジョブのidを取得し、それらが終わるのを確認し、」 という部分をシェルスクリプトで表現できれば、 あとは、samtoolsですべてのsamファイルをマージ>bam, bam sort, bam indexを順に作らせるように思うのですが。。。 質問日 Jan 11 '11 at 22:52 fumumumu |
どうもありがとうございました。 予想外にxgrid環境の構築に手間取りました。 同じ道をたどる人がいるかもしれないので、一応書いておきます。
ここまできたら、mya_さんのアドバイスを参考に、それぞれのjob idのstatusを調べFinishedかどうかで 判定させてやれば、望み通りのことができそうです。 いろいろありがとうございます。 回答日 Jan 17 '11 at 09:49 fumumumu |
最終的に、以下のようになりました。 xgrid -h localhost -job list > joblist.txt
set -- for jobid in $*; do while true; do
jobstatus= case $jobstatus in @Failed@) eval xgrid -h localhost -job restart -id $jobid;; @Running@ ) sleep 120;; @Finished@) break;; esac done done アスタリスクがうまく表示できなかったので@に置き換えました。 @をアスタリスクに書き換えてください。 シングルバッククォートもうまく表示できてないですね。 tr -cd '0-9,' <joblist.txt | tr ',' ' ' と xgrid -h localhost -job attributes -id $jobid |grep jobStatus は、それぞれシングルバッククォートでかこむ必要があります。 回答日 Jan 18 '11 at 11:33 fumumumu |
xgridは大昔に囓った程度なので、あまり自信はありませんが、 xgridに投入したjobのid番号は取得できてそのid番号のstatusも取得できるので、 細かいエラートラブルは自分の目で判断して処理する前提で、 投入したジョブのIDの数とstatus "Finished"の数が一致するまでwhile()sleep()のループで回しておく、というのはどうでしょうか。 具体的な実装まではちょっと片手間ではムリです。すいません。 参考にしたページ:: 回答日 Jan 12 '11 at 11:30 mya_ ♦ |