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 等人的 p62)。 預設情況下,所有發射的偽計數均為 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_letter 的所有來源狀態。
如果 state_letter 不可到達,則返回一個空列表。
- viterbi(sequence, state_alphabet)
使用維特比演算法計算最可能的狀態路徑。
這實現了維特比演算法(完整解釋請參閱 Durbin 等人的第 55-57 頁 - 這是我取得實作想法的地方),以允許在給定發射序列的情況下解碼狀態路徑。
- 參數
sequence – 一個包含我們要解碼的發射序列的 Seq 物件。
state_alphabet – 一個可迭代的(例如,元組或列表),包含所有可能出現在狀態中的字母