gonnet.cpp

来自「unix,linux下编译。用于蛋白质」· C++ 代码 · 共 500 行 · 第 1/2 页

CPP
500
字号
#include "muscle.h"
#include "gonnet.h"

#define ROW(A, C, D, E, F, G, H, I, K, L, M, N, P, Q, R, S, T, V, W, Y) \
	{ A/4.0, C/4.0, D/4.0, E/4.0, F/4.0, G/4.0, H/4.0, I/4.0, K/4.0, L/4.0, M/4.0, N/4.0, P/4.0, Q/4.0, R/4.0, S/4.0, T/4.0, V/4.0, W/4.0, Y/4.0 },

static double Gonnet80[20][20] =
	{
//        A       C       D       E       F       G       H       I       K       L
//        M       N       P       Q       R       S       T       V       W       Y
ROW(   1990,   1140,    930,   1070,    600,   1130,    850,    810,    940,    810,
        980,    900,   1080,   1020,    880,   1380,   1190,   1180,    370,    590) // A

ROW(   1140,   2780,    310,    300,    850,    630,    810,    700,    360,    690,
        850,    690,    310,    480,    640,   1090,    900,   1030,    810,    920) // C

ROW(    930,    310,   2200,   1550,    130,    980,   1070,    180,   1030,    150,
        360,   1450,    820,   1150,    800,   1100,   1000,    350,      0,    550) // D

ROW(   1070,    300,   1550,   2120,    220,    770,   1070,    510,   1280,    490,
        710,   1110,    890,   1470,   1010,   1050,    970,    730,    260,    500) // E

ROW(    600,    850,    130,    220,   2380,     90,    980,   1090,    350,   1310,
       1270,    490,    310,    540,    340,    470,    620,    930,   1400,   1730) // F

ROW(   1130,    630,    980,    770,     90,   2210,    710,    100,    740,    200,
        410,   1060,    660,    800,    810,   1080,    720,    380,    430,    300) // G

ROW(    850,    810,   1070,   1070,    980,    710,   2510,    600,   1120,    670,
        860,   1330,    790,   1380,   1140,    990,   1000,    590,    810,   1450) // H

ROW(    810,    700,    180,    510,   1090,    100,    600,   2100,    650,   1460,
       1490,    530,    490,    640,    530,    620,    960,   1650,    610,    770) // I

ROW(    940,    360,   1030,   1280,    350,    740,   1120,    650,   2090,    660,
        870,   1220,    870,   1410,   1570,   1040,   1090,    700,    350,    640) // K

ROW(    810,    690,    150,    490,   1310,    200,    670,   1460,    660,   2010,
       1550,    450,    660,    850,    660,    600,    750,   1270,    800,    890) // L

ROW(    980,    850,    360,    710,   1270,    410,    860,   1490,    870,   1550,
       2410,    620,    460,   1050,    710,    830,    990,   1250,    790,    870) // M

ROW(    900,    690,   1450,   1110,    490,   1060,   1330,    530,   1220,    450,
        620,   2210,    760,   1180,   1020,   1290,   1170,    550,    380,    850) // N

ROW(   1080,    310,    820,    890,    310,    660,    790,    490,    870,    660,
        460,    760,   2380,   1000,    790,   1100,   1040,    670,    120,    480) // P

ROW(   1020,    480,   1150,   1470,    540,    800,   1380,    640,   1410,    850,
       1050,   1180,   1000,   2190,   1350,   1090,   1060,    730,    620,    710) // Q

ROW(    880,    640,    800,   1010,    340,    810,   1140,    530,   1570,    660,
        710,   1020,    790,   1350,   2210,    970,    970,    640,    830,    740) // R

ROW(   1380,   1090,   1100,   1050,    470,   1080,    990,    620,   1040,    600,
        830,   1290,   1100,   1090,    970,   2020,   1490,    810,    520,    780) // S

ROW(   1190,    900,   1000,    970,    620,    720,   1000,    960,   1090,    750,
        990,   1170,   1040,   1060,    970,   1490,   2050,   1150,    370,    660) // T

ROW(   1180,   1030,    350,    730,    930,    380,    590,   1650,    700,   1270,
       1250,    550,    670,    730,    640,    810,   1150,   2040,    440,    770) // V

ROW(    370,    810,      0,    260,   1400,    430,    810,    610,    350,    800,
        790,    380,    120,    620,    830,    520,    370,    440,   2970,   1470) // W

ROW(    590,    920,    550,    500,   1730,    300,   1450,    770,    640,    890,
        870,    850,    480,    710,    740,    780,    660,    770,   1470,   2470) // Y
	};

