BLAST+

2024 年 11 月 6 日 改訂

BLAST+ は,類似配列検索プログラム集です.従来の local BLAST (legacy blast と呼ばれる) を発展させたものです.Legacy blast はさらなる開発とメンテナンスを中止したので,BLAST+ を用いた方が良いです.マニュアルはこちらです.

まずは,統合TV をご覧下さい.legacy blast と blast+ 間のオプション表があります.これまで local Blast (legacy blast)を使っていた方は,legacy blast と blast+ の対応表が役に立ちます.

データベース化には、SQLite (2.15.0以降) か LMDB (2.7.1以降) が使われています (link)。


ダウンロード

以下ページからダウンロードします.

https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/

ブラウザ Safari ではダウンロードできない場合は Chrome など他のブラウザを試してください.
  ブラウザではなく、以下の手順で terminal を使ってダウンロードも可能です.家の ADSL では 5 分位かかりました (272.5MB).[2013 年 7 月]


[jun-inoue:inoue]$ ftp ftp.ncbi.nlm.nih.gov
Connected to ftp.wip.ncbi.nlm.nih.gov.
220-
Warning Notice!

You are accessing a U.S. Government information system which includes this
....
KERBEROS_V4 rejected as an authentication type
Name (ftp.ncbi.nlm.nih.gov:jun-inoue): anonymous
331 Anonymous login ok, send your complete email address as your password
Password:[email address でも良いですが,単にリターンでも大丈夫です]
230 Anonymous access granted, restrictions apply
....
226 Transfer complete
ftp> cd blast
250 CWD command successful
ftp> ls
227 Entering Passive Mode (130,14,250,12,196,27).
150 Opening ASCII mode data connection for file list
-r--r--r-- 1 ftp anonymous 20087 May 10 2004 blastftp.txt
dr-xr-xr-x 3 ftp anonymous 32768 Jul 9 01:10 db
dr-xr-xr-x 5 ftp anonymous 4096 Feb 27 13:56 demo
dr-xr-xr-x 6 ftp anonymous 4096 Apr 19 18:49 documents
dr-xr-xr-x 10 ftp anonymous 4096 Sep 14 2012 executables
dr-xr-xr-x 2 ftp anonymous 4096 Sep 11 2012 matrices
dr-xr-xr-x 7 ftp anonymous 4096 May 9 12:06 temp
dr-xr-xr-x 2 ftp anonymous 4096 Oct 7 2011 web_services
dr-xr-xr-x 2 ftp anonymous 4096 May 24 2012 windowmasker_files
226 Transfer complete
ftp> cd executables
250 CWD command successful
ftp> cd blast+
250 CWD command successful
ftp> cd LATEST
250 CWD command successful
ftp> get ncbi-blast-2.2.28+-universal-macosx.tar.gz
local: ncbi-blast-2.2.28+-universal-macosx.tar.gz remote: ncbi-blast-2.2.28+-universal-macosx.tar.gz
227 Entering Passive Mode (130,14,250,12,197,60).
150 Opening BINARY mode data connection for ncbi-blast-2.2.28+-universal-macosx.tar.gz (272477554 bytes)
226 Transfer complete
272477554 bytes received in 42 seconds (6.3e+03 Kbytes/s)
ftp> quit


インストール

ソースコードを使わない方法

インストールは単純で,ただダウンロードして得られた .pkg をダブルクリックするだけです.すでにコンパイルされたファイルが ncbi-blast-x.x.x+/bin ディレクトリに入っています (2018 年 3 月).
 ダウンロードファイルに .pkg がない場合もあるようです.この場合は,おそらく bin ディレクトリにコンパイル済みの各種プログラムが入っています.これをコピー&ペースとして使ってください (2015 年 1 月).


ソースコードをコンパイル?

ソースコードからコンパイルも可能のようですが、blastp などは作成されず、以下のようなプログラムが作成されました。
https://www.ncbi.nlm.nih.gov/books/NBK569861/

jinoue@E73F3:~/ncbi-blast-2.15.0+-src/c++/ReleaseMT/bin$ ls
cleanup-blastdb-volumes.py lmdb_test2 project_tree_builder
datatool lmdb_test3 run_with_lock
get_species_taxids.sh lmdb_test4 test_pcre
legacy_blast.pl lmdb_test5 update_blastdb.pl
lmdb_test1 lmdbxx_sample windowmasker_2.2.22_adapter.py

