基于numpy的基因序列比对算法NeedlemanWunsch

这是基于动态规划的一种文本比对算法,常用于基因组序列的比对。

比如基因组上有一段序列为ATCGATCTGT,我需要比对的序列为ATCCATCAG,那么首先需要构建一个初始的打分矩阵:

               A.   T.   C.   G.   A.   T.   C.   T.   G.   T.   
      [[  0.  -1.  -2.  -3.  -4.  -5.  -6.  -7.  -8.  -9. -10.]
A.     [ -1.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.]
T.     [ -2.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.]
C.     [ -3.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.]
C.     [ -4.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.]
A.     [ -5.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.]
T.     [ -6.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.]
C.     [ -7.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.]
A.     [ -8.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.]
G.     [ -9.   0.   0.   0.   0.   0.   0.   0.   0.   0.   0.]]

然后从第二列第二行开始遍历矩阵,分别从左边,上面,斜上角往该格子进行计算。match则加1,mismatch则减1,左边和上边过来的数都为gap减1,然后这个格子取三个方向

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值