Bio. HM.DynamicProgramming模块

一般用途的动态编程算法。

该模块包含实现可普遍使用的动态编程算法的类。

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

基类:object

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

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

这个类只是为了封装基本的向前和向后算法,并允许派生类处理概率相乘的问题。

它的派生类必须实现:

  • _forward_recursion --使用某种防止下溢错误的技术计算迭代中的前向值。

  • _backward_recursion --使用某种技术计算迭代步骤中的向后值以防止下溢错误。

__init__(markov_model, sequence)

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

论点:
  • markov_mode--我们正在使用的当前马尔科夫模型。

  • 序列--包含一组发射的训练序列。

forward_algorithm()

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

这实现了向前算法,如Durbin等人的第57 -58页所述。

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

  • 序列的计算概率。

backward_algorithm()

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

这实现了向后算法,如Durbin等人的第58 -59页所述。

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

__firstlineno__ = 26
__static_attributes__ = ('_mm', '_seq')
class Bio.HMM.DynamicProgramming.ScaledDPAlgorithms(markov_model, sequence)

基类:AbstractDPAlgorithms

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

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

这种方法比日志转换更简单,但仍然可能会对某些类型的模型产生下溢错误。在这些情况下,应使用LogDCPAlomics类。

__init__(markov_model, sequence)

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

论点:
  • markov_mode--我们正在使用的当前马尔科夫模型。

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

__annotations__ = {}
__firstlineno__ = 171
__static_attributes__ = ('_s_values',)
class Bio.HMM.DynamicProgramming.LogDPAlgorithms(markov_model, sequence)

基类:AbstractDPAlgorithms

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

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

XXX这个还没有实施!

__init__(markov_model, sequence)

初始化课程。

__annotations__ = {}
__firstlineno__ = 324
__static_attributes__ = ()