ncbi-blast-2.15.0+-src.tar.gz をダウンロードし、以下を行いました。

cd ncbi-blast-2.15.0+-src/c++
./configure
make
sudo make install

./configure は数秒で終わりましたが、make は 1 時間ぐらいかかりました (2024 年 9 月)。


基本的なテクニック

余談ですが, 基本的なテクニックを紹介します。
以下を入力すると,インストールされたプログラムの場所がわかります.

which makeblastdb

cd はディレクトリに入るコマンドです。以下では、/usr/local/ncbi/blast/bin に入ります。

cd /usr/local/ncbi/blast/bin

open はディレクトリをウィンドウとして開くコマンドです。/usr/local/ncbi/blast/bin がウィンドウとして開きます.

open /usr/local/ncbi/blast/bin


データベースの作成,blastp 検索,配列の取得

blastPlusExample.tar.gz 使って説明します.Quick start を参照しました (2019 年 7 月作成、2024 年 10 月改訂).

以下をターミナルから入力してください.

sh 000command.sh

以下,000command.sh の解説です.

# A ) アミノ酸配列データの解析。
# prot データベースを作成します。
./makeblastdb -in db_prot.txt -dbtype prot -parse_seqids
# -parse_seqids: seq ID 検索を可能にします.

# blastp
検索を行います.
./blastp -query query_prot.txt -db db_prot.txt -num_alignments 10 -evalue 1e-12 -out out_protREC.txt

# seq ID を用いて「指定したデータベース,レコード,範囲」の配列を取得します.
./blastdbcmd -entry ENSP00000362111.4 -db db_prot.txt -dbtype prot -out out_protSEC.txt


# B) 塩基配列データの解析。
# nucl データベースを作成します.
./makeblastdb -in db_nucl.txt -dbtype nucl -parse_seqids

# blastn 検索を行います.
./blastn -query query_nucl.txt -db db_nucl.txt -num_alignments 10 -evalue 1e-12 -out out_nuclREC.txt

# seq ID
を用いて配列を取得します.
./blastdbcmd -entry ENST00000373020.8 -db db_nucl.txt -dbtype nucl -range 100-150 -out out_nuclSEC.txt

*makeblastdb で作成されたデータベースは,legacy Blast (blastall) でも使うことができました.また,逆も可能で,formatdb (legacy Blast) で作成されたデータベースを blastp (blast+) で使えました.しかし,一応 makeblastdb によるデータベース化は、blastn や blastp のバージョンに合わせて毎回やり直しています.


なお Mac では、「“blastp”は、開発元を検証できないため開けません。」というエラーメッセージが出ます。このページの下の方に「Mac: プログラムの「開発元を検証できない」と言われた場合」を参照して対応してください。
 
blastn results から .csv ファイルを作成

Qiime2 のページ、「BLAST+ を用いた種判定」を参照。

(2024 年 3 月)
 
パラメーター

各種パラメーターは,以下のコマンドで確認できます.

$ blastn -help

- task (Manual, P7 "BLAST+ features: Tasks")
塩基配列の検索には,megablast (種内解析用) と blastn (種間解析用) が存在する.blastn はデフォルトだと megablast が選ばれる.

- outfmt (Manual, P33)
アウトファイルの形式を設定する.

- bit score (Help)
evalue はデータベースのサイズに依存するので,bit score を使った方が良いと言う意見もある.




fasta file から配列を取得する: blastdbcmd
blastdbcmd によって,position 情報 (コーディネートとも言う) を元に,fasta file から配列を取得します.extractSeqFromFasta.tar.gz 使って説明します.

# -parse_seqids オプションを用いて,blastdbcmd で利用可能なデータベースを作成します.
$ makeblastdb -in test.fa -dbtype nucl -parse_seqids
Building a new DB, current time: 08/30/2019 12:02:51
...

# 作成したデータベースから,blastdbcmd によって目的の配列を取得します.
$ blastdbcmd -db test.fa -dbtype nucl -entry ENST00000373020.8 -range 5-10
>ENST00000373020.8:5-10
CGTCCC

$ cat test.fa
>ENST00000373020.8
ATGGCGTCCCCGTCTCGGAGACTGCAGACTAAACCAGTCATTACTTGTTT

