Bio. HM.Trainer模块

提供根据训练序列估计参数的培训师。

这些应该在实际使用马尔可夫模型解码状态路径之前用于“训练”马尔可夫模型。当提供训练序列和模型时,这些类将估计模型的参数。

这旨在估计两个参数:

  • a_{kl} --训练数据中从k到l的转换次数。

  • e_{k}(b)--训练数据中字母k起状态b的排放数量。

class Bio.HMM.Trainer.TrainingSequence(emissions, state_path)

基类:object

保持具有发射的训练序列和可选的状态路径。

__init__(emissions, state_path)

初始化训练序列。

论点:
  • 排放-可迭代(例如,数组、列表或Seq对象)包含训练序列中的发射序列。

  • 状态_路径-可迭代对象(例如,数组或列表)包含状态序列。如果没有已知的状态路径,那么状态序列应该是空的可迭代对象。

__firstlineno__ = 38
__static_attributes__ = ('emissions', 'states')
class Bio.HMM.Trainer.AbstractTrainer(markov_model)

基类:object

提供所有培训师所需的通用功能。

__init__(markov_model)

初始化课程。

log_likelihood(probabilities)

计算训练序列的日志可能性。

论点:
  • 概率--当前参数下每个训练序列的概率列表,使用前向算法计算。

estimate_params(transition_counts, emission_counts)

获得转变和排放的最大可能性估计。

论点:
  • transition_counts --两个状态之间转换的总计数字典。

  • emissions_counts --包含特定排放字母按州字母计算的排放总数的字典。

然后返回转变和排放的最大似然估计量,由Durbin等人的公式3.18估计:

a_{kl} = A_{kl} / sum(A_{kl'})
e_{k}(b) = E_{k}(b) / sum(E_{k}(b'))

返回:包含最大似然估计量的转换和发射字典。

ml_estimator(counts)

计算最大似然估计量。

这可以计算转变和排放的最大可能性。

论点:
  • 计数--每个项目的计数字典。

请参阅estimate_params了解计算所用公式的描述。

__firstlineno__ = 58
__static_attributes__ = ('_markov_model',)
class Bio.HMM.Trainer.BaumWelchTrainer(markov_model)

基类:AbstractTrainer

使用鲍姆-韦尔奇算法估计参数的训练器。

当HMM的训练序列具有未知的实际状态路径时,应该使用这些方法,并且您需要从观察到的排放中估计模型参数。

这使用Baum-Welch算法,首先在Baum,L.E. 1972.不等式3:1-8这是基于Durbin等人在第3.3节中的“生物序列分析”中的描述。

该算法保证收敛到局部最大值,但不一定收敛到全局最大值,因此请小心使用!

__init__(markov_model)

初始化培训师。

论点:
  • markov_mode-我们要估计参数的模型。这应该包含一些初步估计的参数,我们可以根据这些参数进行构建。

train(training_seqs, stopping_criteria, dp_method=ScaledDPAlgorithms)

使用训练序列估计参数。

该算法取自Durbin et al. p64,因此这是一个关于正在发生的事情的参考的好地方。

论点:
  • training_seqs --用于估计参数的TrainingSequence对象列表。

  • stoping_criteria --一个函数,当传递日志可能性和阈值的变化时,将指示我们是否应该停止估计迭代。

  • dev_system-一个类实例,指定我们应该用来计算向前和向后变量的动态编程实现。默认情况下,我们使用缩放方法。

update_transitions(transition_counts, training_seq, forward_vars, backward_vars, training_seq_prob)

将新训练序列的贡献添加到过渡中。

论点:
  • transition_counts --转换当前计数的字典

  • training_seq --我们正在使用的训练序列

  • forward_vars --使用前向算法计算的概率。

  • backward_vars --使用向后算法计算的概率。

  • training_seq_prob -当前序列的概率。

这使用Durbin等人中的公式3.20计算A_{kl}(从状态k到状态l的估计转变计数)

update_emissions(emission_counts, training_seq, forward_vars, backward_vars, training_seq_prob)

将新训练序列的贡献添加到排放中。

论点:
  • emission_counts --当前排放计数的字典

  • training_seq --我们正在使用的训练序列

  • forward_vars --使用前向算法计算的概率。

  • backward_vars --使用向后算法计算的概率。

  • training_seq_prob -当前序列的概率。

这使用Durbin等人中的公式3.21计算E_{k}(b)(来自状态k的排放字母b的估计排放概率)

__annotations__ = {}
__firstlineno__ = 160
__static_attributes__ = ()
class Bio.HMM.Trainer.KnownStateTrainer(markov_model)

基类:AbstractTrainer

使用已知状态序列估计概率。

当训练示例的状态路径和发射序列都已知时,这应该用于直接估计发射和转移概率。

__init__(markov_model)

初始化课程。

train(training_seqs)

使用已知状态路径估计马尔科夫模型参数。

此训练器要求TrainingSequence对象列表中所有训练序列的状态和发射都是已知的。然后,此训练将计算所有转变和排放,并使用此来估计模型的参数。

__annotations__ = {}
__firstlineno__ = 358
__static_attributes__ = ()