javascript - BLOSUM62(或 45)在 JavaScript 中评分

标签 javascript python alignment bioinformatics

我正在处理多个序列比对,同时与多个基于 Web 的 API 进行交互,因此我一直在 JavaScript 中进行大部分轻量级分析。我目前正在尝试弄清楚如何在 JavaScript 中计算 BLOSUM62 分数。 Python 函数有很多,例如来自 Github 的以下函数:

#!/usr/bin/env python
# Usage: python blosum.py blosum62.txt
#        Then, enter input in "row col" format -- e..g, "s f".
import sys

class InvalidPairException(Exception):
  pass

class Matrix:
  def __init__(self, matrix_filename):
    self._load_matrix(matrix_filename)

  def _load_matrix(self, matrix_filename):
    with open(matrix_filename) as matrix_file:
      matrix = matrix_file.read()
    lines = matrix.strip().split('\n')

    header = lines.pop(0)
    columns = header.split()
    matrix = {}

    for row in lines:
      entries = row.split()
      row_name = entries.pop(0)
      matrix[row_name] = {}

      if len(entries) != len(columns):
        raise Exception('Improper entry number in row')
      for column_name in columns:
        matrix[row_name][column_name] = entries.pop(0)

    self._matrix = matrix

  def lookup_score(self, a, b):
    a = a.upper()
    b = b.upper()

    if a not in self._matrix or b not in self._matrix[a]:
      raise InvalidPairException('[%s, %s]' % (a, b))
    return self._matrix[a][b]


def run_repl(matrix):
  while True:
    try:
      user_input = input('>>> ').strip()
    except (EOFError, KeyboardInterrupt) as e:
      print()
      return
    if user_input.lower() in ['q', 'exit', 'quit']:
      return

    components = user_input.split()
    if len(components) != 2:
      continue
    try:
      print(matrix.lookup_score(components[0], components[1]))
    except InvalidPairException:
      continue

def main():
  if len(sys.argv) != 2:
    sys.exit('Usage: %s [matrix filename]')
  matrix_filename = sys.argv[1]
  matrix = Matrix(matrix_filename)
  run_repl(matrix)

if __name__ == '__main__':
  main()

它使用 Blosum62 矩阵:

   A  R  N  D  C  Q  E  G  H  I  L  K  M  F  P  S  T  W  Y  V  B  Z  X  *