blastdbcmd については,NCBI の公式マニュアルを見ても,あまりよい説明を見つけられませんでした.「blastdbcmd -help」によってオプションを確認してください.おそらく, bedtools getfasta (以下のコラム) のように,repeat 配列を小文字のまま表示するオプションはありません.(2019 年 8 月).

BEDTools の getfasta を用いても,fasta file から配列を得られます.こちらを参照してください.


種ごとにまとめられた ftp サイトのデータをまとめてダウンロード

BLAST Help, PDF にある HowTo_Downloading_Genomic_Data.pdf, P44,にしたがっています.Case 2 にある方法です.

ftp アドレスを用いてデータをダウンロードする

genomic_directory に以下の 2 行を保存します.これらのアドレスは,NCBI の ftp サイトにWebブラウザから入って得ます.

ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/001/477/545/
GCF_001477545.1_Pneu_cari_B80_V3/
ftp://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/001/638/985/
GCF_001638985.1_Phybl2/

以下のコマンドによって,genomic_directory に記述されている ftp ディレクトリに存在するファイルを一気にダウンロードできます.

wget -r --no-parent --no-host-directories --cut-dirs=2 --level=1 \
--input-file=genomic_directory

wget のオプションの説明は以下.

-r: recursively works through the directory
--no-parent: ignores the parent directory
--no-host-directories: saves the files without prepending the NCBI FTP URL
--cut-dirs=2: saves the files without creating intermediate directories
--level=1: works only at that level of directory
--input-file=value: sets directory input to the file specified by value

ある分類群のデータを一気に得る

fungi を例にしています.NCBI がまとめている fungi の ftp サイトでは, assembly_summary.txt にそれぞれの種の ftp アドレスがまとめられています.以下のコマンドによって,assembly_summary.txt から,これらのアドレスを全て genomic_directory というファイルに保存します.

curl 'ftp://ftp.ncbi.nlm.nih.gov/genomes/refseq/fungi/
assembly_summary.txt' | \
awk '{FS="\t"} !/^#/ {print $20"/"}' > genomic_directory

あとは,wget によって genomic_directory に保存した ftp アドレスのファイルをダウンロードします.

(2019 年 6 月)


バージョンによる違い

アドレスにスペースがあるとエラーが出ることがある

makeblastdb2.16.0 のエラーメッセージです。2.12.0以前では、このエラーは出ませんでした。

BLAST Database error: Database memory map file error

ただ、データベース化は正常に進んだようで、その後行った blastn と blastdbcmd は、問題のない結果が得られませいた。

ディレクトリのアドレスにスペースが入っているとエラーが出てしまうそうです (link)。例えば、ホームディレクトリ (~) で解析すると、エラーは消えました 。以下、「スピード比較」を参照してください (2024 年 11 月)。


makeblast 2.16.0 は nameline が 50 文字まで

makeblastdb 2.16.0 は、 データベースにする fasta file の name lineが 50 文字以上だと動かないです。

BLAST Database creation error: Near line 9643, the local id is too long. Its length is 58 but the maximum allowed local id length is 50. Please find and correct all local ids that are too long.

なお、-parse_seqids オプションを外すエラーは消えます

ちなみに、makeblastdb 2.7.1 は正常に作動し、作成されたデータベースは blastn2.16.0 で解析できます。しかし、逆、つまりmakeblastb2.16.0 で作成されたデータベースは、blastp2.7.1 では解析できないです。

(2024 年 10 月)。

 


スピード比較

blastdbcmd_speedtest.tar.gz (パスワードが必要です)

makeblastdb, blastn, blastdbcmd で比較しました。

2.11.0 以降は遅い:

およそ、makeblastdb は 2 倍、blastn は 7 倍、blastdbcmd は 20 倍、遅くなっています。

  elapsed time
バージョン makeblastdb blastn bladtdbcmd
2.7.1 0.0228 0.0025 0.0009
2.10.1 0.0228 0.0035 0.0009
2.11.0 0.0411 0.0195 0.0171
2.12.0 0.0404 0.0205 0.0186
2.16.0 0.0392 0.0210 0.0205
  2.11 以降遅い 2.11 以降遅い 2.11 以降遅い

