最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

R語言用隱馬爾可夫Profile HMM模型進行生物序列分析和模擬可視化

2022-07-10 11:10 作者:拓端tecdat  | 我要投稿

原文鏈接:http://tecdat.cn/?p=27258?

原文出處:拓端數(shù)據(jù)部落公眾號

相關(guān)視頻:馬爾可夫鏈原理可視化解釋與R語言區(qū)制轉(zhuǎn)換Markov regime switching實例

馬爾可夫鏈原理可視化解釋與R語言區(qū)制轉(zhuǎn)換Markov?regime?switching實例

,時長07:25

相關(guān)視頻

馬爾可夫鏈蒙特卡羅方法MCMC原理與R語言實現(xiàn)

,時長08:47

摘要

本文開發(fā)和應(yīng)用用于生物序列分析的隱馬爾可夫模型和HMM。它包含多個和成對序列比對、模型構(gòu)建和參數(shù)優(yōu)化、文件導入/導出、實現(xiàn)條件序列概率的前向、后向和 Viterbi 算法、基于樹的序列加權(quán)和序列模擬的功能。

介紹

隱馬爾可夫模型 (HMM) 是計算生物學中許多最重要任務(wù)的基礎(chǔ),包括多序列比對、基因組注釋以及越來越多的序列數(shù)據(jù)庫搜索。最初是為語音識別算法開發(fā)的,由于計算能力的進步使得完全概率分析代替啟發(fā)式近似成為可能,因此它們在分子生物學領(lǐng)域的應(yīng)用急劇增加。

在這里,我們展示了??用于在 R 環(huán)境中分析隱藏馬爾可夫模型

隱馬爾可夫模型

隱馬爾可夫模型是一個序列或一組序列的概率數(shù)據(jù)生成機制。它由?狀態(tài)網(wǎng)絡(luò)描繪,其值特定于每個狀態(tài)。這些狀態(tài)由一組互連的?轉(zhuǎn)換概率遍歷,其中包括保持在任何給定狀態(tài)的概率以及轉(zhuǎn)換到每個其他連接狀態(tài)的概率。

Durbin et al (1998) 第 3.2 章給出了一個簡單 HMM 的例子。一個假想的賭場有兩個骰子,一個公平的,一個加權(quán)的。公平骰子從字母表 {1, 2, 3, 4, 5, 6} 中以相等的概率發(fā)出(每個 1/6)。加權(quán)骰子擲出“6”的概率為 0.5,而其他 5 個的概率為 0.1。如果莊家有公平骰子,他可能會在每次擲骰后以 0.05 的概率偷偷切換到裝好的骰子,留下 95% 的機會保留公平骰子。或者,如果他有加權(quán)的骰子,他將以 0.1 的概率切換回公平骰子,或者更有可能以 0.9 的概率保留加權(quán)骰子。

這個例子可以用一個簡單的兩態(tài)隱馬爾可夫模型來表示。以下代碼手動構(gòu)建和繪制“HMM”對象。


  1. ### 定義轉(zhuǎn)移概率矩陣A

  2. diamnsames(A) <- lidst(from = sdtatases, to = statddes)

  3. ### 定義概率矩陣 E

  4. dimnsdamesas(E) <- aslist(sdtateass = stasdates[-1])

  5. ### 創(chuàng)建 HMM 對象

?圖 1:不誠實賭場示例的簡單隱馬爾可夫模型。?plot.HMM 方法將轉(zhuǎn)換概率描述為加權(quán)線。在這個例子中沒有模擬開始/結(jié)束狀態(tài)。

對于一系列觀察到的擲骰,我們可以使用維特比算法建立最可能的隱藏狀態(tài)序列(包括最有可能發(fā)生骰子切換的時間)。在 Durbin 等人 (1998) 第 3.2 章給出的示例中,觀察到的 300 次滾動的序列為:

一些可觀察到的 6 簇表明加載的骰子在某個階段出現(xiàn)了,但是骰子切換是什么時候發(fā)生的呢?在下面的代碼中,Viterbi 算法用于在給定模型的情況下找到最可能的隱藏狀態(tài)序列。

  1. c("Fd", "La")[mastch(namdes(casasinao), c("Fsair", "Loasadded"))]

  2. ### 找到預測路徑

  3. viat1 <- Vitedsbi(xasd)

  4. 預測 <- c("Fa", "aL")[vist1$dpaath + 1]

  5. ### 注意輸出維特比對象的路徑元素是一個整數(shù)向量

