Smith数JAVA算法,SMITH WATERMAN算法

1.1 序列相似性比较

生物信息学中,对各种生物大分子序列进行分析是一件非常基本的工作。从序列的片段测定,拼接,基因的表达分析,到RNA和蛋白质的结构功能预测,物种亲缘树的构建都需要进行生物分子序列相似性的比较。在遗传物质长期的演化过程中,原本相同的DNA序列由于其中一条序列缺失了几个片断,或增加了几个片断,或某段子序列发生了位置的变化等,从而导致他们发生了不同,这两条序列不一定能进行精确的匹配,但是他们有一定的相似度。我们应该如何判定序列之间的这种相似性?对于这种情况,生物学家提出了一种用来评定序列相似性的方法,称为记分函数的方法。

定义1:如果

38041960_1.gif是一个序列,那么

38041960_2.gif表示

38041960_1.gif中的字符长度,

38041960_3.gif表示序列的第

38041960_4.gif个字符。如果序列

38041960_1.gif和序列

38041960_5.gif相同,必须满足如下条件:

(1)、38041960_6.gif

(2)、38041960_7.gif

定义2:如果38041960_8.gif38041960_9.gif是两个字符,那么38041960_10.gif表示38041960_8.gif38041960_9.gif字符在进行比较时所得的分值,38041960_11.gif称为一个记分函数,记分函数还包括当38041960_8.gif为空字符或38041960_9.gif为空字符的情况,在序列中一个所谓的空字符表示序列中空字符的位置可能缺失一个未知的字符,我们只能使用空字符来表示这种缺失;

定义3:如果38041960_1.gif38041960_5.gif是两个序列,那么38041960_12.gif的一个相似性比较38041960_13.gif可以用38041960_14.gif38041960_15.gif来表示,其中:

(1)、38041960_16.gif

(2)、将38041960_17.gif38041960_18.gif中的空字符除去后所得的序列分别和38041960_1.gif38041960_5.gif相同;

相似性比较38041960_13.gif就是38041960_17.gif38041960_18.gif中字符一一比对,相似性比较38041960_13.gif的得分38041960_19.gif可以用如下公式表示:

38041960_20.gif

其中38041960_21.gif

定义4:对于两个序列38041960_1.gif38041960_5.gif,它们的最优相似性比较38041960_13.gif是指在38041960_1.gif38041960_5.gif的所有相似性比较中得分最高的一个,序列相似性比较算法的主要目标就是如何寻找出序列间的最优相似性比较。

38041960_1.gif

38041960_5.gif

1

2

i-1

I

1

38041960_22.gif

38041960_23.gif

2

38041960_24.gif

38041960_25.gif

j-1

38041960_26.gif

38041960_27.gif

J

38041960_28.gif

38041960_29.gif

1.2 Smith Waterman算法

在寻找序列最优相似比较的算法中有两种算法使用最为广泛:Blast算法和Smith Waterman算法,Blast算法的运行速度要比Smith Waterman算法快,但是Smith Waterman算法要比BLAST算法更为精确。Smith Waterman算法先用迭代方法计算出两个序列的所有可能相似性比较的分值,然后通过动态规划的方法回溯寻找最优相似性比较。

Smith Waterman算法的具体描述如下:

对于两个序列38041960_1.gif38041960_5.gif38041960_30.gif38041960_31.gif,其中38041960_32.gif,都属于某个字符集38041960_33.gif,对38041960_34.gif中的任何元素和空符号,他们两两之间都有一个记分值,用记分函数38041960_10.gif表示,38041960_35.gif表示序列38041960_1.gif的前缀38041960_36.gif和序列38041960_5.gif的前缀38041960_37.gif之间的最优相似性比较的得分。那么有如下公式:

38041960_38.gif\

通过公式我们可以得到如下的一个得分矩阵38041960_39.gif

通过得分矩阵进行动态规划回溯法获得相似性比较的算法如下:

38041960_40.gif

38041960_41.gif38041960_42.gif

38041960_43.gif

38041960_44.gif

38041960_45.gif

38041960_46.gif

38041960_47.gif

其中38041960_48.gif函数表示在一个序列b的第c个位置插入一个字符a

Smith Waterman算法中,假设38041960_49.gif,38041960_50.gif, 在开始计算得分矩阵38041960_39.gif时需要计算矩阵的每一个得分值,计算复杂度为38041960_51.gif。从上面的回溯算法中可以看到,第二步回溯算法的计算复杂度为38041960_52.gif。这样Smith Waterman算法的整体时间复杂度为38041960_53.gif。使用Smith Waterman算法计算两个序列最大相似性比较时绝大部分计算时间将消耗在计算得分矩阵上38041960_39.gif

的值。当38041960_54.gif38041960_55.gif38041960_56.gif已经计算出来后,我们称38041960_57.gif是可计算的。如下图所示:

a

t

g

c

0

1

2

3

->

a

1

0

1

->

t

2

1

->

g

3

->

c

->图中“->”表示该矩阵元素当时可计算

通过上图的分析,在某个特定的时候,矩阵中出现多个可以同时计算的元素,实际上就是在计算得分矩阵的过程中包含着可并行性。Smith Waterman算法就可以利用这种并行性进行并行优化。一般来说,类似于Smith Waterman算法这种具有明显数据依赖和迭代的算法最适合于在数据流模型的并行计算机上进行并行化,但是这种数据流模型的计算机仅仅作为一种模型存在,这种体系结构的计算机现在并不存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值