BLAST (Basic Local Alignment Search Tool) は、バイオインフォマティクスDNA塩基配列あるいはタンパク質アミノ酸配列のシーケンスアライメントを行うためのアルゴリズムをいい、またそのアルゴリズムを実装したプログラムをいう。 BLAST を使って、手元にあるシーケンスで、シーケンスデータベースもしくはライブラリに対して検索することにより、ある閾値以上のスコアで類似するシーケンス群を発見することができる。 BLAST は、バイオインフォマティクスで最も広く使われているプログラムの一つである。

概要

BLAST は、バイオインフォマティクスにおいて、DNA塩基配列あるいはタンパク質アミノ酸配列のシーケンスで、ペアワイズのシーケンスアライメントを行う。 BLAST は、主にシーケンスの局所的アライメント(ローカルアライメント)を行うために使われる。 BLAST と同様にペアワイズアライメントを行うためのプログラムとしては、他に FASTA などがある。 また、マルチプルアライメントを行うためのプログラムとしては、Clustal (ClustalW、ClustalX) などがある。

BLAST は、バイオインフォマティクスで最も広く使われているプログラムの一つである。 BLAST が広く使われている理由は、BLAST が処理速度を非常に重視していることにあるとみられる。 BLAST のアルゴリズムは正確さより速度を重視している。 BLAST におけるこの速度重視によって、今日では膨大なデータが蓄積されているゲノムシーケンスデータベースに対して検索を行うような場合において、BLAST アルゴリズムを実用的なものとしている。 BLAST が開発された後、BLAST より速いアルゴリズムがいくつか開発されている。 BLAST は、大まかなシーケンスマッチングを必要とする他のアルゴリズムの一部としてもよく使われている。

BLAST を使うことで、例えば、ハツカネズミの未知の遺伝子を発見したときに、ヒトがそのシーケンスと類似した遺伝子をもつかどうかを調べることができる。 ハツカネズミの未知のシーケンスで BLAST を使って、ヒトゲノムのシーケンスデータベースに対して検索を行うと、BLAST は類似性の高いシーケンス群を見つけ出す。

また、BLAST は次のような問いを考えるときに使うことができる。

BLASTアルゴリズムおよびそのアルゴリズムを実装したプログラムは、次の人々によって開発された。

BLASTアルゴリズムを実装したプログラムは複数存在する。 それぞれダウンロードして利用することができる。 オリジナルの実装は NCBI BLAST である。

BLASTは NCBI (GenBank) やDDBJウェブ上でも利用することができる。

BLASTのオリジナルの論文 "Altschul, SF, W Gish, W Miller, EW Myers, and DJ Lipman. Basic local alignment search tool. J Mol Biol 215(3):403-10, 1990." は、1990年代に非常に多くの論文で引用された。

BLASTアルゴリズム

BLASTアルゴリズムを実行する際には、2つの情報が必要である。 クエリシーケンス(ターゲットシーケンスともいう)とシーケンスデータベースである。 BLASTアルゴリズムは、シーケンスデータベース中のシーケンス断片と類似するクエリシーケンス中のシーケンス断片を見つけ出す。 多くの場合、クエリシーケンスは、シーケンスデータベースと比べてデータ量が非常に小さい。 例えば、クエリシーケンスが千個程度のヌクレオチド核酸塩基)であるのに対し、シーケンスデータベースは数億のヌクレオチドのデータをもっている場合がある。

BLASTアルゴリズムは、クエリシーケンスとシーケンスデータベースとの間で、高い閾値でシーケンスアライメントを行う。 その際には Smith-Waterman アルゴリズムに近似したヒューリスティクなアルゴリズムが使われる。 完全な Smith-Waterman アルゴリズムは、NCBI GenBank のような大規模なシーケンスデータベースに対して検索を行う場合には、処理速度が非常に遅いことが問題となる。 BLASTアルゴリズムは、Smith-Waterman アルゴリズムより少し正確さで劣るが、50倍以上の処理速度を実現する。 このようにBLASTアルゴリズムは、高速でありかつ比較的正確であるという特徴がある。 こうした特徴が、BLASTアルゴリズムの重要な技術的革新性であり、またおそらくバイオインフォマティクスにおいてBLASTプログラムが最もよく使われている理由となっている。

BLASTアルゴリズムの実行は、概念的には次に述べるように3段階に分かれている。