A  4 -1 -2 -2  0 -1 -1  0 -2 -1 -1 -1 -1 -2 -1  1  0 -3 -2  0 -2 -1  0 -4
R -1  5  0 -2 -3  1  0 -2  0 -3 -2  2 -1 -3 -2 -1 -1 -3 -2 -3 -1  0 -1 -4
N -2  0  6  1 -3  0  0  0  1 -3 -3  0 -2 -3 -2  1  0 -4 -2 -3  3  0 -1 -4
D -2 -2  1  6 -3  0  2 -1 -1 -3 -4 -1 -3 -3 -1  0 -1 -4 -3 -3  4  1 -1 -4
C  0 -3 -3 -3  9 -3 -4 -3 -3 -1 -1 -3 -1 -2 -3 -1 -1 -2 -2 -1 -3 -3 -2 -4
Q -1  1  0  0 -3  5  2 -2  0 -3 -2  1  0 -3 -1  0 -1 -2 -1 -2  0  3 -1 -4
E -1  0  0  2 -4  2  5 -2  0 -3 -3  1 -2 -3 -1  0 -1 -3 -2 -2  1  4 -1 -4
G  0 -2  0 -1 -3 -2 -2  6 -2 -4 -4 -2 -3 -3 -2  0 -2 -2 -3 -3 -1 -2 -1 -4
H -2  0  1 -1 -3  0  0 -2  8 -3 -3 -1 -2 -1 -2 -1 -2 -2  2 -3  0  0 -1 -4
I -1 -3 -3 -3 -1 -3 -3 -4 -3  4  2 -3  1  0 -3 -2 -1 -3 -1  3 -3 -3 -1 -4
L -1 -2 -3 -4 -1 -2 -3 -4 -3  2  4 -2  2  0 -3 -2 -1 -2 -1  1 -4 -3 -1 -4
K -1  2  0 -1 -3  1  1 -2 -1 -3 -2  5 -1 -3 -1  0 -1 -3 -2 -2  0  1 -1 -4
M -1 -1 -2 -3 -1  0 -2 -3 -2  1  2 -1  5  0 -2 -1 -1 -1 -1  1 -3 -1 -1 -4
F -2 -3 -3 -3 -2 -3 -3 -3 -1  0  0 -3  0  6 -4 -2 -2  1  3 -1 -3 -3 -1 -4
P -1 -2 -2 -1 -3 -1 -1 -2 -2 -3 -3 -1 -2 -4  7 -1 -1 -4 -3 -2 -2 -1 -2 -4
S  1 -1  1  0 -1  0  0  0 -1 -2 -2  0 -1 -2 -1  4  1 -3 -2 -2  0  0  0 -4
T  0 -1  0 -1 -1 -1 -1 -2 -2 -1 -1 -1 -1 -2 -1  1  5 -2 -2  0 -1 -1  0 -4
W -3 -3 -4 -4 -2 -2 -3 -2 -2 -3 -2 -3 -1  1 -4 -3 -2 11  2 -3 -4 -3 -2 -4
Y -2 -2 -2 -3 -2 -1 -2 -3  2 -1 -1 -2 -1  3 -3 -2 -2  2  7 -1 -3 -2 -1 -4
V  0 -3 -3 -3 -1 -2 -2 -3 -3  3  1 -2  1 -1 -2 -2  0 -3 -1  4 -3 -2 -1 -4
B -2 -1  3  4 -3  0  1 -1  0 -3 -4  0 -3 -3 -2  0 -1 -4 -3 -3  4  1 -1 -4
Z -1  0  0  1 -3  3  4 -2  0 -3 -3  1 -1 -3 -1  0 -1 -3 -2 -2  1  4 -1 -4
X  0 -1 -1 -1 -2 -1 -1 -1 -1 -1 -1 -1 -1 -1 -2  0  0 -2 -1 -1 -1 -1 -1 -4
* -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4 -4  1

但是我绝对不确定(作为一个 Python 新手)如何将其转换为 JavaScript。有没有 JavaScript 函数可以实现这个功能?或者有人有如何解决这个问题的建议吗?

最佳答案

这不是完整的答案,但我将 blossum62 矩阵制作成 JavaScript 友好的内容,以便希望您可以自己编写评分(我不明白上面的示例代码中的评分是如何完成的)