將預測路徑與實際隱藏序列進行比較,Viterbi 算法并不遙遠:

我們還可以使用?forward?和/或?backward?算法計算給定模型的序列的完整概率和后驗概率:

  1. casasino.dspost <asd- posterassdior(xa, asdcasino)

  2. plot(1:300, saseq(0, 1, lasdength.ouast = 300)

?圖 2:300 次擲骰子的后驗狀態(tài)概率。?這條線顯示了骰子在每次擲骰時都是公平的后驗概率,而灰色矩形顯示了使用加載骰子的實際周期。有關(guān)詳細信息,請參見 Durbin 等人 (1998) 第 3.2 章。

從序列數(shù)據(jù)中導出 HMM

從一組訓練序列構(gòu)建HMM?。以下代碼從我們的單個擲骰子序列及其已知狀態(tài)路徑(存儲為序列的“名稱”屬性)中派生出一個簡單的 HMM。

  1. yajd <- dergsiveHMhM(lissffgtd(cadsfihnos), logshasdpfgace = FALSE)

  2. plosgt(y, teagghxteasfdxp = 1.5)


  3. ### 可選擇將轉(zhuǎn)換概率添加為文本

  4. tedhsaxt(xda = 0.02, yad = 0.5, ladbelass = roasdund(ya$Aa["Fasir", "Fadir"], 2))

圖 3:從 300 次擲骰子序列派生的簡單 HMM。?如圖 所示,轉(zhuǎn)換概率顯示為加權(quán)線,發(fā)射概率顯示為水平灰色條。

盡管訓練數(shù)據(jù)僅由一個序列組成,但這似乎與實際模型相當接近。人們通常會從許多此類序列的列表中導出 HMM(因此輸入?yún)?shù)是列表而不是向量的原因),但為清楚起見,此示例已簡化。

HMM隱馬爾可夫模型

Profile HMM馬爾可夫模型是標準 HMM 的擴展,其中轉(zhuǎn)移概率是?特定于位置的。也就是說,它們可以在序列中的每個點發(fā)生變化。這些模型通常比其簡單的 HMM 模型具有更多的參數(shù),但對于序列分析可能非常強大。Profile HMM 的前身通常是多序列比對。

圖 4 將上面列出的三種狀態(tài)類型分別顯示為圓形、菱形和矩形。這些狀態(tài)由圖中的加權(quán)線所示的轉(zhuǎn)移概率鏈接。

考慮來自 Durbin 等人 (1998) 第 5.3 章的氨基酸序列的小部分比對:

  1. data(gloasdbins)

  2. gldobinasds

位置特定模式包括在位置 1 觀察到“V”和在位置 3 觀察到“A”或“G”的高概率。

以下代碼從 globin 數(shù)據(jù)派生出 HMM 輪廓并繪制模型:

glsosdbgnss.PsdHMMf <- divfgsesPHMM(glns, resiufes = "AMaIsdfNO", pdfntss = "Laplsaace")

圖 4:源自部分珠蛋白序列比對的輪廓 HMM。?

匹配狀態(tài)顯示為矩形,插入狀態(tài)顯示為菱形,刪除狀態(tài)顯示為圓形?;疑綏l表示模型中每個位置的字母表(在本例中為氨基酸字母表)中每個殘基的發(fā)射概率。刪除狀態(tài)中的數(shù)字只是模型模塊編號,而插入狀態(tài)中的數(shù)字是在下一個發(fā)射周期保持在當前插入狀態(tài)的概率。在必要時對線進行加權(quán)和定向,以反映狀態(tài)之間的轉(zhuǎn)換概率。大的“B”和“E”標簽分別代表靜默開始和結(jié)束狀態(tài)。

我們可以通過計算該序列在模型中的最優(yōu)路徑來證明這一點,同樣使用維特比算法:

  1. padaath <- Vitferbi(glsdosbinsd.PsHMM, glodbdins["GsLB1d_GLYsDI", ])$patdh

  2. pdatsh