static double Gonnet120[20][20] =
	{
//        A       C       D       E       F       G       H       I       K       L
//        M       N       P       Q       R       S       T       V       W       Y
ROW(   1550,    950,    780,    870,    480,    930,    700,    690,    770,    660,
        790,    760,    900,    840,    730,   1120,    980,    960,    280,    480) // A

ROW(    950,   2400,    270,    280,    700,    510,    650,    600,    320,    570,
        700,    550,    280,    400,    510,    890,    750,    850,    670,    760) // C

ROW(    780,    270,   1780,   1310,     90,    820,    890,    160,    880,    140,
        320,   1220,    680,    970,    690,    910,    830,    310,      0,    430) // D

ROW(    870,    280,   1310,   1680,    180,    650,    900,    410,   1070,    390,
        560,    950,    740,   1210,    860,    870,    810,    580,    180,    400) // E

ROW(    480,    700,     90,    180,   1980,     40,    820,    930,    290,   1110,
       1070,    380,    240,    430,    280,    380,    490,    790,   1230,   1510) // F

ROW(    930,    510,    820,    650,     40,   1860,    590,     90,    620,    140,
        310,    890,    550,    660,    660,    900,    610,    310,    300,    220) // G

ROW(    700,    650,    890,    900,    820,    590,   2060,    480,    940,    540,
        680,   1100,    650,   1130,    950,    820,    820,    490,    680,   1220) // H

ROW(    690,    600,    160,    410,    930,     90,    480,   1680,    520,   1240,
       1250,    410,    400,    530,    430,    520,    790,   1380,    500,    650) // I

ROW(    770,    320,    880,   1070,    290,    620,    940,    520,   1650,    520,
        690,   1010,    720,   1160,   1320,    860,    900,    570,    280,    520) // K

ROW(    660,    570,    140,    390,   1110,    140,    540,   1240,    520,   1620,
       1300,    350,    520,    660,    520,    490,    620,   1090,    670,    760) // L

ROW(    790,    700,    320,    560,   1070,    310,    680,   1250,    690,   1300,
       1910,    500,    400,    820,    580,    670,    800,   1060,    650,    740) // M

ROW(    760,    550,   1220,    950,    380,    890,   1100,    410,   1010,    350,
        500,   1760,    640,    970,    860,   1060,    960,    460,    280,    680) // N

ROW(    900,    280,    680,    740,    240,    550,    650,    400,    720,    520,
        400,    640,   2010,    820,    660,    910,    860,    540,     70,    370) // P

ROW(    840,    400,    970,   1210,    430,    660,   1130,    530,   1160,    660,
        820,    970,    820,   1700,   1120,    890,    870,    600,    470,    580) // Q

ROW(    730,    510,    690,    860,    280,    660,    950,    430,   1320,    520,
        580,    860,    660,   1120,   1790,    810,    800,    520,    660,    590) // R

ROW(   1120,    890,    910,    870,    380,    900,    820,    520,    860,    490,
        670,   1060,    910,    890,    810,   1560,   1220,    680,    390,    610) // S

ROW(    980,    750,    830,    810,    490,    610,    820,    790,    900,    620,
        800,    960,    860,    870,    800,   1220,   1600,    930,    290,    540) // T

ROW(    960,    850,    310,    580,    790,    310,    490,   1380,    570,   1090,
       1060,    460,    540,    600,    520,    680,    930,   1610,    370,    630) // V

ROW(    280,    670,      0,    180,   1230,    300,    680,    500,    280,    670,
        650,    280,     70,    470,    660,    390,    290,    370,   2620,   1290) // W

ROW(    480,    760,    430,    400,   1510,    220,   1220,    650,    520,    760,
        740,    680,    370,    580,    590,    610,    540,    630,   1290,   2070) // Y
	};

