Bio.HMM.DynamicProgramming 模組
用於一般用途的動態規劃演算法。
此模組包含實作可通用之動態規劃演算法的類別。
- class Bio.HMM.DynamicProgramming.AbstractDPAlgorithms(markov_model, sequence)
基底類別:
object
一個計算正向和反向機率的抽象類別。
這個類別不應直接實例化,而應透過實作變數適當縮放的衍生類別來使用。
這個類別僅旨在封裝基本的正向和反向演算法,並允許衍生類別處理機率相乘的問題。
此類的衍生類別必須實作
_forward_recursion – 使用某種防止下溢錯誤的技術來計算遞迴中的正向值。
_backward_recursion – 使用某種防止下溢錯誤的技術來計算遞迴步驟中的反向值。
- __init__(markov_model, sequence)
初始化以計算正向和反向機率。
- 參數
markov_model – 我們正在使用的當前馬可夫模型。
sequence – 包含一組發射的訓練序列。
- forward_algorithm()
使用正向演算法計算序列機率。
這實作了 Durbin 等人第 57-58 頁描述的正向演算法。
- 回傳
一個包含正向變數的字典。它的鍵值形式為(狀態字母,訓練序列中的位置),而值包含計算出的正向變數。
計算出的序列機率。
- backward_algorithm()
使用反向演算法計算序列機率。
這實作了 Durbin 等人第 58-59 頁描述的反向演算法。
- 回傳
一個包含反向變數的字典。它的鍵值形式為(狀態字母,訓練序列中的位置),而值包含計算出的反向變數。
- class Bio.HMM.DynamicProgramming.ScaledDPAlgorithms(markov_model, sequence)
基底類別:
AbstractDPAlgorithms
使用重新縮放方法實作正向和反向演算法。
這會縮放 f 和 b 變數,使它們在計算過程中保持在可管理的數值區間內。Durbin 等人第 78 頁描述了這種方法。
這種方法比對數轉換更直接一些,但對於某些類型的模型仍可能產生下溢錯誤。在這些情況下,應使用 LogDPAlgorithms 類別。
- __init__(markov_model, sequence)
初始化縮放方法以計算機率。
- 參數
markov_model – 我們正在使用的當前馬可夫模型。
sequence – 一個 TrainingSequence 物件,必須具有一組發射才能使用。
- class Bio.HMM.DynamicProgramming.LogDPAlgorithms(markov_model, sequence)
基底類別:
AbstractDPAlgorithms
使用對數方法實作正向和反向演算法。
這使用計算對數機率之和的方法,並使用查閱表來查找常見值。
XXX 這個尚未實作!
- __init__(markov_model, sequence)
初始化類別。