序列相似性匹配算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
序列相似性匹配算法
今天同学问我是否知道序列相似性匹配算法,我⼀听蒙了,听都没听过。
问⼏位“⼩⽜”,都说不知。
唉,就不对“⽜”谈“法”了,⾃⼰去找。
我们google了下,发现基本思想没那么难,实现起来也容易。
BLAST是⽐较流⾏的算法,有现成的软件。
还有⼀种叫做Smith Waterman算法,在BLAST的基础上有改进,精度更⾼。
基本思想差不多。
背景:
在⽣物学的研究中,有⼀种常⽤的⽅法,就是通过⽐较分析获取有⽤的信息和知识。
分⼦⽣物学家已经认识到,将未知序列同已知序列进⾏⽐较分析是⼀个强有⼒的研究⼿段。
⽣物学领域中绝⼤部分的问题在计算机科学领域中主要体现为序列或字符串的问题,例如:
⑴、通过⼀些序列⽚段的重叠来重新构造⼀条DNA的长序列
⑵、通过⼤量试验获得的验证数据来确定其物理和遗传的映射图
⑶、 DNA序列的排序(Sorting)、恢复(Retrieving)和⽐较(Comparing)
⑷、⽐较两条或多条DNA序列的相似性
⑸、在数据库中搜索相应的序列或⼦序列
⑹、找出蛋⽩质序列或DNA序列中信息学⽅⾯的因素
⑺、测定出经常出现的核苷的模型(或模式)
上述的许多问题都着眼于在不通过进⾏任何实验的前提下,了解蛋⽩质的功能或结构。
当需要鉴别某⼀基因或确定其功能时,我们可以在已知蛋⽩质的数据库中搜索相似的蛋⽩质序列,以此来确定其功能。
其所依据的原理是:相似的序列产⽣结构或功能相似的蛋⽩质。
实际上,考虑到蛋⽩质折叠中的各种不确定因素,如果两条蛋⽩质序列的相似性⼤于30%,则可以认为这两条序列所表⽰的蛋⽩质具有相似的三维结构。
问题可简化为:给定两个有信息缺失的序列S,T,判定它们之间的相似性。
定义1:如果x和y是两个任意的字符,那么 q(x,y)表⽰字符x和y在进⾏⽐较时所得的分值,称为⼀个记分函数。
记分函数包括了当x为空字符或y为空字符的情况,在序列中⼀个所谓的空字符表⽰序列在此位置可能缺失了⼀个字符,我们⽤“—”来表⽰这种缺失。
在不同的算法当中,记分函数可以有不同的记分⽅法。
例如可以这样定义记分函数: q(x,x)= +2, q(x,y)=q(-,y)=q(x,-)=-1 。
定义2:给定两条序列S= s1…s n和T=t1…t m。
那么我们⽤|S|来表⽰S的长度,S[i]表⽰序列S的第i个字符。
如果序列S和T相同,则必须满⾜:
(1) | S | = | T |;
(2)S[i] = T[i],(0<i≤| S | );
定义3:如果S和T是两个序列,那么S和T的全局联配(alignment)A可以⽤序列S’和T’来表⽰,其中:
(1) | S’ | = | T’ |;
(2)将S’和T’中的空字符除去后所得到的序列分别为S和T,(例S = “a c b c d b”,T = “c a d b d”,那么S’ = “a c - - b c d b”, T’ = “- c a d b - d –” );
联配就是把序列S’和T’上下罗列起来,相应的位置进⾏⼀⼀的⽐较。
联配A的分值Score可以⽤如下的公式来表⽰:
Score=Sum(q(S’[i] ,T’[i])),i=1,……,l其中l = | S’ | = | T’ |;
定义4:对于两个序列S和T,它们的全局最优联配A是指在S和T的所有相似性⽐较中最⾼分值Score所对应的联配。