zoukankan      html  css  js  c++  java
  • INT102-Local-Alignment

     1 import numpy as np
     2 
     3 
     4 def update(a: int, b: int, c: int) -> tuple:
     5     if a > b and a > c and a > 0:
     6         return a, ""
     7     if b > a and b > c and b > 0:
     8         return b, ""
     9     if c > a and c > b and c > 0:
    10         return c, ""
    11     return 0, " "
    12 
    13 
    14 def mapping(c: str) -> int:
    15     if c == "A":
    16         return 0
    17     elif c == "C":
    18         return 1
    19     elif c == "G":
    20         return 2
    21     else:
    22         return 3
    23 
    24 
    25 def local_alignment(S: list, d: int, X: str, Y: str) -> tuple:
    26     n, m = len(X), len(Y)
    27     dp = [[0 for j in range(m + 1)] for i in range(n + 1)]
    28     flag = [[" " for j in range(m + 1)] for i in range(n + 1)]
    29     for j in range(m):
    30         dp[0][j + 1] = max(dp[0][j] + d, 0)
    31     for i in range(n):
    32         dp[i + 1][0] = max(dp[i][0] + d, 0)
    33     for i in range(1, n + 1, 1):
    34         for j in range(1, m + 1, 1):
    35             a = mapping(X[i - 1])
    36             b = mapping(Y[j - 1])
    37             dp[i][j], flag[i][j] = update(dp[i - 1][j - 1] + S[a][b], dp[i - 1][j] + d, dp[i][j - 1] + d)
    38     return dp, flag
    39 
    40 
    41 if __name__ == '__main__':
    42     X = "GAGT"
    43     Y = "AGACCT"
    44     S = [#A   C   G   T
    45         [ 1, -3, -2, -3],  # A
    46         [-3,  1, -3, -2],  # C
    47         [-2, -3,  1, -3],  # G
    48         [-3, -2, -3,  1]   # T
    49     ]
    50     dp, flag = local_alignment(S, -1, X, Y)
    51     print(np.array(dp))
    52     print(np.array(flag))
    ~~Jason_liu O(∩_∩)O
  • 相关阅读:
    js编码中常用的知识点
    oracle函数的使用
    oracle 临时表的使用
    oracle11G归档日志管理
    oracle中 高水位线详解
    oracle并行模式(Parallel)
    oracle常用函数详解(详细)
    oracle系统表的查询
    15000 字的 SQL 语句大全
    oracle_单引号问题和execute immediate 赋值问题
  • 原文地址:https://www.cnblogs.com/JasonCow/p/14790681.html
Copyright © 2011-2022 走看看