**文書の過去の版を表示しています。**
前準備
準備として、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