Bio.HMM.DynamicProgramming 模块
用于一般用途的动态规划算法。
此模块包含实现动态规划算法的类,这些算法可以普遍使用。
- class Bio.HMM.DynamicProgramming.AbstractDPAlgorithms(markov_model, sequence)
基类:
object
用于计算前向和后向概率的抽象类。
此类不应直接实例化,而应通过派生类使用,该派生类实现了变量的正确缩放。
此类仅仅是为了封装基本的前向和后向算法,并允许派生类处理乘积概率的问题。
此类的派生类必须实现
_forward_recursion - 使用某种技术来防止下溢错误,在递归中计算前向值。
_backward_recursion - 使用某种技术来防止下溢错误,在递归步骤中计算后向值。
- __init__(markov_model, sequence)
初始化以计算前向和后向概率。
- 参数
markov_model - 我们正在使用的当前马尔可夫模型。
sequence - 包含一组发射的训练序列。
- forward_algorithm()
使用前向算法计算序列概率。
这实现了前向算法,如 Durbin 等人第 57-58 页所述。
- 返回
包含前向变量的字典。它具有 (状态字母,训练序列中的位置) 形式的键,以及包含已计算前向变量的值。
已计算的序列概率。
- backward_algorithm()
使用后向算法计算序列概率。
这实现了后向算法,如 Durbin 等人第 58-59 页所述。
- 返回
包含后向变量的字典。它具有 (状态字母,训练序列中的位置) 形式的键,以及包含已计算后向变量的值。
- class Bio.HMM.DynamicProgramming.ScaledDPAlgorithms(markov_model, sequence)
-
使用重缩放方法实现前向和后向算法。
这将缩放 f 和 b 变量,以便它们在计算过程中保持在一个可管理的数值范围内。这种方法在 Durbin 等人第 78 页中有所描述。
这种方法比对数变换更直接,但对于某些类型的模型,仍然可能产生下溢错误。在这种情况下,应使用 LogDPAlgorithms 类。
- __init__(markov_model, sequence)
初始化用于计算概率的缩放方法。
- 参数
markov_model - 我们正在使用的当前马尔可夫模型。
sequence - 一个 TrainingSequence 对象,它必须有一组发射才能使用。