Viterbi 對象的“路徑”元素是一個整數(shù)向量,其元素取值為 0(“刪除”)、1(“匹配”)或 2(“插入”)。路徑可以更直觀地表示為字符而不是索引,如下所示:

c("D", "M", "I")[pgatsh + 1]

請注意,向每個路徑元素添加 1 只是為了將 C/C++ 索引樣式(從 0 開始)轉(zhuǎn)換為 R 的樣式。

序列模擬

為了模擬隨機變化的數(shù)據(jù)。例如,以下代碼模擬了來自小珠蛋白 HMM 的 10 個隨機序列的列表:

  1. siasdm <- ldist(lfenhgsth = 10)

  2. suppressWarffnings(RNGvghjerhhjion("3.5.0"))

  3. k

  4. for(i in 1:10) shim[[i]] <- genkerate(globihhgkjknks.PHhMM, size = 20)

  5. sihmg

?

模型訓練

使用 Baum Welch 或 Viterbi 訓練算法優(yōu)化模型參數(shù)。train兩者都是迭代細化算法;前者不依賴于多序列比對,但通常比后者慢得多。通過指定并行處理的“cores”參數(shù),可以進一步加快 Viterbi 訓練操作。訓練算法的最佳選擇通常取決于問題的性質(zhì)和可用的計算資源。

以下代碼使用 Baum Welch 算法在上一步中模擬的序列訓練小珠蛋白輪廓 HMM。

  1. glosf.sdPHjMlM <- trdaisn(glogbfhhjins.PHMM, sigm, metjghodh= "BaughmghWelch",

  2. dk'lelt;aLL = 0.01, sejqweig;lhklkjts = NULL)

該操作需要 7 次期望最大化迭代才能收斂到指定的 delta 對數(shù)似然閾值 0.01。

序列比對

使用上述?迭代模型訓練方法,可以生成高質(zhì)量的多序列比對。然后以通常的方式將序列與模型對齊以產(chǎn)生對齊。

在最后一個示例中,我們將解構(gòu)原始珠蛋白對齊并使用原始 PHMM 作為指導重新對齊序列。

  1. globdins <- unaffalign(globgsins)

  2. align(globinjjs, model = globinhs.PHsgMM, seqwjeighjts = NULL, resjidues = "AMINO")

請注意,列名顯示了沿模型的漸進位置,以及預測插入狀態(tài)已發(fā)出殘基的位置(例如序列 7 的第 4 和第 5 個殘基)。

參考

德賓、理查德、肖恩·埃迪、安德斯·克羅和格雷姆·米奇森。1998.?生物序列分析:蛋白質(zhì)和核酸的概率模型。劍橋:劍橋大學出版社。

最受歡迎的見解

1.用R語言模擬混合制排隊隨機服務(wù)排隊系統(tǒng)

2.R語言中使用排隊論預測等待時間

3.R語言中實現(xiàn)馬爾可夫鏈蒙特卡羅MCMC模型

4.R語言中的馬爾科夫機制轉(zhuǎn)換(Markov regime switching)模型

5.matlab貝葉斯隱馬爾可夫hmm模型

6.用R語言模擬混合制排隊隨機服務(wù)排隊系統(tǒng)

7.Python基于粒子群優(yōu)化的投資組合優(yōu)化

8.R語言馬爾可夫轉(zhuǎn)換模型研究交通傷亡人數(shù)事故預測

9.用機器學習識別不斷變化的股市狀況——隱馬爾可夫模型的應(yīng)用


R語言用隱馬爾可夫Profile HMM模型進行生物序列分析和模擬可視化的評論 (共 條)

分享到微博請遵守國家法律
县级市| 武威市| 鄱阳县| 永善县| 正蓝旗| 六枝特区| 巴楚县| 金坛市| 泌阳县| 平原县| 夹江县| 沙雅县| 鹿泉市| 泰安市| 阳东县| 琼结县| 达尔| 静海县| 大连市| 建德市| 建阳市| 安徽省| 海盐县| 绥芬河市| 农安县| 枣强县| 探索| 石嘴山市| 阳泉市| 墨江| 沙田区| 雷山县| 株洲市| 常德市| 乐平市| 万全县| 乌鲁木齐市| 延庆县| 延安市| 孟州市| 昔阳县|