【Python编程】---实现两DNA序列片段最长相同子序列的方

2020-04-15  本文已影响0人  卡布达b1

前言:现有长度相等,但碱基存在一定差异的两条DNA序列,求它们之间的最长相同子序列,并输出差异碱基的位置。

  1. 已知两DNA序列长度均为S,构建二维数组,从第0位开始匹配连续相同的字符,代码如下:
def GetSubStr(str1,str2):
    lstr1 = len(str1)
    lstr2 = len(str2)
    record = [[0 for i in range(lstr2+1)] for j in range(lstr1+1)]
    maxNum = 0
    p = 0
    for i in range(lstr1):
        for j in range(lstr2):
            if str1[i] == str2[j]:
                record[i+1][j+1] = record[i][j] + 1
                if record[i+1][j+1] > maxNum:
                    maxNum = record[i+1][j+1]
                    p = i + 1
    return [str1[p-maxNum:p], maxNum]
  1. 在两条原DNA序列中去除最长的相同子序列

(输出差异碱基的位置,见下篇)。

上一篇 下一篇

猜你喜欢

热点阅读