grid_engineを用いて並列blast

前準備

準備として、query側のfastaを複数ファイルに分割しておくとよい。分割ファイル一つ一つのサイズが大きいとノード間の処理性能差が出やすくなってしまうため、多めの分割を行う。30000行程度のfastaファイルを600分割で実行したらいい感じだった。fastaの分割方法→fastasplit

1. データベース作成

通常の手順で検索を受ける側のfastaファイルのデータベースを作成する。

makeblastdb -in Danio_rerio.GRCz11.pep.all.fa -dbtype prot

2. 各ノードにtemporaryフォルダを作成しdbをコピー

Grid engineシステムはジョブが全てのサーバーに振り分けられるため、各サーバーがローカルのdbファイルにアクセスできるよう~/work/tmpのようなフォルダを作成しコピーする。

for i in ~/files/*/kijima.yusuke/work/; do mkdir $i/tmp_zDB; done #各サーバーの''ユーザー/work/''ディレクトリ内に一時フォルダを作成
for i in ~/files/*/kijima.yusuke/work/tmp_zDB; do cp Danio_rerio.GRCz11.pep.all.fa* $i; done #作成したdbを各サーバーの一時フォルダにコピー。ここでは単純なforループでコピーしているが、実際はgrid engineを使用した。大きなファイルだとgrid engineを使用したほうが速い。

3. シェルスクリプトの作成

分割したfastaファイルそれぞれに関してBLASTを行うシェルスクリプトを作成。今回のような単一のコマンドを実行する際はこれはいらないかもしれないが、TOPHAT~Cufflinksを並列で最後まで走らせたいときなどはシェルで書くしかない。

#!/bin/bash
blastp -db ~/work/tmp_zDB/Danio_rerio.GRCz11.pep.all.fa -query $1 -outfmt 6 -num_threads 1  -out ./${1##*/}.blast

4. 実行

forループで分割したfasta一つ一つに対し並列でBLASTを実行。

for i in ~/files/m48/kijima.yusuke/work/ZebraVsCarp/carp/split/carp_genes.fa_chunk_0000*; do runGE-1cpu-4gb "bash ~/files/m48/kijima.yusuke/work/ZebraVsCarp/script_memo/carp_to_zebra_blast.bash $i"; done
  • grid_engineを用いて並列blast.1525741781.txt.gz
  • 最終更新: 2018/05/08 01:09
  • by 133.11.222.89