查看原文
其他

hope 2018-06-06

1. Blast简介

Blast,全称Basic Local Alignment Search Tool,即"基于局部比对算法的搜索工具,由Altschul等人于1990年发布。 Blast 能够实现比较两段核酸或者蛋白序列之间的同源性的功能,它能够快速的找到两段序列之间的同源序列并对区域进行打分以确定同源性的高低。Blast的运行方式是先用目标序列建数据库(这种数据库称为 里面的每一条序列称为subject),然后用待查的序列 (称为 query)在 database 中搜索,每一条 query 与database 中的每一条 要进行双 序列比对,从而得出全部比对结果。Blast 实现了五种可能的序列比对方式:

  • blastp:蛋白序列与蛋白库做比对,直接比对蛋白序列的同源性。

  • blastx:核酸序列对蛋白库的比对,先将核酸序列翻译成蛋白序列(根6种可能的蛋白序列),然后再与蛋白库做比对。

  • blastn:核酸序列对核酸库的比对,直接比较核酸序列的同源性。

  • tblastn:蛋白序列对核酸库的比对,将库中的核酸翻译成蛋白序列,然后进行比对。

  • tblastx:核酸序列对核酸库在蛋白级别对蛋白序列进行比对,将库和待查序列都翻译成蛋白序列,然后对蛋白序列进行比对。

Blast提供了核酸和蛋白序列之间所有可能的比对方式,同时具有较快的比对速度和较高的比对精度,因此在常规双序列比对分析中应用最为广泛。

使用

Blast的运行分为两个步骤:第一,建立目标序列的数据库;第二,做blast 比对。本文所述内容是基于 blast-2.2.26,相较于老版本部分参数存在差异,请自行查阅。

1. 建库:formatdb

formatdb -i db.seq [-options]

2. 比对:blastall


blastall -i query.fasta -d database_prefix -o blast.out -p blastn

Blast 的结果包含的信息很丰富。每一个 query 的比对结果从"BLASTN"开始,记录了版本和作者信息,"Query= "之后记录了 query 名和序列长度。如果两条序列没有找到相关性信 息,那么在"Searching.done"下方显示"* No hits found **";反之,则在 "Searching.done"下方记录了该 query 序列和库中每一条 subject 序列的比对概况列表, 包括比对得分(Score)和期望值(E value)。期望值是一个大于 0 的正实数,代表两条序列不相关的可能性。期望值是在整体上综合评定两条序列的相似性的参数,期望值数值越小,序列 相似性就越高,反之期望值数值越大,相似性越低。比对的输出结果会按照期望值从低到高的顺 序来排列。

几个重要的参数

1. -e(value)

用来过滤比对较差的结果的,用"-e"参数指定一个实数,blast 会过滤掉期望值大于这个数的比对结果。这样不但简化了结果,还缩短了运行时间和结果占用的空间。 比如在上一个例子中,在命令行中加上限制期望值;通常,对于不同物种间的比对,期望值设在 1e-5 左右即可;而对于同源性较高的物种或者 同种的比对,可以适当将期望值调得更小来过滤垃圾结果。比如同一物种 cDNA 和染色体的比对, 参数可用 1e-10 或更高。

2. -F 参数:

-F(T/F)参数是用来屏蔽简单重复和低复杂度序列的。如果选"T",程序在比对过程中会屏蔽掉 query 中的简单重复和低复杂度序列;选"F"则不会屏蔽。缺省值为"T"。

3. -m 参数:

“-e”参数能够做到筛选适当的比对结果,但是即使如此,blast 的输出结果仍然非常庞大并且难以处理。为了精简输出、节省存储空间、实现更多功能并使结果易于处理,blast 提供 了参数“-m (integer)”来设定输出格式,可供选择的值为 0~11 之间的整数,缺省为 0。

  • -m 0:缺省参数,显示一个 query 和一个 subject 两两比对的信息;

  • -m 1:显示 query 在所有 subjects 上的定位信息,并显示一致性比对信息,subject之间不同的碱基会被标出;

  • -m 2:显示 query 在所有 subjects 上的定位信息但是不显示一致性比对信息,subject之间不同的碱基会被标出;

  • -m 3:显示 query 在所有 subjects 的定位和一致性比对信息,不显示 subjects 之间的差异。

  • -m 4:显示 query 在所有 subjects 上的定位信息但是不显示一致性比对信息,不显示subjects 之间的差异;

  • -m 5:显示 query 在所有 subjects 上的定位信息但是不显示每个碱基的比对信息,补充"-"对齐比对区域,subjects 之间不同的碱基会被标出;

  • -m 6:显示 query 在所有 subjects 上的定位信息但是不显示每个碱基的比对信息,补充"-"对齐比对区域,不显示 subjects 之间的差异;

  • -m 7:输出 XML 格式的 blast 结果;

  • -m 8:列表格式的比对结果。从左到右各列的意义依次是:query 名、subject 名、 identity、比对长度、错配数、空位数、query 比对起始坐标、query 比对终止坐标、subject 比对起始坐标、subject 比对终止坐标、期望值、比对得分;

  • -m 9:带注释行的列表格式。格式和-m 8 一样,只是在每个 query 的比对结果前面加了 注释行用以说明列表中各列的意义;

  • -m 10 和 11:分别是 ASN 格式的文本文件和二进制文件;