第2段階で、ギャップを考慮せずに、スコアの高いアライメントが行えた場合、データベースのシーケンスデータは第3段階の処理対象となる。

BLASTから派生したアルゴリズムがいくつか考案されている。

BLAT
BLAT (Blast Like Alignment Tool) は、BLASTを上回る速度で処理を行うが、正確さにおいてはBLASTに劣る。ヌクレオチドのシーケンスでゲノムデータベースへの検索を行う。
BLASTZ
複数の大規模なゲノムデータベースや染色体データベースに対して検索を行うよう設計されたアルゴリズム。

並列処理・分散処理への対応

並列処理分散処理の環境に対応したBLASTアルゴリズムがいくつか考案されている。 こうしたアルゴリズムは一般に Parallel BLAST と呼ばれることがある。 Parallel BLAST は、PthreadsMPIAPIを使って実装される。 多くのコンピュータプラットフォームに移植され、LinuxWindowsSolarisAIXなどで利用可能である。 BLASTアルゴリズムを並列処理や分散処理に対応させる手法には次のようなものがある。

BLASTプログラム

BLASTプログラムを利用するには、プログラムをダウンロードして blastall コマンドラインユーティリティとして実行する方法と、ウェブからアクセスする方法とがある。

NCBI (GenBank) やDDBJのウェブサイトでは、これらの機関が共同で構築している塩基配列(およびアミノ酸配列)の公共シーケンスデータベースに対して、ウェブブラウザでBLASTによる類似性検索を行うことができる。 この公共シーケンスデータベースは定期的に更新され、新たに配列決定が行われた生物のシーケンスのほとんどは、このデータベースに登録される。

BLASTには実際には複数のプログラムが含まれている。 blastall 実行ファイルには、blastp、blastn、blastx、tblastn、tblastx のプログラムが含まれている。 blastall をコマンドライン環境で実行する際は、-p オプションで実行するプログラムを指定する(例: blastall -p blastn)。 BLASTプログラムを実行する際、クエリシーケンスはFASTAフォーマットでプログラムに渡す。 次にBLASTに含まれているプログラムのうち主なものを示す。

blastp
アミノ酸配列(タンパク質シーケンス)をクエリとして、ユーザが指定したアミノ酸配列データベースから類似するシーケンスを検索する。
blastn
塩基配列(ヌクレオチドのシーケンス)をクエリシーケンスとして、ユーザが指定した塩基配列データベースから類似するシーケンスを検索する。
blastx
塩基配列のクエリシーケンスを、6フレームで翻訳して、アミノ酸配列データベースから類似するシーケンスを検索する。
tblastn
アミノ酸配列をクエリとして、塩基配列データベースを6フレームで翻訳しながら、類似するシーケンスを検索する。
tblastx
塩基配列のクエリシーケンスを、6フレームで翻訳して、アミノ酸配列に翻訳された塩基配列データベースから類似するシーケンスを検索する。このプログラムはBLASTのプログラムの中で最も処理速度が遅い。このプログラムの使用目的は、塩基配列のシーケンス間の非常に遠い関連性を発見することである。
PSI-BLAST
アミノ酸配列をクエリとして、ユーザが指定したアミノ酸配列データベースから類似するシーケンスを検索する。最近開発されたBLASTプログラムの一つ。このプログラムはタンパク質の遠い系統的関連性を発見するために使われる。まず、クエリのアミノ酸配列と近い関連性をもつタンパク質の一覧を作成する。そしてこの一群のタンパク質を統合して「プロファイル」(平均化したシーケンスのようなもの)を作る。このプロファイルを使ってアミノ酸配列データベースに対する検索を行い、プロファイルのもととなったアミノ酸配列より多い件数のアミノ酸配列を見つける。見つかったアミノ酸配列でさらにプロファイルを作成する。この一連の処理を繰り返し行う。検索を行う際に関連するタンパク質を考慮するため、遠い系統的関連性を発見する場合に、PSI-BLAST は blastp よりもはるかに正確な処理を行う。
megablast
megablastは大量のクエリシーケンスで高速な検索を行うプログラムである。BLAST でコマンドラインから逐次に検索を行う場合より、はるかに高速に実行することができる。megablastはクエリとして指定された複数のシーケンスを連結して長いシーケンスを作成して、シーケンスデータベースを検索し、処理結果として個別のアライメントと統計値を返す。

参考文献

外部リンク