Blast使用详解
Blast,全称Basic Local Alignment Search Tool,即“基于局部比对算法的搜索工具”,由Altschul等人于1990年发布。Blast能够实现比较两端核酸或者蛋白序列之间的同源性的功能,它能够快速的找到两段序列之间的同源序列并对比对区域进行打分以确定同源性的高低。
Blast的运行方式是先用目标序列建数据库(这种数据库称为database,里面的每一条序列称为subject),然后用待查序列(query)在database中搜索,每一条query与database中的每一条subject都要进行双序列比对,从而得出全部比对结果。
Blast是一个继承的程序包,通过调用不同的比对模块,blast实现了物种可能的序列比对方式:
blastp:蛋白序列与蛋白库做比对。
blastx:核酸序列对蛋白库的比对,先将核酸序列翻译成蛋白序列(根据相位可以翻译成6种可能的蛋白序列),然后再与蛋白库作比对。
blastn:核酸序列对核算库的比对。
tblastn:蛋白序列对核算库的比对,将库中的核酸序列翻译成蛋白序列,然后进行比对。
tblastx:核酸序列对核算库在蛋白级别的比对,将库和待查序列都翻译成蛋白序列,然后对蛋白序列进行比对。
Blast提供了核酸和蛋白序列之间所有可能的比对方式,同时具有较快的比对速度和较高的比对精度,因此在常规双序列比对分析中应用最为广泛,可以毫不夸张的说,blast是做比对基因组学乃至整个生物信息学研究所必须掌握的一种比对工具。
使用:
blast的运行分为两个步骤:第一,建立目标序列的数据库;第二,做blast比对。
1、运行建库程序formatdb:
建库的工程是建立目标序列的索引文件,所以程序是formatdb。formatdb处理的都是格式为 ASN.1和 FASTA,而且不论是核苷酸序列数据库,还是蛋白质序列数据库;不论是使用Blastall ,还是Blastpgp,Mega Blast应用程序,这一步都是不可少的。
主要参数的说明:
-i 输入需要格式化的源数据库名称 Optional
-p 选择建库的类型,“T”表示蛋白库,“F”表示核算库,缺省值为“T”
T – protein F – nucleotide [T/F] Optional default = T
-a 输入数据库的格式是 ASN.1(否则是 FASTA)
T – True F - False [T/F] Optional default = F
-o 判断是否分析序列名并建立序列名索引,缺省值为“F”。
T – True : 解析序列标识并且建立目录
F – False : 与上相反
[T/F] Optional default = F
其他参数:
-l : “-l 文件名”用来改变LOG文件的命名
-n : “-n 文件名”可以自定义生成的库文件命名
命令示例:
formatdb -i ecoli.fa -p F -o T

