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 + -
显示快捷键?