バイオインフォマティクス 中部大学2024年秋学期

ローカルでBLAST検索をする1

Jupyterを起動し、Terminalを開く

前回の講義と同じように、JupyterNotebookのページを開き、Terminalを起動してください。

ここをクリックしてファイルをダウンロードしてください。 ダウンロードしたファイルを前回行ったようにJupyterにアップロードしてください。

アップロードしたあと、Terminalでlsコマンドを入力し、blast.tar.gzというファイルがあることを確認してください。

$ ls
blast.tar.gz   reference.fa

ファイルを解凍(展開)する

blast.tar.gzは複数のファイルをまとめ(書庫とかアーカイブという)、圧縮したものである。 このままでは使用できないので、解凍し、個別のファイルに展開する。

$ tar -xvzf blast.tar.gz    # -xvzf の部分をオプションという
blast/                      # 以下、展開されてできたファイルの一覧
blast/AtSeq/
blast/AtSeq/AT1G01010.1
blast/AtSeq/AT1G01020.1
blast/AtSeq/AT1G01030.1
blast/AtSeq/AT1G01040.1
blast/AtSeq/AT1G01050.1
blast/AtSeq/AT1G01060.1
blast/AtSeq/AT1G01070.1
blast/AtSeq/AT1G01080.1
blast/AtSeq/AT1G01090.1
blast/AtSeq/AT1G01100.1
blast/db/
blast/db/AT1Gpro.fa
blast/db/ch1
blast/doc/
blast/doc/README.txt
blast/TfSeq/
blast/TfSeq/TfA000003.fa
blast/TfSeq/TfA000005.fa
blast/TfSeq/TfA000022.fa
blast/TfSeq/TfA000026.fa
blast/TfSeq/TfA000045.fa
blast/TfSeq/TfA000050.fa
blast/TfSeq/TfA000053.fa
blast/TfSeq/TfA000075.fa
$ ls
blast     blast.tar.gz   reference.fa   # blast というフォルダ(青色の文字で示される)が追加されていることを確認する

tarはLinuxで標準的なファイルアーカイバーで、圧縮された書庫ファイルを解凍、展開できる。 -xvzf はオプションで、一文字ごとに意味がある。xは展開する、vは作業途中の様子を画面に表示する、zは解凍する、fは目的の書庫ファイルを示す。 ここでは、tar -xvzf file_name という使い方を覚えておけば十分である。

以後、blastフォルダで作業をする。

$ cd blast     # ここでbash: cd: blast: No such file or directoryのようなエラーがでた場合は、上記のblast.tar.gzの解凍ができていない
$ pwd
/home/jovyan/blast

blastフォルダにはAtSeq、db、doc、TfSeqの4つのフォルダがある。

$ ls
AtSeq  db  doc  TfSeq
$ ls AtSeq    # AtSeqフォルダの中身を表示する
AT1G01010.1  AT1G01030.1  AT1G01050.1  AT1G01070.1  AT1G01090.1
AT1G01020.1  AT1G01040.1  AT1G01060.1  AT1G01080.1  AT1G01100.1
$ ls db    # dbフォルダの中身を表示する
AT1Gpro.fa  ch1
$ ls db/ch1     # dbフォルダの中のch1ファイルを表示する
db/ch1
$ ls -l db/ch1  # dbフォルダの中のch1ファイルの詳細を表示する(-lはlsコマンドの動作を少し変更するオプション)
-rw-r--r--. 1 jovyan users 30427677 Dec  2  2014 db/ch1    # 30427677はファイルの大きさ(単位はバイト(Byte, B))

BLASTのデータベースをつくる

BLASTは高速に似た塩基配列を検索することができる。 そのためには検索対象の塩基配列からデータベースをつくっておく必要がある。

dbフォルダの中にあるch1はシロイヌナズナの1番染色体の塩基配列(約3000万塩基対)である(less db/ch1 として、少し見てみるとよい。間違ってもcat db/ch1としないこと)。 これをBLAST検索のデータベースに変換するには以下のようにする(実行ディレクトリに注意)。

$ makeblastdb -in db/ch1 -dbtype nucl


Building a new DB, current time: 12/15/2022 12:40:26
New DB name:   /home/jovyan/blast/db/ch1
New DB title:  db/ch1
Sequence type: Nucleotide
Keep MBits: T
Maximum file size: 1000000000B
Adding sequences from FASTA; added 1 sequences in 0.43989 seconds.
$ ls db
AT1Gpro.fa  ch1  ch1.nhr  ch1.nin  ch1.nsq	# ch1.nhr ch1.nin ch1.nsqの3つのファイルが増えている。これがBLASTのデータベース。

BLAST検索を実行する

BLAST検索にはクエリー、データベースを指定する必要がある。

AtSeqフォルダの中にある10個のファイルはシロイヌナズナの遺伝子の塩基配列である。 このうちAT1G01010.1(AtSeq/AT1G01010.1)をクエリーにして検索を行う。

今回作成したデータベース(db/ch1)は塩基配列のデータベースである。

塩基配列をクエリーに、塩基配列のデータベースを検索するには、blastnコマンドを使用する。