var blossum62 = {'*': {'*': 1, 'A': -4, 'C': -4, 'B': -4, 'E': -4, 'D': -4, 'G': -4, 'F': -4, 'I': -4, 'H': -4, 'K': -4, 'M': -4, 'L': -4, 'N': -4, 'Q': -4, 'P': -4, 'S': -4, 'R': -4, 'T': -4, 'W': -4, 'V': -4, 'Y': -4, 'X': -4, 'Z': -4}, 'A': {'*': -4, 'A': 4, 'C': 0, 'B': -2, 'E': -1, 'D': -2, 'G': 0, 'F': -2, 'I': -1, 'H': -2, 'K': -1, 'M': -1, 'L': -1, 'N': -2, 'Q': -1, 'P': -1, 'S': 1, 'R': -1, 'T': 0, 'W': -3, 'V': 0, 'Y': -2, 'X': 0, 'Z': -1}, 'C': {'*': -4, 'A': 0, 'C': 9, 'B': -3, 'E': -4, 'D': -3, 'G': -3, 'F': -2, 'I': -1, 'H': -3, 'K': -3, 'M': -1, 'L': -1, 'N': -3, 'Q': -3, 'P': -3, 'S': -1, 'R': -3, 'T': -1, 'W': -2, 'V': -1, 'Y': -2, 'X': -2, 'Z': -3}, 'B': {'*': -4, 'A': -2, 'C': -3, 'B': 4, 'E': 1, 'D': 4, 'G': -1, 'F': -3, 'I': -3, 'H': 0, 'K': 0, 'M': -3, 'L': -4, 'N': 3, 'Q': 0, 'P': -2, 'S': 0, 'R': -1, 'T': -1, 'W': -4, 'V': -3, 'Y': -3, 'X': -1, 'Z': 1}, 'E': {'*': -4, 'A': -1, 'C': -4, 'B': 1, 'E': 5, 'D': 2, 'G': -2, 'F': -3, 'I': -3, 'H': 0, 'K': 1, 'M': -2, 'L': -3, 'N': 0, 'Q': 2, 'P': -1, 'S': 0, 'R': 0, 'T': -1, 'W': -3, 'V': -2, 'Y': -2, 'X': -1, 'Z': 4}, 'D': {'*': -4, 'A': -2, 'C': -3, 'B': 4, 'E': 2, 'D': 6, 'G': -1, 'F': -3, 'I': -3, 'H': -1, 'K': -1, 'M': -3, 'L': -4, 'N': 1, 'Q': 0, 'P': -1, 'S': 0, 'R': -2, 'T': -1, 'W': -4, 'V': -3, 'Y': -3, 'X': -1, 'Z': 1}, 'G': {'*': -4, 'A': 0, 'C': -3, 'B': -1, 'E': -2, 'D': -1, 'G': 6, 'F': -3, 'I': -4, 'H': -2, 'K': -2, 'M': -3, 'L': -4, 'N': 0, 'Q': -2, 'P': -2, 'S': 0, 'R': -2, 'T': -2, 'W': -2, 'V': -3, 'Y': -3, 'X': -1, 'Z': -2}, 'F': {'*': -4, 'A': -2, 'C': -2, 'B': -3, 'E': -3, 'D': -3, 'G': -3, 'F': 6, 'I': 0, 'H': -1, 'K': -3, 'M': 0, 'L': 0, 'N': -3, 'Q': -3, 'P': -4, 'S': -2, 'R': -3, 'T': -2, 'W': 1, 'V': -1, 'Y': 3, 'X': -1, 'Z': -3}, 'I': {'*': -4, 'A': -1, 'C': -1, 'B': -3, 'E': -3, 'D': -3, 'G': -4, 'F': 0, 'I': 4, 'H': -3, 'K': -3, 'M': 1, 'L': 2, 'N': -3, 'Q': -3, 'P': -3, 'S': -2, 'R': -3, 'T': -1, 'W': -3, 'V': 3, 'Y': -1, 'X': -1, 'Z': -3}, 'H': {'*': -4, 'A': -2, 'C': -3, 'B': 0, 'E': 0, 'D': -1, 'G': -2, 'F': -1, 'I': -3, 'H': 8, 'K': -1, 'M': -2, 'L': -3, 'N': 1, 'Q': 0, 'P': -2, 'S': -1, 'R': 0, 'T': -2, 'W': -2, 'V': -3, 'Y': 2, 'X': -1, 'Z': 0}, 'K': {'*': -4, 'A': -1, 'C': -3, 'B': 0, 'E': 1, 'D': -1, 'G': -2, 'F': -3, 'I': -3, 'H': -1, 'K': 5, 'M': -1, 'L': -2, 'N': 0, 'Q': 1, 'P': -1, 'S': 0, 'R': 2, 'T': -1, 'W': -3, 'V': -2, 'Y': -2, 'X': -1, 'Z': 1}, 'M': {'*': -4, 'A': -1, 'C': -1, 'B': -3, 'E': -2, 'D': -3, 'G': -3, 'F': 0, 'I': 1, 'H': -2, 'K': -1, 'M': 5, 'L': 2, 'N': -2, 'Q': 0, 'P': -2, 'S': -1, 'R': -1, 'T': -1, 'W': -1, 'V': 1, 'Y': -1, 'X': -1, 'Z': -1}, 'L': {'*': -4, 'A': -1, 'C': -1, 'B': -4, 'E': -3, 'D': -4, 'G': -4, 'F': 0, 'I': 2, 'H': -3, 'K': -2, 'M': 2, 'L': 4, 'N': -3, 'Q': -2, 'P': -3, 'S': -2, 'R': -2, 'T': -1, 'W': -2, 'V': 1, 'Y': -1, 'X': -1, 'Z': -3}, 'N': {'*': -4, 'A': -2, 'C': -3, 'B': 3, 'E': 0, 'D': 1, 'G': 0, 'F': -3, 'I': -3, 'H': 1, 'K': 0, 'M': -2, 'L': -3, 'N': 6, 'Q': 0, 'P': -2, 'S': 1, 'R': 0, 'T': 0, 'W': -4, 'V': -3, 'Y': -2, 'X': -1, 'Z': 0}, 'Q': {'*': -4, 'A': -1, 'C': -3, 'B': 0, 'E': 2, 'D': 0, 'G': -2, 'F': -3, 'I': -3, 'H': 0, 'K': 1, 'M': 0, 'L': -2, 'N': 0, 'Q': 5, 'P': -1, 'S': 0, 'R': 1, 'T': -1, 'W': -2, 'V': -2, 'Y': -1, 'X': -1, 'Z': 3}, 'P': {'*': -4, 'A': -1, 'C': -3, 'B': -2, 'E': -1, 'D': -1, 'G': -2, 'F': -4, 'I': -3, 'H': -2, 'K': -1, 'M': -2, 'L': -3, 'N': -2, 'Q': -1, 'P': 7, 'S': -1, 'R': -2, 'T': -1, 'W': -4, 'V': -2, 'Y': -3, 'X': -2, 'Z': -1}, 'S': {'*': -4, 'A': 1, 'C': -1, 'B': 0, 'E': 0, 'D': 0, 'G': 0, 'F': -2, 'I': -2, 'H': -1, 'K': 0, 'M': -1, 'L': -2, 'N': 1, 'Q': 0, 'P': -1, 'S': 4, 'R': -1, 'T': 1, 'W': -3, 'V': -2, 'Y': -2, 'X': 0, 'Z': 0}, 'R': {'*': -4, 'A': -1, 'C': -3, 'B': -1, 'E': 0, 'D': -2, 'G': -2, 'F': -3, 'I': -3, 'H': 0, 'K': 2, 'M': -1, 'L': -2, 'N': 0, 'Q': 1, 'P': -2, 'S': -1, 'R': 5, 'T': -1, 'W': -3, 'V': -3, 'Y': -2, 'X': -1, 'Z': 0}, 'T': {'*': -4, 'A': 0, 'C': -1, 'B': -1, 'E': -1, 'D': -1, 'G': -2, 'F': -2, 'I': -1, 'H': -2, 'K': -1, 'M': -1, 'L': -1, 'N': 0, 'Q': -1, 'P': -1, 'S': 1, 'R': -1, 'T': 5, 'W': -2, 'V': 0, 'Y': -2, 'X': 0, 'Z': -1}, 'W': {'*': -4, 'A': -3, 'C': -2, 'B': -4, 'E': -3, 'D': -4, 'G': -2, 'F': 1, 'I': -3, 'H': -2, 'K': -3, 'M': -1, 'L': -2, 'N': -4, 'Q': -2, 'P': -4, 'S': -3, 'R': -3, 'T': -2, 'W': 11, 'V': -3, 'Y': 2, 'X': -2, 'Z': -3}, 'V': {'*': -4, 'A': 0, 'C': -1, 'B': -3, 'E': -2, 'D': -3, 'G': -3, 'F': -1, 'I': 3, 'H': -3, 'K': -2, 'M': 1, 'L': 1, 'N': -3, 'Q': -2, 'P': -2, 'S': -2, 'R': -3, 'T': 0, 'W': -3, 'V': 4, 'Y': -1, 'X': -1, 'Z': -2}, 'Y': {'*': -4, 'A': -2, 'C': -2, 'B': -3, 'E': -2, 'D': -3, 'G': -3, 'F': 3, 'I': -1, 'H': 2, 'K': -2, 'M': -1, 'L': -1, 'N': -2, 'Q': -1, 'P': -3, 'S': -2, 'R': -2, 'T': -2, 'W': 2, 'V': -1, 'Y': 7, 'X': -1, 'Z': -2}, 'X': {'*': -4, 'A': 0, 'C': -2, 'B': -1, 'E': -1, 'D': -1, 'G': -1, 'F': -1, 'I': -1, 'H': -1, 'K': -1, 'M': -1, 'L': -1, 'N': -1, 'Q': -1, 'P': -2, 'S': 0, 'R': -1, 'T': 0, 'W': -2, 'V': -1, 'Y': -1, 'X': -1, 'Z': -1}, 'Z': {'*': -4, 'A': -1, 'C': -3, 'B': 1, 'E': 4, 'D': 1, 'G': -2, 'F': -3, 'I': -3, 'H': 0, 'K': 1, 'M': -1, 'L': -3, 'N': 0, 'Q': 3, 'P': -1, 'S': 0, 'R': 0, 'T': -1, 'W': -3, 'V': -2, 'Y': -2, 'X': -1, 'Z': 4}}

