原文鏈接:http:///?p=27258摘要本文開(kāi)發(fā)和應(yīng)用用于生物序列分析的隱馬爾可夫模型和HMM。它包含多個(gè)和成對(duì)序列比對(duì),、模型構(gòu)建和參數(shù)優(yōu)化,、文件導(dǎo)入/導(dǎo)出、實(shí)現(xiàn)條件序列概率的前向,、后向和 Viterbi 算法,、基于樹(shù)的序列加權(quán)和序列模擬的功能。 相關(guān)視頻 介紹隱馬爾可夫模型 (HMM) 是計(jì)算生物學(xué)中許多最重要任務(wù)的基礎(chǔ),,包括多序列比對(duì),、基因組注釋以及越來(lái)越多的序列數(shù)據(jù)庫(kù)搜索。最初是為語(yǔ)音識(shí)別算法開(kāi)發(fā)的,,由于計(jì)算能力的進(jìn)步使得完全概率分析代替啟發(fā)式近似成為可能,,因此它們?cè)诜肿由飳W(xué)領(lǐng)域的應(yīng)用急劇增加。 在這里,,我們展示了 用于在 R 環(huán)境中分析隱馬爾可夫模型,。 隱馬爾可夫模型隱馬爾可夫模型是一個(gè)序列或一組序列的概率數(shù)據(jù)生成機(jī)制。它由 _狀態(tài)_網(wǎng)絡(luò)描繪,,其值特定于每個(gè)狀態(tài),。這些狀態(tài)由一組互連的 _轉(zhuǎn)換概率_遍歷,其中包括保持在任何給定狀態(tài)的概率以及轉(zhuǎn)換到每個(gè)其他連接狀態(tài)的概率,。 Durbin et al (1998) 第 3.2 章給出了一個(gè)簡(jiǎn)單 HMM 的例子,。一個(gè)假想的賭場(chǎng)有兩個(gè)骰子,一個(gè)公平的,,一個(gè)加權(quán)的,。公平骰子從字母表 {1, 2, 3, 4, 5, 6} 中以相等的概率發(fā)出(每個(gè) 1/6)。加權(quán)骰子擲出“6”的概率為 0.5,,而其他 5 個(gè)的概率為 0.1,。如果莊家有公平骰子,他可能會(huì)在每次擲骰后以 0.05 的概率偷偷切換到裝好的骰子,,留下 95% 的機(jī)會(huì)保留公平骰子,。或者,,如果他有加權(quán)的骰子,,他將以 0.1 的概率切換回公平骰子,或者更有可能以 0.9 的概率保留加權(quán)骰子,。 這個(gè)例子可以用一個(gè)簡(jiǎn)單的兩態(tài)隱馬爾可夫模型來(lái)表示,。以下代碼手動(dòng)構(gòu)建和繪制“HMM”對(duì)象。 ### 定義轉(zhuǎn)移概率矩陣A 圖 1:不誠(chéng)實(shí)賭場(chǎng)示例的簡(jiǎn)單隱馬爾可夫模型,。 plot方法將轉(zhuǎn)換概率描述為加權(quán)線,。在這個(gè)例子中沒(méi)有模擬開(kāi)始/結(jié)束狀態(tài),。 點(diǎn)擊標(biāo)題查閱往期內(nèi)容 PYTHON用時(shí)變馬爾可夫區(qū)制轉(zhuǎn)換(MARKOV REGIME SWITCHING)自回歸模型分析經(jīng)濟(jì)時(shí)間序列 左右滑動(dòng)查看更多 對(duì)于一系列觀察到的擲骰,我們可以使用維特比算法建立最可能的隱狀態(tài)序列(包括最有可能發(fā)生骰子切換的時(shí)間),。在 Durbin 等人 (1998) 第 3.2 章給出的示例中,,觀察到的 300 次滾動(dòng)的序列為: 一些可觀察到的 6 簇表明加載的骰子在某個(gè)階段出現(xiàn)了,但是骰子切換是什么時(shí)候發(fā)生的呢,?在下面的代碼中,,Viterbi 算法用于在給定模型的情況下找到最可能的隱狀態(tài)序列。 c("Fd", "La")\[mastch(namdes(casasinao), c("Fsair", "Loasadded"))\] 將預(yù)測(cè)路徑與實(shí)際隱序列進(jìn)行比較,,Viterbi 算法并不遙遠(yuǎn): 我們還可以使用 casasino.dspost <asd- posterassdior(xa, asdcasino)plot(1:300, saseq(0, 1, lasdength.ouast = 300) 圖 2:300 次擲骰子的后驗(yàn)狀態(tài)概率,。 這條線顯示了骰子在每次擲骰時(shí)都是公平的后驗(yàn)概率,而灰色矩形顯示了使用加載骰子的實(shí)際周期,。有關(guān)詳細(xì)信息,,請(qǐng)參見(jiàn) Durbin 等人 (1998) 第 3.2 章。 從序列數(shù)據(jù)中導(dǎo)出 HMM從一組訓(xùn)練序列構(gòu)建HMM ,。以下代碼從我們的單個(gè)擲骰子序列及其已知狀態(tài)路徑(存儲(chǔ)為序列的“名稱”屬性)中派生出一個(gè)簡(jiǎn)單的 HMM,。 yajd <- dergsiveHMhM(lissffgtd(cadsfihnos), logshasdpfgace = FALSE)plosgt(y, teagghxteasfdxp = 1.5)### 可選擇將轉(zhuǎn)換概率添加為文本tedhsaxt(xda = 0.02, yad = 0.5, ladbelass = roasdund(ya$Aa\["Fasir", "Fadir"\], 2)) 圖 3:從 300 次擲骰子序列派生的簡(jiǎn)單 HMM,。 如圖 所示,,轉(zhuǎn)換概率顯示為加權(quán)線,發(fā)射概率顯示為水平灰色條,。 盡管訓(xùn)練數(shù)據(jù)僅由一個(gè)序列組成,,但這似乎與實(shí)際模型相當(dāng)接近。人們通常會(huì)從許多此類序列的列表中導(dǎo)出 HMM(因此輸入?yún)?shù)是列表而不是向量的原因),,但為清楚起見(jiàn),,此示例已簡(jiǎn)化。 HMM隱馬爾可夫模型Profile HMM馬爾可夫模型是標(biāo)準(zhǔn) HMM 的擴(kuò)展,,其中轉(zhuǎn)移概率是 _特定于位置的_,。也就是說(shuō),它們可以在序列中的每個(gè)點(diǎn)發(fā)生變化,。這些模型通常比其簡(jiǎn)單的 HMM 模型具有更多的參數(shù),,但對(duì)于序列分析可能非常強(qiáng)大。Profile HMM 的前身通常是多序列比對(duì),。 圖 4 將上面列出的三種狀態(tài)類型分別顯示為圓形,、菱形和矩形。這些狀態(tài)由圖中的加權(quán)線所示的轉(zhuǎn)移概率鏈接,。 考慮來(lái)自 Durbin 等人 (1998) 第 5.3 章的氨基酸序列的小部分比對(duì): data(gloasdbins)gldobinasds 位置特定模式包括在位置 1 觀察到“V”和在位置 3 觀察到“A”或“G”的高概率,。 以下代碼從 globin 數(shù)據(jù)派生出 HMM 輪廓并繪制模型: glsosdbgnss.PsdHMMf <- divfgsesPHMM(glns, resiufes = "AMaIsdfNO", pdfntss = "Laplsaace") 圖 4:源自部分珠蛋白序列比對(duì)的HMM。 匹配狀態(tài)顯示為矩形,,插入狀態(tài)顯示為菱形,,刪除狀態(tài)顯示為圓形,。灰色水平條表示模型中每個(gè)位置的字母表(在本例中為氨基酸字母表)中每個(gè)殘基的發(fā)射概率,。刪除狀態(tài)中的數(shù)字只是模型模塊編號(hào),,而插入狀態(tài)中的數(shù)字是在下一個(gè)發(fā)射周期保持在當(dāng)前插入狀態(tài)的概率。在必要時(shí)對(duì)線進(jìn)行加權(quán)和定向,,以反映狀態(tài)之間的轉(zhuǎn)換概率,。大的“B”和“E”標(biāo)簽分別代表靜默開(kāi)始和結(jié)束狀態(tài)。 我們可以通過(guò)計(jì)算該序列在模型中的最優(yōu)路徑來(lái)證明這一點(diǎn),,同樣使用維特比算法: padaath <- Vitferbi(glsdosbinsd.PsHMM, glodbdins\["GsLB1d_GLYsDI", \])$patdhpdatsh Viterbi 對(duì)象的“路徑”元素是一個(gè)整數(shù)向量,,其元素取值為 0(“刪除”)、1(“匹配”)或 2(“插入”),。路徑可以更直觀地表示為字符而不是索引,,如下所示: c("D", "M", "I")\[pgatsh + 1\] 請(qǐng)注意,向每個(gè)路徑元素添加 1 只是為了將 C/C++ 索引樣式(從 0 開(kāi)始)轉(zhuǎn)換為 R 的樣式,。 序列模擬為了模擬隨機(jī)變化的數(shù)據(jù),。例如,以下代碼模擬了來(lái)自小珠蛋白 HMM 的 10 個(gè)隨機(jī)序列的列表: siasdm <- ldist(lfenhgsth = 10)suppressWarffnings(RNGvghjerhhjion("3.5.0")) 模型訓(xùn)練使用 Baum Welch 或 Viterbi 訓(xùn)練算法優(yōu)化模型參數(shù),。 以下代碼使用 Baum Welch 算法在上一步中模擬的序列訓(xùn)練小珠蛋白輪廓 HMM,。 glosf.sdPHjMlM <- trdaisn(glogbfhhjins.PHMM, sigm, metjghodh= "BaughmghWelch", 該操作需要 7 次期望最大化迭代才能收斂到指定的 delta 對(duì)數(shù)似然閾值 0.01。 序列比對(duì)使用上述 迭代模型訓(xùn)練方法,,可以生成高質(zhì)量的多序列比對(duì),。然后以通常的方式將序列與模型對(duì)齊以產(chǎn)生對(duì)齊。 在最后一個(gè)示例中,,我們將解構(gòu)原始珠蛋白對(duì)齊并使用原始 PHMM 作為指導(dǎo)重新對(duì)齊序列,。 globdins <- unaffalign(globgsins)align(globinjjs, model = globinhs.PHsgMM, seqwjeighjts = NULL, resjidues = "AMINO") 請(qǐng)注意,列名顯示了沿模型的漸進(jìn)位置,,以及預(yù)測(cè)插入狀態(tài)已發(fā)出殘基的位置(例如序列 7 的第 4 和第 5 個(gè)殘基),。 參考德賓、理查德,、肖恩·埃迪,、安德斯·克羅和格雷姆·米奇森。1998. _生物序列分析:蛋白質(zhì)和核酸的概率模型_,。劍橋:劍橋大學(xué)出版社,。 |
|
來(lái)自: 拓端數(shù)據(jù) > 《待分類》