隐马尔可夫模型与起始密码子识别
1. 隐马尔可夫模型基础
1.1 TProb 函数
TProb 函数用于计算整个序列的概率。它接收隐马尔可夫模型(HMM)和测试字符串作为输入,从起始节点开始搜索。以下是该函数的代码:
# hmm.py
def TProb( net , instr ):
L = len( instr )
pbs = 1.0
k = 'begin '
for i in range( L ):
tran = NextNode( net ,k,instr[i])
k = tran [0]
pbs *= tran [1]
return pbs
print( hmm.TProb(net ,'ABD'))
这个函数通过一个 for 循环遍历输入序列的每个字母,使用 NextNode 函数获取转移概率并将它们相乘。
1.2 构建转移 HMM
构建转移 HMM 是一个两步过程:首先创建节点,然后创建节点之间的连接。
1.2.1 创建节点表
NodeTable 函数用于创建一个表来识别网络中的节点。它接收数据字符串列表和字母表作为参数。以下是该函数的代码:
# hmm.py
def NodeTable( sts , abet):
L = len( sts )
D = len( sts [0] )
A