$ cat AtSeq/AT1G01010.1	   # クエリーの中身を見ておく
>AT1G01010.1
AAATTATTAGATATACCAAACCAGAGAAAACAAATACATAATCGGAGAAATACAGATTACAGAGAGCGAGAGAGATCGAC
GGCGAAGCTCTTTACCCGGAAACCATTGAAATCGGACGGTTTAGTGAAAATGGAGGATCAAGTTGGGTTTGGGTTCCGTC
(途中省略)
AATTGGAAAAAAGTATATGTAATAATAATTAGTGCATCGTTTTGTGGTGTAGTTTATATAAATAAAGTGATATATAGTCT
TGTATAAG
$ blastn -query AtSeq/AT1G01010.1 -db db/ch1    # -query に続くファイルがクエリーとなる。-dbに続いてデータベースを指定する。
BLASTN 2.9.0+


Reference: Zheng Zhang, Scott Schwartz, Lukas Wagner, and Webb
Miller (2000), "A greedy algorithm for aligning DNA sequences", J
Comput Biol 2000; 7(1-2):203-14.



Database: db/ch1
           1 sequences; 30,427,671 total letters



Query= AT1G01010.1

Length=1688
                                                                      Score        E
Sequences producing significant alignments:                          (Bits)     Value

ch1                                                                   856        0.0


> ch1
Length=30427671

 Score =   856 bits (463),  Expect = 0.0
 Identities = 463/463 (100%), Gaps = 0/463 (0%)
 Strand=Plus/Plus

Query  1226  AGGTGATAAGTTCGCAGAAAAGCGAATGCGAGTGGAAAATGGCTGAAGACTCGATCAAGA  1285
             ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Sbjct  5437  AGGTGATAAGTTCGCAGAAAAGCGAATGCGAGTGGAAAATGGCTGAAGACTCGATCAAGA  5496
(以下省略)

結果をファイルに保存するにはさらに-outオプションをつける。

$ blastn -query AtSeq/AT1G01010.1 -db db/ch1 -out AT1G01010.1.txt
$ less AT1G01010.1.txt     # スペースキーで先に、bキーで前に移動できる。終わるときはqキーを押す。

blastp で検索を行う

タンパク質をクエリーに、タンパク質データベースを検索するときには blastp コマンドを使う。 データベースの作成は makeblastdb コマンドで同じように行うことができるが、-dbtype オプションが異なるので注意する。

$ makeblastdb -in db/AT1Gpro.fa -dbtype prot タンパク質のデータベースを作成する


Building a new DB, current time: 12/15/2022 13:33:16
New DB name:   /home/jovyan/blast/db/AT1Gpro.fa    データベースの名前
New DB title:  db/AT1Gpro.fa
Sequence type: Protein
Keep MBits: T
Maximum file size: 1000000000B
Adding sequences from FASTA; added 7065 sequences in 0.287537 seconds.

$ blastp -query TfSeq/TfA000003.fa -db db/AT1Gpro.fa -out TfA000003.txt

TfA000003.txtを開くと以下の内容を確認できる。

BLASTP 2.9.0+


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.


Reference for composition-based statistics: Alejandro A. Schaffer,
L. Aravind, Thomas L. Madden, Sergei Shavirin, John L. Spouge, Yuri
I. Wolf, Eugene V. Koonin, and Stephen F. Altschul (2001),
"Improving the accuracy of PSI-BLAST protein database searches with
composition-based statistics and other refinements", Nucleic Acids
Res. 29:2994-3005.



Database: db\AT1Gpro.fa
           7,065 sequences; 2,923,092 total letters



Query= TfA000003

Length=252
                                                                      Score     E
Sequences producing significant alignments:                          (Bits)  Value

  AT1G21720.1                                                           397   3e-141
  AT1G77440.1                                                           393   8e-140
  AT1G13060.1                                                         63.5    2e-012
  AT1G53850.1                                                         34.3    0.010 
(以下省略)

blast検索にオプションをつける

blastn などには -outfmt オプションがある。 これを指定すると出力の形式を変更することができる。 最も有用なものは -outfmt 6 で、検索結果(スコアや一致度)を表形式で出力することができる。

$ blastp -query TfSeq/TfA000003.fa -db db/AT1Gpro.fa -out TfA000003.txt -outfmt 6
TfA000003       AT1G21720.1     91.176  204     18      0       49      252     1       204     3.99e-143       397
TfA000003       AT1G77440.1     91.176  204     18      0       49      252     1       204     1.30e-141       393
TfA000003       AT1G13060.1     25.926  189     138     2       56      244     57      243     1.64e-12        63.5
TfA000003       AT1G53850.1     25.140  179     113     8       56      222     34      203     0.010   34.3
TfA000003       AT1G30410.1     23.239  142     82      4       114     234     61      196     0.13    31.6
TfA000003       AT1G70530.1     30.769  78      46      2       115     191     433     503     1.7     27.7
TfA000003       AT1G72470.1     33.898  59      39      0       93      151     488     546     1.8     27.7
TfA000003       AT1G02260.1     22.628  137     91      5       63      199     154     275     4.6     26.6
TfA000003       AT1G47250.1     22.807  57      41      1       55      111     31      84      5.8     25.8
TfA000003       AT1G54090.1     40.000  35      21      0       93      127     478     512     9.5     25.4

outfmtオプションをつけなかったときの出力と比べて、それぞれの数値が何を意味するのかを考えよ。