BLAST介绍
BLAST(Basic Local Alignment Search Tool)是由美国国立生物技术信息中心(NCBI)开发的一个基于序列相似性的数据库搜索程序,用于在蛋白质或 DNA 数据库中进行相似性搜索,是目前最常用的数据库搜索程序。
BLAST是由Altschul等人于1990年提出的双序列局部比对算法,自 1997 年发布以来,BLAST 经过多次升级,功能与性能不断优化。双序列比对可以采用是基于动态规划算法的Needleman-Wunsch(NW)和Smith-Waterman algorithm(SW)算法,虽然精度高,但计算消耗大。当与数据库比对的时候,该算法就显得不切实际。BLAST和FASTA是最常用的用于序列相似性比较的程序包,BLAST采用启发式算法使得通过大幅度丢失灵敏度来减少运行时间。与FASTA软件相比,BLAST通过把搜索限制在狭隘的矩阵对角线条带上,来改进FASTA进行数据库搜索的速度。
Blast算法过程
1.filtering:在进行序列比对之前,首先需要对query(未知序列)进行过滤,主要去除序列中的低复杂度区域(low complexity region)。Blast实际做法是:将这些区域用符号代替,并在搜索时忽略这些符号。对于蛋白质序列用X代替,DNA序列则用N代替。
2.seeding:首先以k-mers的形式对query序列分成一个个片段(长度为k),对于蛋白质序列k=3,而对于DNA序列K=11。然后对每个片段的单个位点用其它氨基酸或核苷酸替代,随后根据BLOSUM(氨基酸打分矩阵)或者PAM(DNA打分矩阵)对替代后的序列进行打分,将得分从高到低排列。根据之前设定的阈值score threshold,选择得分高于阈值的片段,这样原先的每一个片段就会生成一个序列集。
3.matching:将这些氨基酸片段与数据库中的序列精确比对。通常数据库中的序列已经构建好了索引,因此matching这一过程非常快,常用的如哈希表和后缀树都是非常高效的建索引方式。这样就可以得到每个片段(query片段)在参考序列的位置。
4.extending:extending是blast算法中最为灵魂的一步,将比对到的片段使用动态规划的方法向左右两个方向延伸,根据打分矩阵选择得分最高的匹配。综合片段向左右两个方向得分的结果,得到每条query片段在数据库中的最佳匹配。然后将所有片段的局部比对结果从高至低进行排列,接下来根据每条query序列的得分计算evalue。
5.显著性分析:通常两条序列相似的显著性用evalue进行评估。evalue表示在随机情况下,数据库中存在比当前匹配分数更高的序列的概率,evalue越低,说明我们当前匹配的结果越可靠。通过设定evalue过滤掉不合理的匹配序列,就可以得到最终的比对结果。
BLAST程序能迅速将核苷酸或蛋白质序列与公开数据库进行相似性序列比较,并计算匹配的统计显著性,进而可用于推断序列之间的功能和进化关系,并帮助识别基因家族成员。序列数据必须为FASTA格式。
常见的序列比对工具共有5种:
BLASTP | 将蛋白质序列比对至蛋白质数据库 |
BLASTN | 将核酸序列比对至核酸数据库 |
BLASTX | 将核酸序列翻译后比对至蛋白质数据库 |
TBLASTN | 将蛋白质序列比对至翻译成蛋白库的核酸数据库 |
TBLASTX | 将翻译成蛋白序列的核酸序列比对至翻译为蛋白库的核酸数据库 |
下面我们就一起来看看如何在windows上下载和使用Blast序列比对程序吧!
BLAST下载
下载本地blast软件包
本地BLAST下载链接 https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/
首先选择相应的下载安装包
下载完成后打开链接,自定义安装路径,点击Install安装,blast会自动将你所选择的安装路径的bin文件添加至用户环境变量。
检查环境变量:
1. win+R快捷键打开Windows系统运行窗口;
2. 输入sysdm.cpl,点击确定后弹出系统属性窗口;
3. 依次选择高级——环境变量,弹出环境变量窗口;
4. 选择用户变量里变量名为Path这行编辑,检查是否已添加blast环境变量。
若没有添加进去,在编辑环境变量窗口点击新建,找到blast软件包的安装位置,将如图所示bin文件路径复制过去,点击确定,blast运行环境配置完毕。
下载建库所需基因组序列
方式一:NCBI官网下载
若只下载RefSeq参考序列,选择genome分类输入物种或菌株名检索下载序列即可;
若想获取多个版本的基因组组装(Assembly)序列,点击对应的基因组名称,如“R64”,即可下载所有染色体的数据
方式二:ftp下载
NCBI:https://ftp.ncbi.nlm.nih.gov/genomes/refseq/
在该路径下选择感兴趣的物种对应的界分类,比如需要下载人类hg38基因组序列,选择vertebrate_mammalian进入下一级页面,找到Homo sapiens点进去,一般来说选择/latest_assembly_versions文件夹,点击直接开始下载最新参考序列https://ftp.ncbi.nlm.nih.gov/genomes/refseq/vertebrate_mammalian/Homo_sapiens/latest_assembly_versions/GCF_000001405.40_GRCh38.p14/
使用
在进行序列比对前,需要根据下载的基因组数据构建本地比对数据库,一般通过makeblastbd命名完成。
makeblastdb命令
● fna为核酸序列fasta格式后缀名,faa为氨基酸序列fasta格式后缀名
比对算法 | 输入序列格式 | 比对序列格式 | 默认字长大小 | 默认匹配/错配得分 | 默认得分矩阵 | 默认空位/延伸罚分 |
blastn | fna | fna | -word_size 11 | -reward 2 -penalty -3 | / | -gapopen 5 -gapextend 2 |
blastp | faa | faa | -word_size 6 | / | -matrix BLOSUM62 | -gapopen 11 -gapextend 1 |
blastx | fna | faa | -word_size 6 | / | -matrix BLOSUM62 | -gapopen 11 -gapextend 1 |
tblastn | faa | fna | -word_size 6 | / | -matrix BLOSUM62 | -gapopen 11 -gapextend 1 |
tblastx | fna | fna | -word_size 3 | / | -matrix BLOSUM62 | / |
1. blastn:是将给定的核酸序列与核酸数据库中的序列进行比对;
2. blastp:是使用蛋白质序列与蛋白质数据库中的序列进行比对。作用:可以寻找较远源地序列;
3. blastx:将给定的核酸序列按照六种阅读框架将其翻译成蛋白质与蛋白质数据库中的序列进行比对。作用:对分析新序列和EST很有用;
4. tblastn:将给定的氨基酸序列与核酸数据库中的序列(双链)按不同的阅读框进行比对。作用:对于寻找数据库中序列没有标注的新编码区很有用;
5. tblastx:只在特殊情况下使用,它将DNA被检索的序列和核酸序列数据库中的序列按不同的阅读框全部翻译成蛋白质序列,然后进行蛋白质序列比对。
blast比对命令
● 比对报告格式 -outfmt [0-18]。BLAST的-outfmt选项提供个性化的选择。一共有18个选择,默认是0
参考:https://www.ncbi.nlm.nih.gov/books/NBK279684/,可以根据自己的需求选择不同的输出格式,格式说明如下:
输出格式编号 | 对应含义 |
0(默认) | pairwise |
1 | query-anchored showing identities |
2 | query-anchored no identities |
3 | flat query-anchored, show identities |
4 | flat query-anchored, no identities |
5 | XML Blast output |
6 | tabular |
7 | tabular with comment lines |
8 | Text ASN.1 |
9 | Binary ASN.1 |
10 | Comma-separated values |
11 | BLAST archive format (ASN.1) |
12 | Seqalign (JSON) |
13 | Multiple-file BLAST JSON |
14 | Multiple-file BLAST XML2 |
15 | Single-file BLAST JSON |
16 | Single-file BLAST XML2 |
17 | Sequence Alignment/Map (SAM) |
18 | Organism Report |
最为常用分别为-outfmt 5和-outfmt 6。
-outfmt 6结果中从左到右每一列的意义分别如下:| Query_id/Query(递交序列) | Subject_id/数据库序列(目标序列) | %_identity/identity(百分比) | alignment_length/比对长度 | mismatches/错配数| gap_openings/空位数 | q.start/递交序列开始位置 | q.end/递交序列结束位置 | s.start/目标序列开始位置 | s.end/目标序列结束位置 | e-value/期望值 | bit_score/比对最终得分 |
批量比对
至此,相信大家对BLAST已经有了一个基本的了解,有机会我们再围绕一个具体使用场景介绍说明。敬请期待……
【免责声明】发布内容来源于互联网、业内人士投稿以及微信公众号等公开资源,我们对文中观点持中立态度,文中观点不代表本平台的立场。所有文章仅供读者参考和交流使用。转载的文章版权归原作者所有,如有侵权行为,请及时与我们联系以便删除。