然后您可以使用两个索引进行简单的查找,例如:

blossum62["A"]["R"]
-1

矩阵是对称的,因此索引的顺序并不重要

编辑更易于阅读的格式:

var blossum62 = {
            '*':{'*':  1, 'A': -4, 'C': -4, 'B': -4, 'E': -4,
                  'D': -4, 'G': -4, 'F': -4, 'I': -4, 'H': -4,
                  'K': -4, 'M': -4, 'L': -4, 'N': -4, 'Q': -4,
                  'P': -4, 'S': -4, 'R': -4, 'T': -4, 'W': -4,
                  'V': -4, 'Y': -4, 'X': -4, 'Z': -4},

             'A':{'*': -4, 'A':  4, 'C':  0, 'B': -2, 'E': -1,
                  'D': -2, 'G':  0, 'F': -2, 'I': -1, 'H': -2,
                  'K': -1, 'M': -1, 'L': -1, 'N': -2, 'Q': -1,
                  'P': -1, 'S':  1, 'R': -1, 'T':  0, 'W': -3,
                  'V':  0, 'Y': -2, 'X':  0, 'Z': -1},

             'C':{'*': -4, 'A':  0, 'C':  9, 'B': -3, 'E': -4,
                  'D': -3, 'G': -3, 'F': -2, 'I': -1, 'H': -3,
                  'K': -3, 'M': -1, 'L': -1, 'N': -3, 'Q': -3,
                  'P': -3, 'S': -1, 'R': -3, 'T': -1, 'W': -2,
                  'V': -1, 'Y': -2, 'X': -2, 'Z': -3},

             'B':{'*': -4, 'A': -2, 'C': -3, 'B':  4, 'E':  1,
                  'D':  4, 'G': -1, 'F': -3, 'I': -3, 'H':  0,
                  'K':  0, 'M': -3, 'L': -4, 'N':  3, 'Q':  0,
                  'P': -2, 'S':  0, 'R': -1, 'T': -1, 'W': -4,
                  'V': -3, 'Y': -3, 'X': -1, 'Z':  1},

             'E':{'*': -4, 'A': -1, 'C': -4, 'B':  1, 'E':  5,
                  'D':  2, 'G': -2, 'F': -3, 'I': -3, 'H':  0,
                  'K':  1, 'M': -2, 'L': -3, 'N':  0, 'Q':  2,
                  'P': -1, 'S':  0, 'R':  0, 'T': -1, 'W': -3,
                  'V': -2, 'Y': -2, 'X': -1, 'Z':  4},

             'D':{'*': -4, 'A': -2, 'C': -3, 'B':  4, 'E':  2,
                  'D':  6, 'G': -1, 'F': -3, 'I': -3, 'H': -1,
                  'K': -1, 'M': -3, 'L': -4, 'N':  1, 'Q':  0,
                  'P': -1, 'S':  0, 'R': -2, 'T': -1, 'W': -4,
                  'V': -3, 'Y': -3, 'X': -1, 'Z':  1},

             'G':{'*': -4, 'A':  0, 'C': -3, 'B': -1, 'E': -2,
                  'D': -1, 'G':  6, 'F': -3, 'I': -4, 'H': -2,
                  'K': -2, 'M': -3, 'L': -4, 'N':  0, 'Q': -2,
                  'P': -2, 'S':  0, 'R': -2, 'T': -2, 'W': -2,
                  'V': -3, 'Y': -3, 'X': -1, 'Z': -2},

             'F':{'*': -4, 'A': -2, 'C': -2, 'B': -3, 'E': -3,
                  'D': -3, 'G': -3, 'F':  6, 'I':  0, 'H': -1,
                  'K': -3, 'M':  0, 'L':  0, 'N': -3, 'Q': -3,
                  'P': -4, 'S': -2, 'R': -3, 'T': -2, 'W':  1,
                  'V': -1, 'Y':  3, 'X': -1, 'Z': -3},

             'I':{'*': -4, 'A': -1, 'C': -1, 'B': -3, 'E': -3,
                  'D': -3, 'G': -4, 'F':  0, 'I':  4, 'H': -3,
                  'K': -3, 'M':  1, 'L':  2, 'N': -3, 'Q': -3,
                  'P': -3, 'S': -2, 'R': -3, 'T': -1, 'W': -3,
                  'V':  3, 'Y': -1, 'X': -1, 'Z': -3},

             'H':{'*': -4, 'A': -2, 'C': -3, 'B':  0, 'E':  0,
                  'D': -1, 'G': -2, 'F': -1, 'I': -3, 'H':  8,
                  'K': -1, 'M': -2, 'L': -3, 'N':  1, 'Q':  0,
                  'P': -2, 'S': -1, 'R':  0, 'T': -2, 'W': -2,
                  'V': -3, 'Y':  2, 'X': -1, 'Z':  0},

             'K':{'*': -4, 'A': -1, 'C': -3, 'B':  0, 'E':  1,
                  'D': -1, 'G': -2, 'F': -3, 'I': -3, 'H': -1,
                  'K':  5, 'M': -1, 'L': -2, 'N':  0, 'Q':  1,
                  'P': -1, 'S':  0, 'R':  2, 'T': -1, 'W': -3,
                  'V': -2, 'Y': -2, 'X': -1, 'Z':  1},

             'M':{'*': -4, 'A': -1, 'C': -1, 'B': -3, 'E': -2,
                  'D': -3, 'G': -3, 'F':  0, 'I':  1, 'H': -2,
                  'K': -1, 'M':  5, 'L':  2, 'N': -2, 'Q':  0,
                  'P': -2, 'S': -1, 'R': -1, 'T': -1, 'W': -1,
                  'V':  1, 'Y': -1, 'X': -1, 'Z': -1},

             'L':{'*': -4, 'A': -1, 'C': -1, 'B': -4, 'E': -3,
                  'D': -4, 'G': -4, 'F':  0, 'I':  2, 'H': -3,
                  'K': -2, 'M':  2, 'L':  4, 'N': -3, 'Q': -2,
                  'P': -3, 'S': -2, 'R': -2, 'T': -1, 'W': -2,
                  'V':  1, 'Y': -1, 'X': -1, 'Z': -3},

             'N':{'*': -4, 'A': -2, 'C': -3, 'B':  3, 'E':  0,
                  'D':  1, 'G':  0, 'F': -3, 'I': -3, 'H':  1,
                  'K':  0, 'M': -2, 'L': -3, 'N':  6, 'Q':  0,
                  'P': -2, 'S':  1, 'R':  0, 'T':  0, 'W': -4,
                  'V': -3, 'Y': -2, 'X': -1, 'Z':  0},

             'Q':{'*': -4, 'A': -1, 'C': -3, 'B':  0, 'E':  2,
                  'D':  0, 'G': -2, 'F': -3, 'I': -3, 'H':  0,
                  'K':  1, 'M':  0, 'L': -2, 'N':  0, 'Q':  5,
                  'P': -1, 'S':  0, 'R':  1, 'T': -1, 'W': -2,
                  'V': -2, 'Y': -1, 'X': -1, 'Z':  3},

             'P':{'*': -4, 'A': -1, 'C': -3, 'B': -2, 'E': -1,
                  'D': -1, 'G': -2, 'F': -4, 'I': -3, 'H': -2,
                  'K': -1, 'M': -2, 'L': -3, 'N': -2, 'Q': -1,
                  'P':  7, 'S': -1, 'R': -2, 'T': -1, 'W': -4,
                  'V': -2, 'Y': -3, 'X': -2, 'Z': -1},

             'S':{'*': -4, 'A':  1, 'C': -1, 'B':  0, 'E':  0,
                  'D':  0, 'G':  0, 'F': -2, 'I': -2, 'H': -1,
                  'K':  0, 'M': -1, 'L': -2, 'N':  1, 'Q':  0,
                  'P': -1, 'S':  4, 'R': -1, 'T':  1, 'W': -3,
                  'V': -2, 'Y': -2, 'X':  0, 'Z':  0},

             'R':{'*': -4, 'A': -1, 'C': -3, 'B': -1, 'E':  0,
                  'D': -2, 'G': -2, 'F': -3, 'I': -3, 'H':  0,
                  'K':  2, 'M': -1, 'L': -2, 'N':  0, 'Q':  1,
                  'P': -2, 'S': -1, 'R':  5, 'T': -1, 'W': -3,
                  'V': -3, 'Y': -2, 'X': -1, 'Z':  0},

             'T':{'*': -4, 'A':  0, 'C': -1, 'B': -1, 'E': -1,
                  'D': -1, 'G': -2, 'F': -2, 'I': -1, 'H': -2,
                  'K': -1, 'M': -1, 'L': -1, 'N':  0, 'Q': -1,
                  'P': -1, 'S':  1, 'R': -1, 'T':  5, 'W': -2,
                  'V':  0, 'Y': -2, 'X':  0, 'Z': -1},

             'W':{'*': -4, 'A': -3, 'C': -2, 'B': -4, 'E': -3,
                  'D': -4, 'G': -2, 'F':  1, 'I': -3, 'H': -2,
                  'K': -3, 'M': -1, 'L': -2, 'N': -4, 'Q': -2,
                  'P': -4, 'S': -3, 'R': -3, 'T': -2, 'W': 11,
                  'V': -3, 'Y':  2, 'X': -2, 'Z': -3},

             'V':{'*': -4, 'A':  0, 'C': -1, 'B': -3, 'E': -2,
                  'D': -3, 'G': -3, 'F': -1, 'I':  3, 'H': -3,
                  'K': -2, 'M':  1, 'L':  1, 'N': -3, 'Q': -2,
                  'P': -2, 'S': -2, 'R': -3, 'T':  0, 'W': -3,
                  'V':  4, 'Y': -1, 'X': -1, 'Z': -2},

             'Y':{'*': -4, 'A': -2, 'C': -2, 'B': -3, 'E': -2,
                  'D': -3, 'G': -3, 'F':  3, 'I': -1, 'H':  2,
                  'K': -2, 'M': -1, 'L': -1, 'N': -2, 'Q': -1,
                  'P': -3, 'S': -2, 'R': -2, 'T': -2, 'W':  2,
                  'V': -1, 'Y':  7, 'X': -1, 'Z': -2},

             'X':{'*': -4, 'A':  0, 'C': -2, 'B': -1, 'E': -1,
                  'D': -1, 'G': -1, 'F': -1, 'I': -1, 'H': -1,
                  'K': -1, 'M': -1, 'L': -1, 'N': -1, 'Q': -1,
                  'P': -2, 'S':  0, 'R': -1, 'T':  0, 'W': -2,
                  'V': -1, 'Y': -1, 'X': -1, 'Z': -1},

             'Z':{'*': -4, 'A': -1, 'C': -3, 'B':  1, 'E':  4,
                  'D':  1, 'G': -2, 'F': -3, 'I': -3, 'H':  0,
                  'K':  1, 'M': -1, 'L': -3, 'N':  0, 'Q':  3,
                  'P': -1, 'S':  0, 'R':  0, 'T': -1, 'W': -3,
                  'V': -2, 'Y': -2, 'X': -1, 'Z': 4}}

关于javascript - BLOSUM62(或 45)在 JavaScript 中评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38647306/

相关文章:

javascript - React 应用程序是否应该在文件刷新时进行完全刷新?

python - Pandas 根据另一个数据框中的匹配列填充新的数据框列

html - 选择选择选项时如何停止表单字段跳转?

javascript - HTML Knockout 使用 Unicode 将 FontAwesome 图标添加到表格中

javascript - JSON 对象还是 JSON 字符串?哪个更好地存储在数据库中?

python多次导入

python - Windows 上 python 应用程序的启动器

css - 导航线对齐

css - 对齐元素列表

javascript - 通过匹配数组检索值