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)

基类:AbstractDPAlgorithms

使用重缩放方法实现前向和后向算法。

这将缩放 f 和 b 变量,以便它们在计算过程中保持在一个可管理的数值范围内。这种方法在 Durbin 等人第 78 页中有所描述。

这种方法比对数变换更直接,但对于某些类型的模型,仍然可能产生下溢错误。在这种情况下,应使用 LogDPAlgorithms 类。

__init__(markov_model, sequence)

初始化用于计算概率的缩放方法。

参数
  • markov_model - 我们正在使用的当前马尔可夫模型。

  • sequence - 一个 TrainingSequence 对象,它必须有一组发射才能使用。

class Bio.HMM.DynamicProgramming.LogDPAlgorithms(markov_model, sequence)

基类:AbstractDPAlgorithms

使用对数方法实现前向和后向算法。

这使用对数概率之和的计算方法,使用查找表来存储常用值。

XXX 这尚未实现!

__init__(markov_model, sequence)

初始化类。