【半全局匹配】基于改进SmithWaterman算法的半全局基因匹配方法

算法介绍:

全局匹配:Needleman-Wunsch算法

使用这个算法主要考虑三个步骤: 1. 构造打分规则,分为匹配,错配和空位; 2. 初始化矩阵; 3. 回溯求出最长序列

具体来说: 设两条序列分别为A和B(长度分别为m和n)在初始化时,构造(m+1,n+1)矩阵,第一列和第一行使用空位罚分规则进行计分。初始化的(0,0)点,默认设置为0。 之后的每一行每一列的每一个单元格的值,是,左,上,左上角的值加上对应的增量的值(左,上两种情况统称为indel(空位))。 在回溯的过程中,从右下角开始回溯到左上角。过程中的路线选取规则为:取三个数中的最大值,若出现三个数中有相同的情况,则表示存在branch,在生物信息学中,应该全部给予考虑,如果只以算法的角度考虑,可以使用(左上,上,左的顺序来进行取舍)。

局部匹配:SmithWaterman 算法

史密斯-沃特曼算法(Smith-Waterman algorithm)是一种进行局部序列比对(相对于全局比对) 算法,用于找出两个核苷酸序列或蛋白质序列之间的相似区域。该算法的目的不是进行全序列的比对,而是找出两个序列中具有高相似度的片段。
该算法由坦普尔·史密斯(Temple F. Smith)和迈克尔·沃特曼(Michael S. Waterman)于1981年提出。史密斯-沃特曼算法是尼德曼-翁施算法的一个变体,二者都是动态规划算法。 这一算法的优势在于可以在给定的打分方法下找出两个序列的最优的局部比对(打分方法使用了置换矩阵和空位罚分)

。该算法和尼德曼-翁施算法的主要区别在于该算法不存在负分(负分被替换为零),因此局部比对成为可能。回溯从分数最高的矩阵元素开始,直到遇到分数为零的元素停止。分数最高的局部比对结果在此过程中产生。在实际运用中,人们通常使用该算法的优化版本。
具体回溯步骤与上述相同, needleman-wunsch算法与Smith-waterman算法的最大区别是: 1.在初始化时,第一行与第一列均初始化为0,因为在smith算法中不会出现负数; 2.在比对的过程中,如果出现了负数,则直接设为0,原因是为了重新计分,因为负数代表之前的比对过程的最后,已经不存在相同序列了; 3.回溯的过程中,不需要从右下角回溯到左上角,直接从最大值回溯到遇到0未知。

半全局匹配:改进SmithWaterman

在进行基因匹配的过程中,出了对两个序列进行全局匹配和局部匹配之外,还存在进行半全局匹配的实际需求,即:对某一序列进行全局匹配,对另一序列进行局部匹配,以求解最大匹配度。
思考:全局与局部的根本差异: 即匹配度与匹配率的均衡
全局匹配优先考虑匹配率
:找到得分最高情况下的 全序列的匹配方式 ,优点:整体性强,反映了两段序列的整体匹配情况;缺点:序列点对点的匹配度低,总体得分不高。
全局匹配优先考虑匹配度
:找到得分最高情况下的 任意匹配方式 ,优点:序列点对点的匹配度高,匹配得分高,很好的反映了局部的匹配情况,缺点:整体性差,无法反映了两段序列的整体匹配情况。

半全局匹配兼顾匹配度和匹配率
对长段序列,优先考虑匹配率,进行全局匹配;对短段序列,优先考虑匹配度,进行局部匹配。综合之后,实现了对长短序列的全局匹配和局部匹配考察,既能够发现长序列各点位的匹配度情况,也能够提高短序列和长序列的匹配度。

半全局匹配算法的思路:

在smithwaterman和 Needleman-Wunsch算法的基础上,进行如下改进:
(1):以长序列为行,短序列为列;
(2):在最大值出对应列的最后一行开始回溯;
(3):调整上方和对角方向的优先度,得分相同时,优先采取上方
其余实现细节同smithwaterman和 Needleman-Wunsch,不过多赘述。

半全局匹配算法的matlab实现:

matlab 实现:
代码框架如图,具体实现细节私聊
运行结果:
半全局匹配:
在这里插入图片描述
全局和局部匹配:
在这里插入图片描述
有遇到相关问题的朋友,欢迎沟通交流,给我私信或者留言,看到就会回复.

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝色洛特

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值