习惯了凌晨来敲那些复杂的代码
因为安静
因为此时的心里才被代码完全的占据,没有一丝的杂念
搞了两天多的递归,终于出结果了,
终于没把自己仍死循环里,否则还不知道谁来break out me呢!
----------------------------------------------------以下问题描述及解决方案---------------------------------------------
Q = catgt
S= acgctg
由Query和Subject所得的得分矩阵为:
1、
初始化得分矩阵的条件:
Matrix(0,0) = 0; ( 矩阵(0,0)这个点,初始化为0 )
Matrix(0,j) = match(-,y)+ Matrix(0,j-1) (j>=1)
Matrix(i,0) = match(x,-)+ Matrix(i-1,0) (i>=1)
Matrix(i-1,j-1) + match(Q[i], S[j]);
Matrix(i,j) = max Matrix(i-1,j) + match(Q[i], -);
Matrix(i,j-1) + match(-, S[j]);
2、
match(x,x) = 2 (两个字符相匹配得2分)
match(x,y) = match(x,-) = match(-,y) = -1 (两个字符不匹配或与空格匹配得-1分)
由以上条件,得到的得分矩阵为:
|
-
|
c
|
a
|
t
|
g
|
t
|
-
|
0
|
-1
|
-2
|
-3
|
-4
|
-5
|
a
|
-1
|
-1
|
1
|
0
|
-1
|
-2
|
c
|
-2
|
1
|
0
|
0
|
-1
|
-2
|
g
|
-3
|
0
|
0
|
-1
|
2
|
1
|
c
|
-4
|
-1
|
-1
|
-1
|
1
|
1
|
t
|
-5
|
-2
|
-2
|
1
|
0
|
3
|
g
|
6
|
-3
|
-3
|
0
|
3
|
2
|
回溯思想:
backTrace():
for( i=Q.length, j=S.length; i>0&&j>0; ) {
if ( Matrix(i,j) == Matrix(i-1,j-1) + match(Q[i], S[j]) ){
i--; j--;
}
else if ( Matrix(i,j) == Matrix(i-1,j) + match(Q[i], -) ){
i--;
//在Q序列中的j位置插入一个空格 ‘-’
}
else if( Matrix(i,j) == Matrix(i,j-1) + match(-, S[j]) ){
j--;
//在S序列中的i位置插入一个空格 ‘-’
}
}
问题:需要把标红色箭头的三条路径都选出来。
如下图所示:
所得结果为:
q = catg-t- q = -c-atgt q = -ca-tgt
s = -acgctg s = acgctg- s = acgctg-
debug的结果为:(这张图是这几天见到过的最漂亮的东西了,哈哈哈)
分享到:
相关推荐
Smith-Waterman算法是生物信息学领域中一种经典的序列比对方法,由Gerald D. Smith和Walter F. Waterman在1981年提出。这个算法主要用于寻找两个生物序列(如DNA、RNA或蛋白质序列)之间的局部相似性,即使在全局不...
**Smith-Waterman算法**是生物信息学领域中一种经典的局部序列比对算法,由G.D. Smith和T.W. Waterman在1981年提出。它主要用于寻找两个生物序列(如DNA、RNA或蛋白质序列)之间的最佳相似区域,即使在序列中存在...
Smith-Waterman算法的实现,可在带有openCL的CPU和GPU上运行,以对串行并行执行进行基准测试。 基准测试将生成两个随机字符串并进行比较。 建造 转到src目录,然后运行make来构建程序。 $ cd ./src && make all ...
`fasta`算法、`Smith-Waterman`(SW)算法、编辑距离算法以及最长公共子串算法都是这一领域中常用的序列比对方法。下面将详细介绍这些算法。 1. **fasta算法** `fasta`算法是一种快速的全局序列比对方法,由Pearson...
Smith-Waterman算法,用Python实现生物序列的局部比对算法
SMITH WATERMAN算法 1.1 序列相似性比较 生物信息学中,对各种生物大 .doc
可以使用需要重新加载biojava.jar ...Local alignment with Smith-Waterman: Time (ms): 0 Length: 3 Score: 3 Query: query, Length: 9 Target: target, Length: 8 Query: 7 gcg 9 ||| Target: 1 gcg 3
Smith-Waterman 算法是一种经典的序列比对方法,常用于生物信息学领域,用于寻找两个DNA序列之间的最佳匹配。GPU(Graphics Processing Unit)加速技术的引入,如CUDA(Compute Unified Device Architecture),使得...
序列比对-Needleman-Wunsch Smith-Waterman 算法(java) 序列比对是基因学的一个主要主题,它涉及到比较 DNA 序列并尝试找出两个序列的公共部分。如果两个 DNA 序列有类似的公共子序列,那么这些两个序列很可能是...
C语言中的Smith-Waterman和Needleman-Wunsch对齐网址: : 作者:艾萨克·特纳(Isaac Turner) 许可证:公共领域更新时间:2015年8月18日 关于 最佳局部(Smith-Waterman)和全局(Needleman-Wunsch)对齐算法的C...
SSWPY:用于基因组应用的SIMD Smith-Waterman Python模块这源自:请引用Zhao等人的。 2013年概述SSW是Smith-Waterman算法的快速实现,该算法使用单指令多数据(SIMD)指令在指令级别并行化算法。 它可以准确地返回...
Smith-Waterman算法 该程序是Smith-Waterman算法的实现。 代码示例: 用法:python hw1.py -i -s示例:python hw1.py -i input.txt -s blosum62.txt 示例输入input.txt ...
该Java程序将使用Smith-Waterman全局对齐算法来找到任意两个给定字符串的最佳全局对齐方式。用法要在编译时运行此程序,请调用Alignment.main。注意默认情况下,运行结果将写入实例的本地目录中的logs_(iterations...
在GPU上加速基于物种的蛋白质序列的Smith-Waterman对齐
平行 Smith-Waterman 对准软件 该项目包含 CUDA 代码和一些用于 PaSWAS 的 Python 工具。 PaSWAS 可用于比对 DNA、RNA 和蛋白质序列。 它可以在任何基于 NVIDIA 的 GPU 上运行。 (可选)Python 工具需要 Python 2.7...
### FPGASW: 加速大规模Smith-Waterman序列比对应用及回溯技术在FPGA线性阵列上的实现 #### 摘要与引言 本文介绍了一种利用现场可编程门阵列(FPGA)进行加速的Smith-Waterman (SW)序列比对算法——FPGASW。该算法...
Smith-Waterman C/C++/Python/Java/R 库 许可证:麻省理工学院 版权所有 (c) 2012-2015 波士顿学院 特此授予任何人免费获得本软件副本和相关文档文件(“软件”)的许可,不受限制地处理本软件,包括但不限于使用、...
rhino犀牛是一款基于工业设计...而waterman是一款犀牛的小插件,可以随机生成各种造型 输入面数即可。对于一些思维发散建立异形块面体的同学是一款不错的插件。喜欢的同学可以下载下来试试。再菜单栏输入waterman即可
#SSW:SIMD Smith-Waterman的Python包装器 概述 是 Smith-Waterman 算法的快速实现,它使用单指令多数据 (SIMD) 指令在 CPU 级别并行化算法。 这个存储库将 SSW 库包装成一个易于安装的高级 python 接口,没有外部库...
《图片添加水印工具——WaterMan v1.0 绿色版详解》 在数字时代,保护个人或公司的知识产权变得尤为重要。图片作为一种重要的视觉表达方式,常常被用于各种场合,如社交媒体、博客、产品展示等。然而,无保护的图片...