第二章 序列比对——Needleman-Wunsch全局比对
【生信】第二章 序列比对——Needleman-Wunsch全局比对
主要为基因组测序比对相关知识,部分内容作笔记自查使用。如有错误或遗漏还请海涵,可评论或邮箱联系。
最后修改时间:2020-04-03 07:53:55 星期五
Needleman-Wunsch全局比对
一、符号约定
符号 |
说明 |
---|---|
|
两个序列 |
|
在{x_i} 比对到{y_i} 情况下,序列x和y目前的最好比对得分(括号里的下标,代表当前已经比对完毕的位置)
|
|
在{x_i} 比对到gap的情况下,序列x和y目前的最好比对得分(括号里的下标,代表当前已经比对完毕的位置)
|
|
在{y_i} 比对到gap的情况下,序列x和y目前的最好比对得分(括号里的下标,代表当前已经比对完毕的位置)
|
|
A替换成B的分数 |
|
开启一个gap的罚分(正值) |
|
延伸一个gap的罚分(正值) |
二、简单模型
2.1 模型假设
- 符合全局比对要求,即x全串比对到y全串上
- 先不考虑开启gap和延伸gap的区别,将gap统一认定罚d分
2.2 模型构建
设在{x_{1 \ldots i}}
和{y_{1 \ldots j}}
完全比对上时,最好的得分为F\left( {i,j} \right)
,其中{x_{1 \ldots i}}
和{y_{1 \ldots j}}
不一定是x和y全串。此时可能出现3种情况:
1. {{x_i}}
比对上{{y_j}}
,即前面的串{x_{1 \ldots i - 1}}
和{y_{1 \ldots i - 1}}
完全比对上
2. {{x_i}}
比对上gap,即前面的串{x_{1 \ldots i - 1}}
和{y_{1 \ldots j}}
完全比对上
3. {{y_j}}
比对上gap,即前面的串{x_{1 \ldots i}}
和{y_{1 \ldots j - 1}}
完全比对上
综上,有
F\left( {0,0} \right) = 0
及
F\left( {i,j} \right) = \max \begin{dcases}{F\left( {i - 1,j - 1} \right) + s\left( {{x_i},{y_j}} \right)} \\ {F\left( {i - 1,j} \right) - d} \\ {F\left( {i,j - 1} \right) -d} \end{dcases}
有了上述公式,我们就可以利用动态规划思想,计算F\left( {i,j} \right)
,填满下面每一个格子
2.3 模型使用
以串x:AAG
和y:AGC
为例。gap罚分d=5
。使用碱基替换矩阵如下:
计算F\left( {i,j} \right)
,填满动态规划矩阵,如下:
注意,该矩阵是含有箭头的,意味着记录正向路径,方便反向回溯。
整个矩阵的最右下角,即为两条序列全串的最优比对结果。此时,需要按正向路径(由箭头记录)相反的方向回溯,得到比对方法。
在此例中,F\left( {2,1} \right)
对应两个来源,因此上图中有两条路径可以回溯,得到2种比对方法。在此种打分规则下,2种方法都可以得到-6分,因此一样好,如下:
三、完整模型
3.1 模型假设
- 符合全局比对要求,即x全串比对到y全串上
- 引入开启gap的罚分d,和延伸gap的罚分e
3.2 模型构建
以有限状态机为思路,构建M
、X
、Y
三种状态的转换公式。
- 状态M:
状态M\left( {i,j} \right)
的前一格共3种情况。
1. 前一格{{x_{i - 1}}}
和{{y_{j - 1}}}
匹配上
2. 前一格{{x_{i - 1}}}
匹配gap
3. 前一格{{y_{j - 1}}}
匹配gap
综上,有M\left( {i,j} \right) = \max\begin{dcases}{M\left( {i - 1,j - 1} \right) + s\left( {{x_i},{y_j}} \right)} \\ {X\left( {i - 1,j - 1} \right) + s\left( {{x_i},{y_j}} \right)} \\ {Y\left( {i - 1,j - 1} \right) + s\left( {{x_i},{y_j}} \right)} \end{dcases}
- 状态X:
状态X\left( {i,j} \right)
的前一格共2种情况。
1. 前一格{{x_{i - 1}}}
和{{y_j}}
匹配上
2. 前一格{{x_{i - 1}}}
匹配gap
综上,有M\left( {i,j} \right) = \max\begin{dcases}{M\left( {i - 1,j} \right) - d} \\ {X\left( {i - 1,j} \right) - e} \end{dcases}
事实上,还有第3种情况,即前一格
{{y_j}}
匹配gap,但这会导致连续出现{{y_j}}
对gap后{{x_i}}
对gap,显然不如直接将两步合并成M\left( {i,j} \right)
。
- 状态Y:
状态Y\left( {i,j} \right)
的前一格共2种情况。
1. 前一格{{x_i}}
和{{y_{j - 1}}}
匹配上
2. 前一格{{y_{j - 1}}}
匹配gap
综上,有M\left( {i,j} \right) = \max\begin{dcases}{M\left( {i,j - 1} \right) - d} \\ {X\left( {i,j - 1} \right) - e} \end{dcases}
事实上,还有第3种情况,即前一格
{{x_i}}
匹配gap,但这会导致连续出现{{x_i}}
对gap后{{y_j}}
对gap,显然不如直接将两步合并成M\left( {i,j} \right)
。
有了上述公式,我们就可以利用动态规划思想,填充3张表,分别记录M\left( {{x_i},{y_j}} \right)
、X\left( {{x_i},{y_j}} \right)
和Y\left( {{x_i},{y_j}} \right)
,如下:
记录正向路径,正向路径可能会在2张表之间跳跃。之后从表M
的最右下角出发,按照正向路径相反的方向回溯,找到最优比对方法。
第二章 序列比对——Needleman-Wunsch全局比对相关推荐
- 第二章 序列比对——Blast局部比对
第二章 序列比对--Blast局部比对 阅读量: 330 主要为基因组测序比对相关知识,部分内容作笔记自查使用.如有错误或遗漏还请海涵,可评论或邮箱联系. 最后修改时间:2020-04-16 16: ...
- 4月19日读书笔记——第二章序列构成的数组(1)
流畅的python 第二章 序列构成的数组 在这之前,我想要先知道什么是序列.维基百科的答案是 数学上,序列是被排成一列的对象(或事件):这样,每个元素不是在其他元素之前,就是在其他元素之后. 例如: ...
- python程序设计第二章序列类型 题库及选解
由于学校的python是笔试,所以找了份感觉比较好的题库刷了下其中前八章的填空和判断,附上选解.各章链接如下 python程序设计题库完整版 https://blog.csdn.net/lijia11 ...
- 2020.11.3【读书笔记】丨生物信息学与功能基因组学(第二章 序列数据的获取 下)
2.7 基因组浏览器 三个主流基因组浏览器:Ensemble.UCSC和NCBI 基因组组装 定义: 所获得的一个物种DNA序列按照染色体的形式进行的一种组装. 内容: 对基因组的注释,如起止位点.外 ...
- 王道考研 计算机网络笔记 第二章:物理层
本文基于2019 王道考研 计算机网络: 2019 王道考研 计算机网络 个人笔记总结 第一章:王道考研 计算机网络笔记 第一章:概述&计算机网络体系结构 后续章节将陆续更新- 第二章 一.物 ...
- 【v2.x OGE-example 第二章(第二节) 修改器的使用】
2019独角兽企业重金招聘Python工程师标准>>> [v2.x OGE-example 第二章(第二节) 修改器的使用] 1. 位置:Modifier_example --> ...
- python语言程序设计2019版第二章课后答案-python语言程序设计基础课后答案第二章...
python语言程序设计基础课后答案第二章 以下合法的用户自定义标识符是____________. 导入模块或者模块中的元素要使用关键字________ . 下列哪个函数是用来控制画笔的尺寸的____ ...
- python编程入门经典 评分-《Python编程入门经典》--第二章:数值和运算符
一.在字符串中包含不同的数字 在第一章中使用格式说明符将两个字符串连接在一起时,用到了格式说明符%s,它的含义是"一个字符串".由于数值和字符串有不同的类型,必须使用不同的说明符将 ...
- Python 第二章-列表和元组
第二章-列表和元组 2.0 在Python中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序列号-即元素的位置, 也称为索引.第一个索引是0,第二个是1,以此类推 ...
最新文章
- linux 初始化工作进程 systemd简介
- 【Android RTMP】NV21 图像旋转处理 ( 快速搭建 RTMP 服务器 Shell 脚本 | 创建 RTMP 服务器镜像 | 浏览器观看直播 | 前置 / 后置摄像头图像旋转效果展示 )
- 【操作】鼠标hover效果——元素凸起并产生阴影
- 体验C++20新特性的最简便方法
- mysql5.5索引如何定义_MySQL5.5索引数在InnoDB引擎内与索引数在mysql中定义的数量是不一致问题-阿里云开发者社区...
- Linux环境通过java虚拟机定位程序问题位置的方法
- 头条和百度“大打出手”时,微信搜索去哪儿了?
- c jni 调用java_JNI NDK (AndroidStudio+CMake )实现C C++调用Java代码流程
- Nacos概述,下载与安装,初始化配置,服务注册应用,RestTemplate,Feign
- hdu 3506 Monkey Party 区间dp + 四边形不等式优化
- pb中控件变颜色_基于GDI+技术开发工业仪表盘控件
- CMMI中的过程改进
- 携程网络防火墙自动化运维之道
- java的time_Java TimeUnit使用
- 英语词汇篇 - 构词法
- 主键和外键的含义及区别
- (ROC-RK3568-PC) 裸机19_VOP2和IEP笔记
- 关于未来人工智能时代的一点感想
- 飞上天和太阳肩并肩中国人这项太阳能开发技术牛大发了
- 视频网站主机服务器,视频网站主机服务器
热门文章
- mysql pdo 查询一条数据_pdo mysql怎么输出第1条 第4条 第7条数据
- 综述:PyTorch显存机制分析
- 三维重建关键技术分享:特征检测+匹配+RT恢复+稠密重建方法
- Bags of Binary Words | 词袋模型解析
- PointPillars:点云物体识别的快速编码
- SpringMVC项目前台利用ajaxFileUpload传递图片后台接收
- 关于学习TensorFlow推荐的一些资源及使用方式
- 建立于因果推理与机器学习共识的稳定学习
- python math库常用函数_Python math库常用函数
- 常用转录组组装软件集合