文章目录

  • BLAST原理
    • 1.序列比对
    • 2.打分矩阵,起始空位,延伸空位
    • 3.needle算法
    • 4.water算法
    • 5.BLAST算法
      • seeding
      • find neighborhood words
      • index database
      • extending
      • 统计显著性检验
      • PSI-BLAST
  • 参考资料

BLAST原理

1.序列比对

序列比对的目的:相似的序列→相似的结构→相似的功能,以此推断未知序列的功能

或者:相似的序列→同源性,演化分析中用于构建演化树

双序列比对有多种可能的结果,例如对于两段蛋白序列:

有多种可能的比对方式:

判断哪种比对方式更好,我们需要用到打分矩阵MatrixMatrixMatrix

2.打分矩阵,起始空位,延伸空位

BLOSUM62BLOSUM62BLOSUM62:

根据打分矩阵可以给每一对匹配上的氨基酸一个分数,

对于空位,分为起始空位罚分和延伸空位罚分,

起始空位罚分(gapopenninggap\ openninggap openning):首次出现空位需要减去的分数

延伸空位罚分(gapextendinggap\ extendinggap extending):随后的延伸空位需要减去的分数

因为对于连续的空位,进化上我们倾向于认为这是作为一个片段同时丢失或插入的,而不是单个的丢失或插入组合形成了连续的空位(概率非常低),因此会有起始空位罚分和延伸空位罚分的区别。

有了以上规则,可以对每一个比对结果给出确定的分数(scorescorescore):

3.needle算法

对于两段序列比对,如果采用枚举法,得到的结果数量十分庞大,例如对于序列长度n=300

可能的比对方式有:

约为目前宇宙中可见原子数量的一亿倍

采用动态规划算法:

最好的比对=之前最好的比对+当前最好的比对

iii代表第一条序列的第iii个碱基/氨基酸,jjj代表第二条序列的第jjj个碱基/氨基酸,

F(i,j)F(i,j)F(i,j)代表到第iii个和第jjj个碱基/氨基酸位置,最好的比对分数

s(i,j)s(i,j)s(i,j)代表新一对碱基/氨基酸根据MatrixMatrixMatrix得到的分数

ddd代表空位罚分

对于上述算法的理解,即F(i,j)F(i,j)F(i,j)只有三种可能的来源,从这三种来源中找到最好的,所得到的结果即是最好的,对每一步都采取这样的算法,最终结果可以认为相对来讲也是最好的

可以用一个矩阵具体理解:

4.water算法

两个序列之间可能只有局部有很高相似性,而全长不具有,此时needle算法不再适用,

使用water算法:

与needle算法基本相同,区别只在于多了一个来源000

此时相当于可以重新定义比对起点,找到局部相似性:

5.BLAST算法

seeding

将query序列分为长度为k的seeds:

对于字长word_sizeword\_sizeword_size,k对于蛋白质一般为3,对于DNA一般为11,种子越短,灵敏度越高,用时越长。

find neighborhood words

找到与seed相近/相似的words,这一步的依据就是needle/water算法,将seed与相似字串进行比对

最终比对得分高于某一个临界值thresholdthresholdthreshold的字串,我们可以将其作为邻居字串

index database

对数据库中的序列查找上述字串,如果能够找到,称为一个hithithit

多个连续的hithithit可以组成一个hitshitshits

如下图所示

与对角线平行的hitshitshits,证明这一区域与queryqueryquery序列相似度很高。

extending

对上述hitshitshits继续向两端延伸,应用water算法打分,延伸至得分低于某一个特定值

这样就找到了相似区域HSP

最终的比对结果:

运用之前寻找hits的方法,可以在整个数据库中较快地找到所有的相似序列

统计显著性检验

由于序列的随机性,两条随机产生的序列也可能有一定相似性

使用EvalueEvalueEvalue评估
Evalue如何推导可以参考资料中Karlin论文

EvalueEvalueEvalue: 随机情况下,获得当前或者比当前更高比对分数的可能比对条数

显著性水平:
p=1−e−Ep=1-e^{-E} p=1−e−E

PSI-BLAST

Position-Specific Iterated BLAST,流程如下:

即根据第一次BLAST的搜索结果,由搜索到的序列构建PSSM,再以PSSM为打分矩阵,进行下一轮BLAST

使用PSI-BLAST能够找到亲缘关系更远的序列

PSSM(Position-Specific Scoring Matrix)构建方法:

1.(蛋白质为例)统计每个氨基酸在每个位点的出现频率,如下图I在2位点频率为0.67:

2.取极限:
Freq^=Freq×∑Nobs+1∑Nobs+20\hat{Freq}=\frac{Freq\times\sum N_{obs}+1}{\sum N_{obs}+20} Freq^​=∑Nobs​+20Freq×∑Nobs​+1​

3.计算score:


PSSM构建完成

参考资料

生物信息学方法,北京大学 高歌

BLAST算法,降帅

