手元にあるパブリックになっていないFASTAファイルからBLAST検索をかけたいとき、私はローカルに インストールしてあるBLAST+を使用して検索をかけます。
BLASTのデータベースは makeblastdb
コマンドで作ることができます。このデータベースは検索毎
に作るのはとても面倒なので、どこかわかる場所にまとめておいておきたいです。すると今度は検索の際に、
データベース置き場をパスを含めて指定しないといけないのが大変です。
例えば /home/username/db
配下においておくと決めたとします。その場合、 blastn
コマンドの
-db
オプションに指定するデータベース名は /home/usename/db/
を毎回つけるか、相対パスで
指定してやらなければなりません。
このあたりについてどうするのがいいのか考え、私個人的になんとなくいいのではという方法までとりあえずたどりついたのでメモします。
BLAST+ の設定
BLAST+にはコマンド毎の設定とは別に全体的な部分に関わる設定項目があります。
その1つが BLASTDB
というパラメータです。このパラメータの設定法の1つは環境変数として設定してやることです。例を示します。
export BLASTDB=/opt/blastdb:/home/username/blastdb
こうすることでBLAST+の各コマンドは -db
で指定されたデータベースをカレントディレクトリ以外に、
/opt/blastdb
と /home/username/blastdb
から探してくれます。
もう1つの設定方法としてUNIX環境では .ncbirc
ファイルを用いる方法です。このファイルの書式例を以下に示します。
BLASTDB=/home/username/blastdb
こうすることで /home/username/blastdb
をデータベースのパスとして追加してくれます。
このファイルはユーザーのホームディレクトリ直下に置くのが良いでしょう。
ちょうど .bashrc
などのファイルと同じイメージです。
このようにしておけば、たとえ /home/username/blastdb
にいない状況でも、カレントディレクトリ
にデータベースファイルがあるのと同様に指定することができます。
つまり、-db /home/username/blastdb/mydb
とする必要なく、どのディレクトリににいても、-db mydb
と指定してあげるだけで勝手に /home/username/blastdb
内の mydb
を使用してくれます。
利用可能なデータベースの列挙
上記の要領で、データベースを置く場所を決めておけばデータベースが複数のディレクトリに重複して 散乱しているという状況を回避することがひとまずできました。
ただ今度は、いざというときにどんなデータベースを作っていたっけ?という状況に陥りいちいち データベースディレクトリの内容を確認する手間が増えるかもしれません。
単に ls
でディレクトリを見に行ってもいいですがディレクトリの場所を忘れてしまった場合などは面倒に
感じるかもしれません。
そこで1つのコマンドラインをエイリアスとして登録しておきます(以下を.bashrc
などに記載しておく)
alias blastdblist="blastdbcmd -show_blastdb_search_path | sed 's/:/\n/g' | xargs -L1 blastdbcmd -list"
こうすることで blastdblist
とコマンドを打つことでどのディレクトリにいても、使えるdbの名前を
リストで見ることが可能となります。
最後にBLAST+の詳しい使い方は本家マニュアル(https://www.ncbi.nlm.nih.gov/books/NBK279690/)を参照いただくことをおすすめします。