Bio.HMM.MarkovModel模块

处理马尔可夫模型的表示。

class Bio.HMM.MarkovModel.MarkovModelBuilder(state_alphabet, emission_alphabet)

基类:object

接口来建立马尔可夫模型。

此类旨在尝试将指定马尔可夫模型的任务与实际模型本身分开。这是希望使实际的马尔可夫模型类更小。

因此,这个构建器类应该用来创建马尔可夫模型,而不是直接尝试启动马尔可夫模型。

DEFAULT_PSEUDO = 1
__init__(state_alphabet, emission_alphabet)

初始化构建器以创建马尔可夫模型。

参数:
  • state_alphabet--包含州中可能出现的所有字母的可迭代(例如,元组或列表)

  • Emit_Alphabet--包含HMM可以发出的状态的所有字母的可迭代(例如,元组或列表)。

get_markov_model()

返回当前参数对应的马尔可夫模型。

调用该函数返回的每个马尔可夫模型都是唯一的(即,它们不会相互影响)。

set_initial_probabilities(initial_prob)

设置初始状态概率。

Initial_Prob是将状态映射到概率的字典。例如,假设州字母表是(‘A’,‘B’)。调用set_initial_prob({‘A’:1})以保证初始状态为‘A’。调用set_initial_prob({‘A’:0.5,‘B’:0.5})使每个初始状态的概率相等。

现在必须调用此方法才能使用马尔可夫模型,因为初始概率的计算已不兼容;以前的计算是不正确的。

如果所有状态都设置了初始概率,则它们的总和应为1。否则总和应<=1。剩余概率在所有未设置初始概率的状态之间平均分配。例如,对于上面的示例,调用set_initial_prob({})会导致P(‘A’)=0.5和P(‘B’)=0.5。

set_equal_probabilities()

将所有概率重置为平均值。

将所有初始概率、所有允许的过渡和所有允许的发射的值重置为等于1除以可能的元素数量。

如果您只想将马尔可夫模型初始化为起始值(即,如果您之前没有关于概率应该是多少的概念--或者如果您只是觉得懒得计算它们:-)。

警告1--这将重置当前设置的所有概率。

警告2--这只是将转换和发射的所有概率的总和设置为1,因此不能确保每组转换的总和为1。

set_random_initial_probabilities()

将所有初始状态概率设置为随机生成的分布。

返回包含初始概率的字典。

set_random_transition_probabilities()

将所有允许的转换概率设置为随机生成的分布。

返回包含转换概率的字典。

set_random_emission_probabilities()

将所有允许的发射概率设置为随机生成的分布。

返回包含发射概率的字典。

set_random_probabilities()

将所有概率设置为随机生成的数字。

将所有初始状态、变换和发射的概率重置为随机值。

allow_all_transitions()

在所有状态之间创建过渡。

默认情况下,字母表内的所有转换都是不允许的;这是一个方便的函数,可以将其更改为允许所有可能的转换。

allow_transition(from_state, to_state, probability=None, pseudocount=None)

将两个状态之间的转换设置为可能。

概率和伪计数是指定转换的概率和伪计数的可选参数。如果未提供这些,则将这些值设置为默认值。

提升:KeyError--如果两个状态已经有了允许的转换。

destroy_transition(from_state, to_state)

限制两个状态之间的转换。

如果当前不允许转换,则引发:KeyError。

set_transition_score(from_state, to_state, probability)

设置两个状态之间转换的概率。

如果不允许转换,则引发:KeyError。

set_transition_pseudocount(from_state, to_state, count)

设置过渡的默认伪计数。

为了避免计算问题,能够设置一个“默认”伪计数来估计跃迁和排放概率是很有帮助的(有关这方面的更多讨论,请参见Durbin等人的第62页)。默认情况下,所有转换的伪计数均为1。

如果不允许转换,则引发:KeyError。

set_emission_score(seq_state, emission_state, probability)

设置从特定状态发射的概率。

如果不允许来自给定状态的发射,则引发:KeyError。

set_emission_pseudocount(seq_state, emission_state, count)

设置发射的默认伪计数。

为了避免计算问题,能够设置一个“默认”伪计数来估计跃迁和排放概率是很有帮助的(有关这方面的更多讨论,请参见Durbin等人的第62页)。默认情况下,所有排放的伪计数均为1。

如果不允许来自给定状态的发射,则引发:KeyError。

class Bio.HMM.MarkovModel.HiddenMarkovModel(state_alphabet, emission_alphabet, initial_prob, transition_prob, emission_prob, transition_pseudo, emission_pseudo)

基类:object

表示可用于状态估计的隐马尔可夫模型。

__init__(state_alphabet, emission_alphabet, initial_prob, transition_prob, emission_prob, transition_pseudo, emission_pseudo)

初始化马尔可夫模型。

注意:您应该使用MarkovModelBuilder类,而不是直接启动该类。

参数:
  • state_alphabet--包含州中可能出现的所有字母的元组。

  • emetalphabet--包含HMM可以发出的州的所有字母的元组。

  • INITIAL_PROB-所有状态的初始概率字典。

  • Transition_Prob--序列中所有可能的转换的转换概率字典。

  • EISTIMATION_PROB--序列状态中所有可能的发射的发射概率字典。

  • TRANSITION_PUSIC--在进行计数以估计转换概率时,将用于转换的伪计数。

  • EISTIMATION_PUSIC--在进行计数以估计排放概率时,将用于排放的伪计数。

get_blank_transitions()

获取模型的默认过渡。

返回序列字母表中任意两个字母之间所有默认过渡的字典。字典的结构为键为(letter1,letter2),值为转换的起始数量。

get_blank_emissions()

获取每个序列的起始默认发射量。

这将返回每个字母的默认发射字典。字典的结构为键为(seq_Letter,emmission_Letter),值为发射的起始数量。

transitions_from(state_letter)

获取可以从源STATE_Letter转换的所有目标状态。

这将返回给定STATE_Letter可以转换到的所有字母,即可以从STATE_Letter到达的所有目标状态。

如果STATE_Letter没有传出转换,则返回空列表。

transitions_to(state_letter)

获取可以转换到目标STATE_Letter的所有源状态。

这将返回给定STATE_Letter可从其到达的所有字母,即可以到达STATE_LATER的所有源状态

如果无法访问STATE_Letter,则返回空列表。

viterbi(sequence, state_alphabet)

使用维特比算法计算最可能的状态路径。

这实现了Viterbi算法(请参阅Durbin等人的pgs55-57以获得完整的解释--这就是我的实现想法的来源),以允许解码给定的发射序列的状态路径。

参数:
  • Sequence--具有我们要解码的发射序列的Seq对象。

  • state_alphabet--包含州中可能出现的所有字母的可迭代(例如,元组或列表)