`
bio
  • 浏览: 20190 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

SMITH WATERMAN算法

阅读更多

1.1 序列相似性比较

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

定义1:如果Helps是一个序列,那么Helps表示中的字符长度,表示序列的第个字符。如果序列和序列相同,必须满足如下条件:

(1)、

(2)、

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

定义3:如果是两个序列,那么的一个相似性比较可以用来表示,其中:

(1)、

(2)、将中的空字符除去后所得的序列分别和相同;

相似性比较就是中字符一一比对,相似性比较的得分可以用如下公式表示:

其中

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

1

2

 

i-1

I

1

 

 

 

2

 

 

 

 

 

 

 

 

 

j-1

 

 

 

J

 

 

 

1.2 Smith Waterman算法

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

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

对于两个序列,其中,都属于某个字符集,对中的任何元素和空符号,他们两两之间都有一个记分值,用记分函数表示,表示序列的前缀和序列的前缀之间的最优相似性比较的得分。那么有如下公式:

 

\

 

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

 

 

 

 

 

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

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

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

的值。当已经计算出来后,我们称是可计算的。如下图所示:

    a c
  1  2  3  ->
a 1  0  1 ->  
t   ->    
g  ->      
c  ->        

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

 

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

分享到:
评论

相关推荐

    真正的smith waterman算法

    Smith-Waterman算法是生物信息学领域中一种经典的序列比对方法,由Gerald D. Smith和Walter F. Waterman在1981年提出。这个算法主要用于寻找两个生物序列(如DNA、RNA或蛋白质序列)之间的局部相似性,即使在全局不...

    smith waterman算法

    **Smith-Waterman算法**是生物信息学领域中一种经典的局部序列比对算法,由G.D. Smith和T.W. Waterman在1981年提出。它主要用于寻找两个生物序列(如DNA、RNA或蛋白质序列)之间的最佳相似区域,即使在序列中存在...

    SMITH WATERMAN算法 1.1 序列相似性比较 生物信息学中,对各种生物大 .doc

    SMITH WATERMAN算法 1.1 序列相似性比较 生物信息学中,对各种生物大 .doc

    fasta算法,Smith-waterman算法,编辑距离算法,最长公共子串算法

    在提供的文件中,`fasta1 (2).cpp`可能包含了fasta算法的实现,`SW.cpp`是Smith-Waterman算法的实现,`编辑距离.cpp`对应编辑距离算法的代码,而`最长公共子串.cpp`则涉及最长公共子串算法的编程实现。`.exe`和`.o`...

    Smith-Waterman算法,生物序列的局部比对实现

    Smith-Waterman算法,用Python实现生物序列的局部比对算法

    cudasmithwaterman:用于 DNA 序列比对的 Smith Waterman 算法的 GPU 加速 (CUDA) 实现

    下面我们将详细探讨Smith-Waterman算法以及其在CUDA环境下的实现。 1. **Smith-Waterman算法**: - **基本原理**:Smith-Waterman算法基于动态规划,通过构建一个得分矩阵来计算两个序列的最佳局部匹配。矩阵中的...

    smith-waterman:Smith-Waterman算法的OpenCL实现

    Smith-Waterman算法的实现,可在带有openCL的CPU和GPU上运行,以对串行并行执行进行基准测试。 基准测试将生成两个随机字符串并进行比较。 建造 转到src目录,然后运行make来构建程序。 $ cd ./src && make all ...

    sw_project:Smith-Waterman算法

    Smith-Waterman算法 该程序是Smith-Waterman算法的实现。 代码示例: 用法:python hw1.py -i -s示例:python hw1.py -i input.txt -s blosum62.txt 示例输入input.txt ...

    论文研究-双序列比对的算法研究.pdf

    详尽分析了双序列比对的实际意义,提出最佳比对不一定能反映进化的实际过程并给予分析,重点探讨了最重要的全局比对算法——Smith Waterman算法,同时提出了一种用数组记录比对过程中遍历路径的方法并对比对过程进行...

    GlobalAlignment:Smith-Waterman算法的全局比对

    该Java程序将使用Smith-Waterman全局对齐算法来找到任意两个给定字符串的最佳全局对齐方式。用法要在编译时运行此程序,请调用Alignment.main。注意默认情况下,运行结果将写入实例的本地目录中的logs_(iterations...

    基于GPU并行的生物序列局部比对算法.pdf

    Smith-Waterman算法作为其中的一种局部比对方法,以其高匹配敏感度而受到广泛关注。然而,由于其计算复杂度为O(mn),在处理大量序列时效率较低,限制了其在大规模数据中的应用。为了解决这一问题,基于GPU(通用图形...

    双序列全局比对算法与双序列局部比对算法

    使用Perl编程语言实现了双序列全局比对Needleman Wunsch算法,以及双序列局部比对Smith Waterman算法。该资源也可在github上下载:https://github.com/GouXiangJian/two_seq_alignment

    seq-align:Needleman-Wunsch和Smith-Waterman序列比对的快速,便携式C实现

    最佳局部(Smith-Waterman)和全局(Needleman-Wunsch)对齐算法的C实现。 编写为快速,便携式和易于使用。 命令行实用程序smith_waterman和needleman_wunsch提供了极大的灵活性。 代码也可以轻松地包含在第三方程序...

    序列比对算法使用动态规划化方法实现序列比对算法

    这种最佳匹配过程可以用Smith-Waterman算法或Needleman-Wunsch算法来实现。 **Smith-Waterman算法**: Smith-Waterman算法是一种局部比对方法,它能够找到两个序列中最具相似性的子序列,即使这些子序列在整个序列...

    异构CPU-GPU系统上的改进Smith-Waterman算法

    异构CPU-GPU系统上的改进Smith-Waterman算法

    序列比对-Needleman-Wunsch Smith-Waterman algorthm(java)

    序列比对-Needleman-Wunsch Smith-Waterman 算法(java) 序列比对是基因学的一个主要主题,它涉及到比较 DNA 序列并尝试找出两个序列的公共部分。如果两个 DNA 序列有类似的公共子序列,那么这些两个序列很可能是...

    GPU加速的生物序列比对.pdf

    该技术通过使用 GPU 加速 Smith-Waterman 算法,实现了生物序列比对的高速计算。 一、Smith-Waterman 算法 Smith-Waterman 算法是一种常用的生物序列比对算法,用于实现序列的局部比对。该算法通过动态规划方法,...

    序列比对算法综述(有兴趣的看看)

    Smith-Waterman算法是一种局部比对算法,最初由Smith和Waterman在1981年提出。该算法采用动态规划的方法,能够在两个序列之间找到最大得分的局部匹配区域。其核心步骤包括: - **初始化**:设定初始值F(0,0) = F(i,...

    【多序列比对】应用动态规划、A*算法、遗传算法分别解决MSA问题

    动态规划是解决多序列比对的经典方法,以Smith-Waterman和Needleman-Wunsch算法为代表。这些算法通过构建一个二维矩阵,矩阵的每个元素代表两序列对应位置的匹配得分。通过递推关系填充矩阵,并寻找最优路径,得到...

    fasta.zip_FASTA搜索算法_fasta_fasta算法全称

    - `localAlignment()`: 实现局部比对的函数,如Smith-Waterman算法。 - `main()`: 主函数,负责读取输入序列,调用上述函数进行比对,并输出结果。 通过分析和理解这个实现,你可以深入理解FASTA算法的原理,以及...

Global site tag (gtag.js) - Google Analytics