【5.3】blast简介及参数设置

blast几乎是无人不知的序列比对的工具,我说的是对学生物的同学,特别是搞bioinformatics。该工具一种是在线的( http://blast.ncbi.nlm.nih.gov/Blast.cgi ),一种是本地的(Local BLAST,本地版blast)

 假设你有几条序列,想要看看这条序列是不是在某个物种中有类似的序列,或者你想在整个蛋白或者核酸数据库中搜索对应的同源序列,一般采用在线BLAST,使用ncbi的服务器,很快捷,界面也很美观。对于大量序列或者是自定义的数据库,一般采用本地BLAST,效率很更高。想想成千上万次手动提交序列,简直是不可能的。而且短时间内不停对服务器发起链接说不定会被ncbi ban掉(我就被ban了好几次,不过不是因为blast)。或者你想使用自己独特的数据库,不想使用什么NR,NT等等数据库的话,你就需要构建自己本地的数据库了

一、Blast简介

  • 相似的序列(similarity)可以预测同源(homology)
  • 同源的序列来预测功能。这就是blast的根本目的。

2.局部相似性和整体相似性

序列比对的基本思想,是找出检测序列和目标序列的相似性。比对过程中需要在检测序列或目标序列中引入空位,以表示插入或删除(图3.1)。序列比对的最终实现,必须依赖于某个数学模型。不同的模型,可以从不同角度反映序列的特性,如结构、功能、进化关系等。很难断定,一个模型一定比另一个模型好,也不能说某个比对结果一定正确或一定错误,而只能说它们从某个角度反映了序列的生物学特性。此外,模型参数的不同,也可能导致比对结果的不同。

序列比对的数学模型大体可以分为两类,一类从全长序列出发,考虑序列的整体相似性,即整体比对;第二类考虑序列部分区域的相似性,即局部比对。局部相似性比对的生物学基础是蛋白质功能位点往往是由较短的序列片段组成的,这些部位的序列具有相当大的保守性,尽管在序列的其它部位可能有插入、删除或突变。此时,局部相似性比对往往比整体比对具有更高的灵敏度,其结果更具生物学意义。

区分这两类相似性和这两种不同的比对方法,对于正确选择比对方法是十分重要的。应该指出,在实际应用中,用整体比对方法企图找出只有局部相似性的两个序列之间的关系,显然是徒劳的;而用局部比对得到的结果也不能说明这两个序列的三维结构或折叠方式一定相同。BLAST和FastA等常用的数据库搜索程序均采用局部相似性比对的方法,具有较快的运行速度,而基于整体相似性比对的数据库搜索程序则需要超级计算机或专用计算机才能实现。

二、程序的使用

1  安装程序:

ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ 下载ncbi-blast-2.2.28+-x64-linux.tar.gz

解压到用户的主目录(/sam)下(该目录位置你可以自己设定,跟后面统一即可),把解压后的文件夹重新命名为blast,则BLAST+的所有程序在目录/sam/blast/bin下。

添加环境变量:

打开终端(Terminal),切换为root用户,执行sudo vi /etc/profile 在最末尾添加export PATH=”/sam/blast/bin:$PATH”,保存退出。 或直接找到/etc/profile这个文件,在最末尾添加export PATH=”/sam/blast/bin:$PATH” 此处若成功,在终端则执行blastn -version会出现版本信息。

我的例子:

wget -c ftp://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.7.1+-x64-linux.tar.gz
tar -xzvf ncbi-blast-2.7.1+-x64-linux.tar.gz
vim /etc/profile
添加:

#Blast
export PATH=/home/sam/software/ncbi-blast-2.7.1+/bin:$PATH

source /etc/profile

因为是blast+ ,没有blastall的formatdb。同时blast后期已不再维护了呢。

在目录/sam/blast下新建一个文件夹,命名为db 在/sam下新建一个文件,命名为.ncbirc 在文件中添加内容

[BLAST]
BLASTDB=/sam/blast/db

(我后来找不到路径的时候我在/home/sam也同样建立了这样的一个文件,如果你不是在/home/sam下建立数据库,你得同时在这个地方建立./nvbirc的文件)

主要是blast识别~/.ncbirc文件,从该文件处得知数据库的位置,这个文件很重要!!!

2 下载FASTA格式的数据库

2.1自己的数据库

A.  如果是要做自己的数据库,要有自己的fasta文件,使用blast软件中所带的程序,将fasta文件 转变为blast的数据库文件:

B.  /db下的数据库更小,下载更快;可以生成FASTA格式;在/sam/blast/bin/update_blastdb.pl可以用来升级数据库;不用formatdb数据库;各种ID可以进入这个数据库

2.2公共数据库

载地址 ftp://ftp.ncbi.nlm.nih.gov/blast/db/ 里面可以看到,有很多个分开的文件,但是其中FASTA也有很多个fasta格式的数据库,是一个完整的包,这个文件和上一节文件夹里面的数据有啥区别呢

    <strong>Contents of the /blast/db/ directory</strong>
The pre-formatted BLAST databases are archived in this directory. The
name of these databases and their contents are listed below.
+----------------------+-----------------------------------------------+
|File Name | Content Description |
+----------------------+-----------------------------------------------+
/FASTA | subdirectory for FASTA formatted sequences
README | README for this subdirectory (this file)
env_nr.*tar.gz | Environmental protein sequences
env_nt.*tar.gz | Environmental nucleotide sequences
est.*tar.gz | volumes of the formatted est database| from the EST division of GenBank, EMBL, | and DDBJ
est_human.tar.gz | alias and mask files for human subset of the est
est_mouse.tar.gz | alias and mask files for mouse subset of the est
est_others.tar.gz | alias and mask files for non-human and non-mouse | subset of the est database | These alias and mask files need all volumes of | est to function properly.
gss.*tar.gz | volumes of the formatted gss database| from the GSS division of GenBank, EMBL, and | DDBJ
htgs.*tar.gz | volumes of htgs database with entries | from HTG division of GenBank, EMBL, and DDBJ
human_genomic.*tar.gz | human RefSeq (NC_######) chromosome records| with gap adjusted concatenated NT_ contigs
nr.*tar.gz | non-redundant protein sequence database with | entries from GenPept, Swissprot, PIR, PDF, PDB, | and NCBI RefSeq
nt.*tar.gz | nucleotide sequence database, with entries| from all traditional divisions of GenBank, | EMBL, and DDBJ excluding bulk divisions (gss, | sts, pat, est, and htg divisions. wgs entries | are also excluded. Not non-redundant.
other_genomic.*tar.gz | RefSeq chromosome records (NC_######) for | organisms other than human
pataa.*tar.gz | patent protein sequence database
patnt.*tar.gz | patent nucleotide sequence database| The above two databases are directly from | USPTO or from EU/Japan Patent Agencies via | EMBL/DDBJ pdbaa.*tar.gz | protein sequences from pdb protein structures, | its parent database is nr.
pdbnt.*tar.gz | nucleotide sequences from pdb nucleic acid | structures, its parent database it nt. They are | NOT the protein coding sequences for the | corresponding pdbaa entries.
refseq_genomic.*tar.gz | NCBI genomic reference sequences
refseq_protein.*tar.gz | NCBI protein reference sequences
refseq_rna.*tar.gz | NCBI Transcript reference sequences
sts.*tar.gz | Sequences from the STS division of GenBank, EMBL, | and DDBJ
swissprot.tar.gz | swiss-prot sequence databases (last major update), | its parent database is nr.
taxdb.tar.gz | Additional taxonomy information for the formatted | database (contains common and scientific names)
wgs.*tar.gz | volumes for whole genome shotgun sequence assemblies | for different organisms
+----------------------+-----------------------------------------------+

    <strong>Contents of the /blast/db/FASTA directory</strong>
This directory contains FASTA formatted sequence files. The file names
and database contents are listed below. These files are now archived
in .gz format and must be processed through formatdb before they can be
used by the BLAST programs.
+-----------------------+-----------------------------------------------+
|File Name | Content Description |
+-----------------------+-----------------------------------------------+
alu.a.gz | translation of alu.n repeats
alu.n.gz | alu repeat elements
drosoph.aa.gz | CDS translations from drosophila.nt
drosoph.nt.gz | genomic sequences for drosophila
env_nr.gz* | Environmental protein sequences
env_nt.gz* | Environmental nucleotide sequences
est_human.gz* | human subset of the est database (see Note 1)
est_mouse.gz* | mouse subset of the est database
est_others.gz* | non-human and non-mouse subset of the est
database
gss.gz* | sequences from the GSS division of GenBank, | EMBL, and DDBJ
htg.gz* | htgs database with high throughput genomic | entries from the htg division of GenBank, | EMBL, and DDBJ
human_genomic.gz* | human RefSeq (NC_######) chromosome records | with gap adjusted concatenated NT_ contigs
igSeqNt.gz | human and mouse immunoglobulin variable region nucleotide | sequences
igSeqProt.gz | human and mouse immunoglobulin variable region protein | sequences
mito.aa.gz | CDS translations of complete mitochondrial | genomes
mito.nt.gz | complete mitochondrial genomes
month.aa.gz | newly released/updated protein sequences
(See Note 2)
month.est_human.gz | newly released/updated human est sequences
month.est_mouse.gz | newly released/updated mouse est sequences
month.est_others.gz | newly released/updated est other than | human/mouse
month.gss.gz | newly released/updated gss sequences
month.htgs.gz | newly released/updated htgs sequences
month.nt.gz | newly released/updated sequences for the nt
database
nr.gz* | non-redundant protein sequence database with| entries from GenPept, Swissprot, PIR, PDF, | PDB, and RefSeq
nt.gz* | nucleotide sequence database, with entries | from all traditional divisions of GenBank, | EMBL, and DDBJ excluding bulk divisions| (gss, sts, pat, est, htg divisions) and wgs | entries. Not non-redundant.
other_genomic.gz* | RefSeq chromosome records (NC_######) for | organisms other than human
pataa.gz* | patent protein sequence database
patnt.gz* | patent nucleotide sequence database | The above two dbs are directly from USPTO | of from EU/Japan Patent Agency via EMBL/DDBJ
pdbaa.gz* | protein sequences from pdb protein structures
pdbnt.gz* | nucleotide sequences from pdb nucleic acid | structures. They are NOT the protein coding | sequences for the corresponding pdbaa entries.
sts.gz* | database for sequence tag site entries
swissprot.gz* | swiss-prot database (last major release)
vector.gz | vector sequence database (See Note 3)
wgs.gz* | whole genome shotgun genome assemblies
yeast.aa.gz | protein translations from yeast genome
yeast.nt.gz | yeast genomes.
+-----------------------+-----------------------------------------------+

    <strong>FASTA格式的数据库,需要写入,便于搜索</strong>
cd /sam/balst/db
formatdb -i input_db -p F -o T for nucleotide
formatdb -i input_db -p T -o T for protein
-i 输入需要格式化的源数据库名称 Optional
-p 文件类型,是核苷酸序列数据库,还是蛋白质序列数据库
T – protein F - nucleotide [T/F] Optional default = T
-a 输入数据库的格式是ASN.1(否 则是FASTA)
T - True, F - False. [T/F] Optional default = F
-o 解析选项
T - True: 解析序列标识并且建立目录 F - False: 与上相反
[T/F] Optional default = F
注:1 因为我选择的是/db下有许多个文件夹组成的某一个数据库,所以就没有写入这个过程。
2 在/db下下载的很多个数据库,比如nr00,nr01,nr02……解压缩后要放到一个文件夹里面,用数据库的时候,blast -db /sam/blast/db/<span style="color: #ff0000;">nr/nr</span>.我在这个问题上费了很久,刚开始是选择什么样的数据库,后来是下载的nr分开的数据库如何整合到一起。<strong>其实运行的是那个唯一不带编号的Nr文件</strong>。
3 以下的命令是网上找到的,针对FASTA格式的,但是我没用过,把它放在这上面,供大家参考吧
建立BLAST+可用的数据库:
打开终端(Terminal),切换到/sam/blast/db目录下,执行:
    <span style="color: #000000;"> makeblastdb –in nr -parse_seqids -hash_index -dbtype prot</span>
或者是对某个fasta文件进行处理:其中的makeblastdb在bin文件夹里面。
    <span style="color: #000000;"> makeblastdb -in db.fasta -dbtype prot -parse_seqids -out dbname</span>
参数说明:
-in:待格式化的序列文件
-dbtype:数据库类型,prot或nucl
-out:数据库名
-parse_seqids 根据序列ID来分裂
具体参数的设置可以参见makeblastdb -help

3.选择程序:

3.1 常规程序

  • blastp:用蛋白质序列搜索蛋白质序列库
  • blastn:用核酸序列搜索核酸库
  • blastx:核酸序列对蛋白质库的比对,核酸序列在比对之前自动按照六个读码框翻译成蛋白质序列。BLASTx 是将核酸序列按 6 条链翻译成蛋白质序列后搜索蛋白质序列数据库。为什么是 按 6 条链翻译?在无法得知翻译起始位点在情况下,翻译可能是从第一个碱基开始,三个三 个的往后翻译,也可能是从第 2 个碱基开始,也可能从第 3 个碱基开始。另外还有可能是从 这条链的互补链上开始,这样又有三个可能的开始位置,加起来一共会产生 6 条可能被翻译 出来的蛋白质序列。这 6 条中有些是真实存在的,有些是不存在,但是谁真谁假我们无从知 晓,所以 6 条序列都要到数据库中去搜索一下试试。接下来的问题是,既然是核酸序列,为 什么不做 BLASTn 直接到核酸数据库里去搜索,而是要到蛋白质数据库里搜索呢?我们说这 样做是有意义的,比如,从核酸序列数据库里找不到跟你手里这条核酸序列相似的序列,或 找到了相似的序列但这些找到的序列无法提供有意义的注释信息。这时,就可以去蛋白质数 据库试试,看看这条核酸序列的翻译产物能不能从蛋白质数据库里找到相似的序列以及有意 义的注释信息。或者说,你不是想找跟你这条核酸序列相似的核酸序列,而是想找跟你这条 核酸序列编码蛋白质相似的蛋白质序列,这时就要做 BLASTx。
  • tblastn:蛋白质序列对核酸库的比对,核酸库中的序列按照六个读码框翻译后与蛋白质序列进行比对搜索。反之,当你不是想找跟你手上这条蛋白质序列相似的蛋白质序列,而是想找跟编码这条 蛋白质序列的核酸序列相似的核酸序列的时候,就要做 tBLASTn。tBLASTn 是用蛋白质序列 搜核酸序列数据库,核酸数据库中的核酸序列要按 6 条链翻译成蛋白质序列后再被搜索。你 可能要问了,核酸数据库里不是已经注释了某条核酸序列能够翻译成什么蛋白质序列吗?为 什么还要把这些序列可能翻译出来的 6 条蛋白质序列都翻译出来搜索呢?我们说,你看到的 是已经注释的,还有没注释的呢!就算是已经注释的,你看到的也只是已经研究出来的成果, 还有没研究出来的呢!别忘了,基因可以重叠,注释上说某段 DNA 序列可以编码某个蛋白,但是可能某个未被发现的基因也用到了这段 DNA 序列。而你要搜索的这个蛋白质序列可能 刚好就是这个未被发现的基因的翻译产物。这样就必须把核酸序列所有可能的翻译产物都翻 译出来,才能搜索得到。
  • tblastx:核酸序列对核酸库在蛋白质质级别的比对,两者都在搜索之前翻译成为蛋白质质进行比对。上述研究方法运用到极限就是 tBLASTx。它是将核酸序列按 6 条链翻译成蛋白质序列后 搜索核酸序列数据库,核酸数据库中的所有核酸序列也要按 6 条链翻译成的蛋白质序列后再 被搜索。这样用 BLASTn 搜不着的,用 tBLASTx 就能搜着了。