Python--学习初步-needleman-wunch 算法模拟

笔者最近在学习python, 用于一些简单开发和数据研究,needleman-wunch 算法是字符近似匹配算法,主要用于字符串近似匹配(拼写纠正)和生物学应用。以下是试验的代码:

str1 = 'crat'
str2 = 'arts'
ins = -1
dele = -1
repl = -1 
match = 1
ls1 = len(str1)
ls2 = len(str2)
j = 0  # row
k = 1  #(column)
l = 0
valtab =[[0 for i in range(ls1+1)] for i in range(ls2+1)]
valtab1 = valtab[0]

#    -------matrix initialization--------------
for valtab1 in valtab[0]:
    valtab[0][j] = j*dele
    j = j+1
while k < ls2+1:
    valtab[k][0] = k*ins
    k = k+1
#    print(valtab1)
#    -------matrix initialization--------------
k = 1
j = 1
while j < ls1+1:
    while k < ls2+1:
          if str1[j-1] == str2[k-1]:
             valtab[j][k] = max(valtab[j-1][k-1]+match,valtab[j-1][k]+match,valtab[j][k-1]+match)
             k = k+1
          else:
             valtab[j][k] = max(valtab[j-1][k-1]+repl,valtab[j-1][k]+dele,valtab[j][k-1]+ins)   
             k = k+1
    k = 1
    j = j+1
print(valtab[0][1],valtab[1][1],valtab[2][1],valtab[3][1],valtab[4][1])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值