static SCORE Gonnet160[20][20] =
	{
//        A       C       D       E       F       G       H       I       K       L
//        M       N       P       Q       R       S       T       V       W       Y
ROW(   1240,    810,    670,    740,    400,    800,    600,    600,    660,    560,
        660,    660,    770,    710,    620,    940,    830,    790,    230,    410) // A

ROW(    810,   2130,    250,    260,    600,    440,    550,    530,    300,    490,
        590,    470,    260,    360,    430,    760,    640,    720,    570,    650) // C

ROW(    670,    250,   1480,   1120,     80,    710,    770,    160,    770,    130,
        280,   1040,    590,    840,    620,    780,    720,    290,      0,    360) // D

ROW(    740,    260,   1120,   1370,    160,    570,    770,    350,    910,    330,
        470,    830,    640,   1010,    750,    750,    700,    480,    140,    340) // E

ROW(    400,    600,     80,    160,   1690,     20,    710,    810,    250,    970,
        920,    310,    200,    370,    250,    330,    420,    700,   1100,   1340) // F

ROW(    800,    440,    710,    570,     20,   1600,    510,     80,    540,    110,
        260,    760,    480,    570,    570,    770,    540,    260,    230,    180) // G

ROW(    600,    550,    770,    770,    710,    510,   1710,    410,    800,    460,
        570,    930,    560,    950,    810,    700,    700,    430,    590,   1050) // H

ROW(    600,    530,    160,    350,    810,     80,    410,   1370,    430,   1080,
       1070,    340,    350,    460,    370,    450,    660,   1180,    440,    580) // I

ROW(    660,    300,    770,    910,    250,    540,    800,    430,   1330,    440,
        570,    860,    620,    980,   1130,    740,    760,    480,    240,    430) // K

ROW(    560,    490,    130,    330,    970,    110,    460,   1080,    440,   1350,
       1120,    300,    430,    540,    430,    420,    540,    950,    580,    670) // L

ROW(    660,    590,    280,    470,    920,    260,    570,   1070,    570,   1120,
       1540,    420,    360,    660,    490,    550,    670,    920,    560,    650) // M

ROW(    660,    470,   1040,    830,    310,    760,    930,    340,    860,    300,
        420,   1430,    560,    830,    740,    890,    810,    400,    230,    560) // N

ROW(    770,    260,    590,    640,    200,    480,    560,    350,    620,    430,
        360,    560,   1740,    700,    570,    780,    740,    460,     40,    300) // P

ROW(    710,    360,    840,   1010,    370,    570,    950,    460,    980,    540,
        660,    830,    700,   1340,    950,    760,    740,    510,    380,    490) // Q

ROW(    620,    430,    620,    750,    250,    570,    810,    370,   1130,    430,
        490,    740,    570,    950,   1490,    690,    690,    440,    540,    490) // R

ROW(    940,    760,    780,    750,    330,    770,    700,    450,    740,    420,
        550,    890,    780,    760,    690,   1220,   1010,    580,    310,    500) // S

ROW(    830,    640,    720,    700,    420,    540,    700,    660,    760,    540,
        670,    810,    740,    740,    690,   1010,   1280,    780,    240,    460) // T

ROW(    790,    720,    290,    480,    700,    260,    430,   1180,    480,    950,
        920,    400,    460,    510,    440,    580,    780,   1310,    330,    540) // V

ROW(    230,    570,      0,    140,   1100,    230,    590,    440,    240,    580,
        560,    230,     40,    380,    540,    310,    240,    330,   2360,   1160) // W

ROW(    410,    650,    360,    340,   1340,    180,   1050,    580,    430,    670,
        650,    560,    300,    490,    490,    500,    460,    540,   1160,   1780) // Y
	};

double Gonnet16[21][21] =
	{
//       A      C      D      E      F      G      H      I      K      L
//       M      N      P      Q      R      S      T      V      W      Y
ROW(   124,    81,    67,    74,    40,    80,    60,    60,    66,    56,
        66,    66,    77,    71,    62,    94,    83,    79,    23,    41) // A

ROW(    81,   213,    25,    26,    60,    44,    55,    53,    30,    49,
        59,    47,    26,    36,    43,    76,    64,    72,    57,    65) // C

ROW(    67,    25,   148,   112,     8,    71,    77,    16,    77,    13,
        28,   104,    59,    84,    62,    78,    72,    29,     0,    36) // D

ROW(    74,    26,   112,   137,    16,    57,    77,    35,    91,    33,
        47,    83,    64,   101,    75,    75,    70,    48,    14,    34) // E

ROW(    40,    60,     8,    16,   169,     2,    71,    81,    25,    97,
        92,    31,    20,    37,    25,    33,    42,    70,   110,   134) // F

ROW(    80,    44,    71,    57,     2,   160,    51,     8,    54,    11,
        26,    76,    48,    57,    57,    77,    54,    26,    23,    18) // G

ROW(    60,    55,    77,    77,    71,    51,   171,    41,    80,    46,
        57,    93,    56,    95,    81,    70,    70,    43,    59,   105) // H

ROW(    60,    53,    16,    35,    81,     8,    41,   137,    43,   108,
       107,    34,    35,    46,    37,    45,    66,   118,    44,    58) // I

ROW(    66,    30,    77,    91,    25,    54,    80,    43,   133,    44,
        57,    86,    62,    98,   113,    74,    76,    48,    24,    43) // K

ROW(    56,    49,    13,    33,    97,    11,    46,   108,    44,   135,
       112,    30,    43,    54,    43,    42,    54,    95,    58,    67) // L

ROW(    66,    59,    28,    47,    92,    26,    57,   107,    57,   112,
       154,    42,    36,    66,    49,    55,    67,    92,    56,    65) // M

ROW(    66,    47,   104,    83,    31,    76,    93,    34,    86,    30,
        42,   143,    56,    83,    74,    89,    81,    40,    23,    56) // N

ROW(    77,    26,    59,    64,    20,    48,    56,    35,    62,    43,
        36,    56,   174,    70,    57,    78,    74,    46,     4,    30) // P

ROW(    71,    36,    84,   101,    37,    57,    95,    46,    98,    54,
        66,    83,    70,   134,    95,    76,    74,    51,    38,    49) // Q

ROW(    62,    43,    62,    75,    25,    57,    81,    37,   113,    43,
        49,    74,    57,    95,   149,    69,    69,    44,    54,    49) // R

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?