4. -v 参数和-b 参数:

这两个参数都是限制输出结果的数量的。

  • -v (integer):规定输出中每一个 query 的比对列表最多显示 subject 个数(即"Sequences producing significant alignments:"后面列出的 subjects 数目),缺省为 500 条。

  • -b (integer):规定输出中每个 query 最多显示与多少条 subject 的比对条形图(即 每条 query 的结果中">"的个数),缺省为 250 条。如果同时使用"-m 8"参数,则输出结果中的 subjects 数量和"-b"参数规定的数量一致。

2. BLAT简介

Blat,全称 The BLAST-Like Alignment Tool,可以称为"类 BLAST 比对工具",由 W.James Kent 于 2002 年开发。当时随着人类基因组计划的进展,把大量基因和 ESTs 快速定 位到较大的基因组上成为一种迫切需要。blast 相对于这种比对有几个缺陷:速度偏慢、结果难 于处理、无法表示出包含 intron 的基因定位。Blat 就是在这种形势下应运而生了。Blat 的主要特点就是:速度快,共线性输出结果简单易读。对于比较小的序列(如 cDNA 等)对大基因组的比对,blat 无疑是首选。Blat 把相关的呈共线性的比对结果连接成为更大的 比对结果,从中也可以很容易的找到 exons 和 introns。因此,在相近物种的基因同源性分析 和 EST 分析中,blat 得到了广泛的应用。

使用

Blat 的输入文件必须满足 fasta 格式,运行时非常简单,不需要进行建库就可以直接比对。Blat 的基本命令:


blat database query [-参数] output

程序正常运行时,会在读完 database 中的所有 subject 序列时在屏幕输出 database的统计结果;默认输出结果是列表形式的文本文件,即 psl 格式。Psl格式的结果包含了详细的比对位置信息,每一列的意义都在文件开头列出。第 1~8 列是总 体的比对统计,包括精确比对碱基数、错配、query和subject上的gap个数与gap总长等等; 第 9~17 列是比对位置信息,包括比对方向、query和subject的名字、长度、比对起止位置;18~21列是显示每一个精确比对的block的信息,包括blocks数、每个block的长度和在query、subject上的位置。对于 psl 输出结果,需要注意以下几点:

  1. blat 的结果在 subject 上允许存在很大的 gap(intron 区域),所以同一个结果在query 和 subjects 上覆盖的区域可能会相差很多,这一点与 blast 不同。

  2. 在基因对基因组的比对中,block 的个数不能等同于 exon 的个数。因为 blat 对 block 的定义是一个没有插入缺失的比对,任何插入或者缺失的碱基都会使一个 block 终止,所以一 个 exon 很可能是由很多 blocks 构成的。因此 exon 和 intron 的个数要通过足够大的 gap 来判断。

  3. psl 结果里面碱基位置的计算是从 0 开始的而不是 1。

几个重要的参数

1. -noHead

由于输出文件开头列出的每一列的信息在做大规模处理的时候很不方便,所以可以用这个参数把 psl 格式里面冗长的头信息去掉,保留了干净的列表,便于后续程序的处理。

2. -out

除了 psl 格式,blat 还能通过添加参数"-out=type"输出其他格式的结果。Blat 提供了 以下 6 种格式的输出:-out=psl 默认格式-out=pslx 在 psl 的结果后面添加了每一个 block 的序列-out=axt blastz 关联的 axt 格式-out=maf multiz 关联的 maf 格式-out=wublast 类似 wublast 的输出格式-out=blast 类似 blast 的输出格式

3. -t、-q、-prot

这三个参数可以定义序列类型和比对类型。

  • "-t=type"定义 database 的类型-t=dna默认值,database 序列为 DNA 序列-t=prot database 序列为蛋白序列-t=dnax database 为 DNA 序列但是要翻译成 6 种蛋白序列比对

  • "-q=type"定义 query 的类型:-q=dna默认值,query 序列为 DNA 序列-q=rnaquery 序列为 RNA 序列-q=prot query 序列为蛋白序列-q=dnax query 为 DNA 序列,翻译成 6 种蛋白序列比对-q=rnax query 为 RNA 序列,翻译成 3 种蛋白序列比对

  • "-prot"相当于"-q"和"-t"都定义为"-prot"

做不同类型的比对时候需要注意一个问题,就是"-t"和"-q"的定义必须为同一类型。比如 database 和 query 都是蛋白序列,并且两者同时定义为"prot"的时候,比对能够正常进行; 如果 database 是 DNA 序列而 query 是蛋白序列,那么在定义"-q=prot"的同时还需要定义 "-t=dnax"。

还有更多文章,请移步公众号阅读

如果你生信基本技能已经入门,需要提高自己,请关注上面的生信技能树,看我们是如何完善生信技能,成为一个生信全栈工程师。

如果你是初学者,请关注下面的生信菜鸟团,了解生信基础名词,概念,扎实的打好基础,争取早日入门。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存