Needleman, S. B. & Wunseh, (3. D. (1970). J. Mol. Biol.48, 443-453.

Waterman, M. S. (1984). Bull. Math. Biol. 46, 473-500.

Altschul, S. F., et al. Basic Local Alignment Search Tool. Journal of Molecular Biology 215, 403–410
(1990) doi:10.1016/S0022‑2836(05)80360‑2

Karlin, S. and S. F. Altschul (1990). “METHODS FOR ASSESSING THE STATISTICAL SIGNIFICANCE OF MOLECULAR SEQUENCE FEATURES BY USING GENERAL SCORING SCHEMES.” Proceedings of the National Academy of Sciences of the United States of America 87(6): 2264-2268.
ll. Math. Biol. 46, 473-500.

BLAST原理和用法总结(一)相关推荐

  1. mysql 实时聚合分析,mysql累积聚合原理与用法实例分析

    本文实例讲述了mysql累积聚合原理与用法.分享给大家供大家参考,具体如下: 累积聚合为聚合从序列内第一个元素到当前元素的数据,如为每个员工返回每月开始到现在累积的订单数量和平均订单数量 行号问题有两 ...

  2. python装饰器原理-Python装饰器原理与用法分析

    这篇文章主要介绍了Python装饰器原理与用法,结合实例形式分析了Python装饰器的概念.原理.使用方法及相关操作注意事项,需要的朋友可以参考下 本文实例讲述了Python装饰器原理与用法.分享给大 ...

  3. python的编程模式-Python设计模式之状态模式原理与用法详解

    本文实例讲述了Python设计模式之状态模式原理与用法.分享给大家供大家参考,具体如下: 状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类 ...

  4. python装饰器原理-Python函数装饰器原理与用法详解

    本文实例讲述了Python函数装饰器原理与用法.分享给大家供大家参考,具体如下: 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值 ...

  5. python装饰器原理-python装饰器原理与用法深入详解

    本文实例讲述了python装饰器原理与用法.分享给大家供大家参考,具体如下: 你会Python嘛? 我会! 那你给我讲下Python装饰器吧! Python装饰器啊?我没用过哎 以上是我一个哥们面试时 ...

  6. python定义私有变量的方法_Python面向对象程序设计之私有变量,私有方法原理与用法分析...

    本文实例讲述了Python面向对象程序设计之私有变量,私有方法原理与用法.分享给大家供大家参考,具体如下: 私有变量,私有方法:python的私有化是为了规划私有属性,避免非相关的访问[假如!我有老婆 ...

  7. mysql 实时聚合分析_mysql滑动聚合/年初至今聚合原理与用法实例分析

    本文实例讲述了mysql滑动聚合/年初至今聚合原理与用法.分享给大家供大家参考,具体如下: 滑动聚合是按顺序对滑动窗口范围内的数据进行聚合的操作.下累积聚合不同,滑动聚合并不是统计开始计算的位置到当前 ...

  8. java 字节缓冲_Java字节缓冲流原理与用法详解

    本文实例讲述了Java字节缓冲流原理与用法.分享给大家供大家参考,具体如下: 一 介绍 BufferInputStresm和BufferOutputStream 这两个流类为IO提供了带缓冲区的操作, ...

  9. mysql的存储过程原理_mysql存储过程原理与用法详解

    本文实例讲述了Mysql存储过程原理与用法.分享给大家供大家参考,具体如下: 本文内容: 什么是存储过程 存储过程的创建 存储过程的使用 查看存储过程 修改存储过程 删除存储过程 首发日期:2018- ...

最新文章

  1. 【UEditor】关于导入ueditor-1.1.3.jar的问题---
  2. dw读取access中的图片_怎样从Access数据库中读取图片?解决办法
  3. apache 错误日志 File does not exist: 解决办法
  4. pandas数据可视化_5利用Pandas进行强大的可视化以进行数据预处理
  5. linux上修改html,linux进程名修改
  6. 关于FP Spread for Web Forms 2.0.0.0
  7. 虚拟化技术发展编年史
  8. [转]C#综合揭秘——细说进程、应用程序域与上下文之间的关系
  9. cv2读取带中文路径方法
  10. namenode和datanode的功能分别是什么_海德堡印刷机电路板分别是什么功能
  11. 热门的Linux运维管理面板全面汇总
  12. 微信公众号菜单html5,微信公众号自定义菜单全攻略
  13. 智课雅思词汇---十三、前缀ab-是什么意思
  14. Windows Server2008 R2搭建域环境(步骤最详细)
  15. Win10以太网没有有效的IP配置解决方法
  16. 自然语言处理 情绪识别
  17. 特大喜讯,uni-app支持PC版了!
  18. javascript 正则里面 \s\S 和 . 的区别
  19. 2020年3大免费又好用的BI工具软件
  20. PAT (Advanced Level) Practice 题解代码 - II (1051-1100)

热门文章

  1. 求解两点间最短路径的算法
  2. orcal根据身份证获取年龄
  3. Poj 1655 【树的重心】
  4. [大学物理实验-5]波尔共振实验
  5. 数学符号--罗马字母
  6. Html5--audio标签使用教程
  7. springboot上传文件临时文件夹找不到不能成功上传问题
  8. 几何光学类毕业论文文献有哪些?
  9. Arcgis软件应用(五)遥感图像地理配准、矢量化与地图制作
  10. echarts实现中国地图,山西地图,图表面积图配置项