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)

初始化類別。