任选一种编程语言,设计一个双序列全局比对的程序。要求:
1) 输入两条蛋白质序列,输出比对结果例如:
Alignment Score: 12345
E E E E E K K K K K A A A A A F F F
E E E E E - - - - - B B B B B F F F
2) 使用BLOSUM62矩阵来对序列中氨基酸符号的match和mismatch打分。
3) 使用动态规划的方法(Needleman-Wunsch算法)。
4) 计算空位(gap)的罚分时,使用仿射空位罚分策略,gap opening的分数为-11,gap extension的分数为-1。
5) 测试程序时,使用Horse Hemoglobin subunit theta-1(马的theta-1亚基血红蛋白)序列和Bullfrog Hemoglobin subunit alpha-type(牛蛙的alpha型亚基血红蛋白)序列。
6) 将程序输出结果与BLAST软件的进行比较。
登录BLAST在线服务器http://blast.ncbi.nlm.nih.gov/Blast.cgi。
代码如下:
global S
global E
global MIN
global amino
global blosum
S = -11
E = -1
MIN = -float("inf")
amino = ['A', 'R', 'N', 'D', 'C', 'Q', 'E', 'G', 'H', 'I', 'L', 'K', 'M', 'F', 'P', 'S', 'T', 'W', 'Y', 'V', 'B', 'Z', 'X', '*']
blosum = [
[ 4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3, -2, 0, -2, -1, 0, -4],
[-1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2, -3, -1, 0, -1, -4],
[-2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3, 3, 0, -1, -4],
[-2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4, -3, -3, 4, 1, -1, -4],
[ 0, -3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, -2, -2, -1, -3, -3, -2, -4],
[-1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0