Bio.HMM.DynamicProgramming模块

适用于一般用途的动态规划算法。

此模块包含实现可通用的动态规划算法的类。

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

基类:object

用于计算向前和向后概率的抽象类。

此类不应直接实例化,而应通过实现变量适当缩放的派生类使用。

此类仅用于封装基本的向前和向后算法,并允许派生类处理概率乘法问题。

此的派生类必须实现:

  • _FORWARD_RECURSION--使用某种防止下溢错误的技术计算递归中的前进值。

  • _BACKUP_RECURSION--使用某些技术计算递归步骤中的后退值,以防止下溢错误。

__init__(markov_model, sequence)

初始化以计算向前和向后概率。

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

  • 序列--包含一组排放的训练序列。

forward_algorithm()

使用前向算法计算序列概率。

这实现了前向算法,如在Durbin等人的P57-58中所描述的。

退货:
  • 包含正向变量的字典。它具有以下形式的关键字(状态字母、训练序列中的位置)和包含计算出的正向变量的值。

  • 计算出的序列概率。

backward_algorithm()

使用反向算法计算序列概率。

这实现了反向算法,如Durbin等人的P58-59中所描述的。

退货:
  • 包含向后变量的字典。它具有以下形式的键(状态字母、训练序列中的位置)和包含计算出的反向变量的值。

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

基类:AbstractDPAlgorithms

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

这将缩放f和b变量,以便它们在计算期间保持在可管理的数值间隔内。Durbin等人描述了这种方法。在第78页。

这种方法比对数转换稍微简单一些,但是对于某些类型的模型仍然可能会产生下溢错误。在这些情况下,应该使用LogDPAlgorithms类。

__init__(markov_model, sequence)

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

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

  • Sequence--TrainingSequence对象,它必须具有一组要处理的发射。

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

基类:AbstractDPAlgorithms

使用日志方法实现向前和向后算法。

这使用使用公共值的查找表计算对数概率和的方法。

XXX这还没有实现!

__init__(markov_model, sequence)

初始化类。