Bio.HMM.MarkovModel 模块
处理马尔科夫模型的表示。
- class Bio.HMM.MarkovModel.MarkovModelBuilder(state_alphabet, emission_alphabet)
基类:
object
构建马尔科夫模型的接口。
此类旨在尝试将指定马尔科夫模型的任务与实际模型本身分开。这希望能使实际的马尔科夫模型类更小。
因此,此构建器类应用于创建马尔科夫模型,而不是尝试直接初始化马尔科夫模型。
- DEFAULT_PSEUDO = 1
- __init__(state_alphabet, emission_alphabet)
初始化一个构建器来创建马尔科夫模型。
- 参数
state_alphabet – 一个可迭代对象(例如,元组或列表),其中包含所有可能出现在状态中的字母
emission_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)
将两个状态之间的转换设置为可能。
probability 和 pseudocount 是可选参数,指定转换的概率和伪计数。如果未提供这些参数,则将值设置为默认值。
引发: 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 – 包含所有可能出现在状态中的字母的元组。
emission_alphabet – 包含 HMM 可以发射的所有状态字母的元组。
initial_prob - 所有状态的初始概率字典。
transition_prob – 所有可能序列转换的转换概率字典。
emission_prob – 所有可能从序列状态发射的排放概率字典。
transition_pseudo – 用于转换的伪计数,用于计算估计转换概率的目的。
emission_pseudo – 用于排放的伪计数,用于计算估计排放概率的目的。
- get_blank_transitions()
获取模型的默认转换。
返回序列字母表中任何两个字母之间所有默认转换的字典。该字典的结构是键为 (letter1, letter2),值为转换的起始数量。
- get_blank_emissions()
获取每个序列的默认起始排放。
返回每个字母的默认排放字典。该字典的结构是键为 (seq_letter, emission_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)
使用维特比算法计算最有可能的状态路径。
该算法实现了维特比算法(参见 Durbin 等人的第 55-57 页,这里提供了完整的解释,这是我实现想法的来源),允许在给定排放序列的情况下解码状态路径。
- 参数
sequence – 包含我们要解码的排放序列的 Seq 对象。
state_alphabet – 一个可迭代对象(例如,元组或列表),其中包含所有可能出现在状态中的字母