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--包含州中可能出现的所有字母的可迭代(例如,元组或列表)