暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

BLAST算法

流浪狗的赛博酒吧 2021-11-11
1939

BLAST 算法

课程视频:https://www.youtube.com/watch?v=g0nSH17psDc

BLAST是基于局部比对的算法,本视频对序列比对相关内容没有进行讲解。

What is blast ?

BLAST(Basic Local Alignment Search Tool)是一套在蛋白质数据库或DNA数据库中进行相似性比较的分析工具。BLAST程序能迅速与公开数据库进行相似性序列比较。BLAST结果中的得分是对一种对相似性的统计说明。

Types of blast

  1. BLASTP是蛋白序列到蛋白库中的一种查询。库中存在的每条已知序列将逐一地同每条所查序列作一对一的序列比对。

  2. BLASTX是核酸序列到蛋白库中的一种查询。先将核酸序列翻译成蛋白序列(一条核酸序列会被翻译成可能的六条蛋白),再对每一条作一对一的蛋白序列比对。

  3. BLASTN是核酸序列到核酸库中的一种查询。库中存在的每条已知序列都将同所查序列作一对一地核酸序列比对。

  4. TBLASTN是蛋白序列到核酸库中的一种查询。与BLASTX相反,它是将库中的核酸序列翻译成蛋白序列,再同所查序列作蛋白与蛋白的比对。

  5. TBLASTX是核酸序列到核酸库中的一种查询。此种查询将库中的核酸序列和所查的核酸序列都翻译成蛋白(每条核酸序列会产生6条可能的蛋白序列),这样每次比对会产生36种比对阵列。

其中,最迅速的是DNA-DNA比对以及protein-protein比对。

Heuristic Search

image-20211110181306005

左边有一段序列是相同的,而右边不存在相同序列。这种情况下,BLAST会选择左边而忽略右边。这样使BLAST算法变得更快速。

Algorithm

算法流程:

image-20211110181645816

1. Find all possible words in query

例如一段氨基酸序列为LIAWHCMPNAAA,把它分为4个k=3的k-mer,根据BLOSUM62矩阵,每个K-mer最高得分如下:

image-20211110201758190

BLOSUM62 matrix

image-20211110192831312

BLOSUM62打分细节可以参考:https://blog.csdn.net/weixin_43770577/article/details/104023846

得到分数后,通过指定一个threshold把得分较低的K-mer去掉,只留下WHC 和MPN。

2. Scan the database for occurrence of  words

image-20211110205624993

在database中寻找出现在query中的words(这一步计算机可以很快完成)

3. Score the alignment

image-20211110210949823

从k-mer向两个方向延伸,如果variant在矩阵中得分为正则继续延伸(extend),如果无法延伸则跳过这些不能配对的部分(join the gaps)。

等到延伸至无法继续时,计算所有配对的序列,得到一个HSP值

image-20211110211313359

根据矩阵计算所有匹配得分。另外gap open和gap extension需要另算罚分。最终得分为54分。

image-20211110211814026

Analyse the score

image-20211110212315644

Align and score to same sequence

image-20211111202935014

把query string的所有排列组合可能性列出,分别与database里被找到的这一条序列进行align,分别计算他们的得分。

plot score

把这些得分做一个直方图,形状如图。

image-20211111205118436

图中可以观察到:得分超过54的序列相比于随机序列占比很低,这说明随机顺序的序列不太可能得分超过54,所以在database找到的这条序列是具有显著性的。***(这里有一个问题,为什么这里仅列举组分相同的随机序列,而不是把所有氨基酸的排列组合可能性都列举出来?)***

这是根据经验得到的概率阈值。

image-20211111210315635

Convert P-values to E-values

image-20211111212825365

BLAST算法还有一个oversample(过采样)问题。越长的序列和database就越容易得到高分。为避免过拟合问题,需要将P值转变为E值

image-20211111214822393

database长度 x query序列长度 x 概率

计算公式如下。λ和k是scaling factor,无实际意义,在输出结果处可以查看。

image-20211111220113703

Convert raw score to bit score

image-20211111221639510

Bit score to E value

image-20211111222045689

当数据库变大,E value也会随之变化。

重要关系!!:当bit score(S')变大,E value 会降低

filtering

image-20211111223842838

图中是使用TBLASTX对核酸序列进行匹配(先转换为氨基酸,再通过氨基酸匹配计算得分)图中4个氨基酸全都是proline,但是下面那行全都是C。看起来不像一个正常的核酸序列。所以BLAST设计了过滤环节,目的是去除这种低复杂度序列。

有两种方法

image-20211111224306227

上面是soft filtering,忽视这段序列,不改变序列长度;

下面是hard filtering,把这段序列转换为N,并改变序列长度(以及E值)

下图为常用过滤工具

image-20211111224946241

psi-BLAST

首先我们有一些已比对的氨基酸序列,如下图

image-20211111225350825

根据这些序列中氨基酸的出现概率,得到一个矩阵

image-20211111225444852

当我们得到一个新的序列的时候,就可以用这个矩阵对序列进行打分。

把分数相加后,除以序列总长度。这个分数可以帮助我们判断新序列是否与已知的比对序列有相关关系。

image-20211111225557847
image-20211111230112875

总结。

image-20211111230158957



文章转载自流浪狗的赛博酒吧,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论