程序输出:
如果建立的是核算库,“formatdb -i ecoli.fa”输出为ecoli.fa.nhr、ecoli.fa.nin、ecoli.fa.nsq,三个文件,如果选择了“-o T”,还会同时输出ecoli.fa.nsd、ecoli.fa.nsi、ecoli.fa.nni、ecoli.fa.nnd四个文件,一共七个。
蛋白库和核算库的输出类似,相应的输出文件为:ecoli.fa.nhr、ecoli.fa.nin、ecoli.fa.nsq和ecoli.fa.nsd、ecoli.fa.nsi、ecoli.fa.nni、ecoli.fa.nnd七个文件。
除了这个结果,程序还会输出LOG文件(默认为formatdb.log),里面记录了运行时间、版本号、序列数量等信息。
几点需要注意的问题:
1)、建库以后,做blast比对的输入文件就是建库所得的文件db.seq.n**或者db.seq.p**,而不是原始的FASTA序列,也就是说,建库以后,原始序列文件是可以删除的。
2)、如果命令行中选择了“-o T”,并且目标序列中好友gi号重复的序列名时,程序会停止建库并报错。
就是说库文件中不能出现重复的序列(标志是序列号,跟具体的序列没有关系)。
3)、如果输入序列不符合FASTA格式或者ASN.1格式,程序会自动退出,并报错。
[formatdb] ERROR: Could not open db.
4)、核酸序列可以用于建核算库和蛋白库,但是蛋白序列不能用于建核算库,这个是显然的,密码子的问题哦!
2、运行比对程序blastall:
Blast的主程序是blastall。程序的输入文件是query序列(- i参数)而和库文件(-d 参数),比对类型的选择(- p参数)和输出文件(- o 参数)由用户指定。其中“-p”参数有5中取值:
-p blastp:蛋白序列与蛋白库做比对。
-p blastx:核酸序列对蛋白库的比对。
-p blastn:核酸序列对核酸库的比对。
-p tblastn:蛋白序列对核酸库的比对。
-p tblastx:核酸序列对核酸库在蛋白级别的比对。
这些元素就构成了 blast 的基本运行命令(以 blastn 为例):
blastall -i query.fa -d database -o blast.out -p blastn
其中如果"-o"参数缺省,则结果输出方式为屏幕输出。
参数:
仅仅运行blast的基本运行命令,得到的结果往往不能清晰准确的表示出有用的信息。最大的问题就是有太多的冗余,很多很短的比对都会出现在输出结果中,导致结果杂乱无章。为了处理杂乱无章的比对结果,满足各种比对需求,blast设置了很多参数来限制比对的范围和输出的形式。一下多数结果以blastn距离,如不做特殊说明,这些参数适合于所有比对方式。
-e 参数
-e(value)参数是用来过滤比对较差的结果的,用“-e”参数指定一个实数,blast会过滤掉期望值大于这个数的比对结果(就是说这个值越小比对结果就越好)。
blastall -i query.fa -d database -o blast.out -p blastn -e 1e-10
通常情况下,对于不同物种之间的比对,期望值设在1e-5左右即可;而对于同源性较高的物种或者同种的比对,可以适度将期望值调的更小来过滤垃圾结果。比对同一物种cDNA和染色体的比对,参数可用1e-10或更高。
-F 参数
-F(T/F)参数是用来屏蔽简单重复和低复杂度序列的。如果选“T”,程序在比对过程中会屏蔽掉query中的简单重复和低复杂度序列;选“F”则不会屏蔽。缺省值为“T”。
比较两个结果,我们看出使用缺省参数的比对结果损失了一部分信息,得到的统计结果也
出现失真,期望值和 identity 都没有反映出真实情况。有时较长的重复序列甚至会导致比对终止。加了"-F F"就保证了比对结果的完整性。通常在大规模、低精度的比对中,往往用缺省参数,这样能避免程序把过多的时间浪费在无意义的简单重复上,提高运行速度;而在小规模、高精度的比对中,需要加上参数"-F F",保证比对的精确度和完整性。
-m 参数
“-e”参数能够做到筛选适当的比对结果,但是即使如此,blast的输出结果仍然非常庞大并且难以处理。为了精简输出、节省存储空间、实现更多功能并使结果易于处理,blast 提供了参数“-m (integer)”来设定输出格式,可供选择的值为 0~11 之间的整数,缺省为 0。下面就通过实例逐个解析“-m”参数能够实现的输出功能。
-m 8 : 列表格式的比对结果。从左到右各列的意义依次是:query名/subject名/identify/比对长度/错配数/空位数/query比对起始坐标/query比对终止坐标/subject比对起始坐标/subject比对终止坐标/期望值/比对得分
在 m8 格式中通过 subject 的比对起止位置可以判断出序列的比对方向。判断方法就是:query和subject的起始和终止坐标是否一致增减。
Blast使用详解的更多相关文章
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
随机推荐
- poj 2431
大意: 有n个加油点,给出每个加油点距离终点的位置和能加多少油,最后一行给出总长度和最初的油量.求最少加几次油能到终点,不能到的话输出-1. Sample Input 4 4 4 5 2 11 5 1 ...
- HDU 1045(Fire Net)题解
以防万一,题目原文和链接均附在文末.那么先是题目分析: [一句话题意] 给定大小的棋盘中部分格子存在可以阻止互相攻击的墙,问棋盘中可以放置最多多少个可以横纵攻击炮塔. [题目分析] 这题本来在搜索专题 ...
- 转:JavaScript函数式编程(三)
转:JavaScript函数式编程(三) 作者: Stark伟 这是完结篇了. 在第二篇文章里,我们介绍了 Maybe.Either.IO 等几种常见的 Functor,或许很多看完第二篇文章的人都会 ...
- 在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
这是两个相关的程序,前者是后者的基础.实际上前一个程序也是在前面博文的基础上做的修改,请参考<在OpenCV中利用鼠标绘制直线> .下面贴出代码. 程序之一,在OpenCV中利用鼠标绘制矩 ...
- Linux下的Oracle 11gr2安装完成的的自启动操作。
Linux下的Oracle在安装结束后是处于运行状态的.重启机器后,Oracle不会像在Windows下那样将Oracle添加到Windows服务,在linux下需要手动启动Orcle服务 以orac ...
- Aix6.1安装openssh
一.软件下载 1.官方网站下载: openssl IBM官方网站下载:https://www14.software.ibm.com/webapp/iwm/web/reg/download.do?sou ...
- auto, extern, register, static
对于一个数据的定义,需要指定2中属性: 存储类型和数据类型: static int a; auto char c; register int d; 1 auto 2 extern 3 register ...
- android-vlc for rtsp build OK
近期研究 rtsp http stream 流获取方式 vlc over live555 是个很不错的选择,当然了 andorid framework av也是支持rtsp http的,相同不错的选 ...
- Math.round(11.5)等于()Math.round(-11.5)等于()
几天前去面试,这道简单的题目居然做错了,看来基础就是慢慢积累的.并不断使用和复习才会成为高手,假设基础不是那么熟练.恐怕在成为高手的路上会困难重重.所以在做项目的间歇时间.偶尔回顾一下最基础的知识.是 ...
- Codeforces 191C Fools and Roads(树链拆分)
题目链接:Codeforces 191C Fools and Roads 题目大意:给定一个N节点的数.然后有M次操作,每次从u移动到v.问说每条边被移动过的次数. 解题思路:树链剖分维护边,用一个数 ...