解析 2 回目以降に速くなる:バージョンを変えて再解析しはじめた場合、最初よりも 2 回目以降の方が、格段にスピードが速いです。これは、makeblastdb, blastn, blastdbcmd に共通して見られる現象です (blastp も同様の経験があります)。そこで、上記の表では、数回解析して安定した数値を使っています。 当初は、makeblastdb によるデータベース化直後は、blastn と blastdbcmd などで検索が遅くなると思っていました。しかし、makeblastdb 自体も 2 回目以降が速くなっているし、バージョン変更後に makeblastdb を毎回やり直しても blastn など検索のスピードは 2 回目以降で速くなりました。つまり、データベース化されて 2 回目以降、blastn などが速くなっているわけではなさそうです。

makeblastdb が産出する .n** ファイル:

makeblastdb -dbtype nucl -parse_seqids 産物
  .nto .ndb .nhr .nin .njs .nog .nsd .nsi .nos .not .nsq .ntf .nto
2.7.1 - - + + - + + + - - + - -
2.10.1 - + + + - + - - + + + + +
2.11.0 - + + + - + - - + + + + +
2.12.0 - + + + - + - - + + + + +
2.16.0 + + + + +* + - - + + + + -
*ディレクトリアドレスにスペースが入っていると、.njs ファイルは作成されません。エラーメッセージ "BLAST Database error: Database memory map file error"


レコード数では、ほとんど変化しない:
なお、データベースのレコード数が多くなった場合、blastn は若干遅くなりますが、blastdbcmd は変化しないです。

  elapsed time
レコード数 makeblastdb blastn blastdbcmd
5 0.0207 0.0188 0.0180
106989 0.0404 0.0242 0.0188
  遅くなる 少し遅い 変化なし
2.12.0 を使いました。

(2024 年 11 月)。

 

 
エラー対策
BLAST 結果のデータベース・アドレス

おそらく、データベースが大きいと、結果にデータベースのファイル名だけが表示され、アドレスは表示されないです。

BLASTN 2.7.1+

Reference: Stephen F. Altschul, Thomas L. Madden, Alejandro A.
Schaffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J.
Lipman (1997), "Gapped BLAST and PSI-BLAST: a new generation of
protein database search programs", Nucleic Acids Res. 25:3389-3402.

Database: LONGEST_srRNA_RAW.fasta
67,969 sequences; 46,830,065 total letters

####

BLASTN 2.7.1+

Reference: Stephen F. Altschul, Thomas L. Madden, Alejandro A.
Schaffer, Jinghui Zhang, Zheng Zhang, Webb Miller, and David J.
Lipman (1997), "Gapped BLAST and PSI-BLAST: a new generation of
protein database search programs", Nucleic Acids Res. 25:3389-3402.


Database: ./PMifish_Results/Scorpaenodes-evides_7/004_userDB.txt
15,176 sequences; 2,600,463 total letters

(2024 年 10 月)

 


Mac: プログラムの「開発元を検証できない」と言われた場合
解決方法 1: すべてのアプリを許可する

システム設定 > プラバシーとセキュリティ > すべてのアプリを許可

macOS Sierra 以降では、「全てのアプリを許可」が削除されているそうです。表示させるためには、terminal で以下を入力します。

$ sudo spctl --master-disable

元に戻したい場合は、以下です

$ sudo spctl --master-enable

こちらを参照しました。
(2024 年 11 月)

 

解決方法 2: 毎回変更する

(2024 年 3 月)
 
リンク

BLAST+ 公式ページ

最近のマニュアル (PDF ヴァージョンもある) が得られる.

BLAST Help, PDF

PDF マニュアル.種ごとのゲノムデータダウンローについてはこちら (HowTo_Downloading_Genomic_Data.pdf, P44).

NAGRP BLAST Server Documentation

Mega blast などについて、BLAST+ 本家のページより丁寧な解説があります。

PSI-BLAST

統合テレビ。NCBI website。部分特異的スコア行列 (PSSM: Position Specific Scoring Matrix) を利用して、類縁の配列を探す方法の紹介。

mac でバイオインフォマティクス

NCBI からバクテリアゲノムをダウンロードする

mac でバイオインフォマティクス

nr などの NCBI データベースをダウンロードする ncbi-blast-dbs

fastacmd の後継者:blastdbcmd

ゲノム配列の任意の場所を切り出すソフトウェアの紹介.

BLAST FASTA Files Will No Longer Be Available on the FTP Site Effective April 2024

fasta が利用できない?