HMM与维特比算法在基因组序列中的应用

前言

受启发于一篇文献Parent-independent genotyping for constructing an ultrahigh-density linkage map based on population sequencing
这里面有一段讲述了利用低覆盖度测序技术,对两个纯系个体M和Z的二倍体后代进行测序,这两个纯系亲本为MM和ZZ。由于低覆盖度的关系,那么杂合位点MZ只能测到一个等位基因,因此表现为MM或ZZ。因此你实际观察到的序列为m(MM)或(ZZ)【观测层的情况】,但是实际隐含层有MM,MZ和ZZ三种。目的是通过HMM算法,从观测层出发反推隐含层的状态

维特比算法

这里借用维基百科里面的例子:维特比

这是个病人看病的例子,其中隐含层状态有两个:1. Healthy;2. Fever
而实际观测到的观测层有三个结果:1. Dizzy;2. Cold;3. Normal
假设有一个病人连续三天看医生,医生发现第一天他感觉正常,第二天感觉冷,第三天感觉头晕。 于是医生产生了一个问题:怎样的健康状态序列最能够解释这些观察结果,这就需要维特比算法来解决实际问题了

图例:


假设说隐含层的状态转移矩阵为:


隐含层到观测层的发射矩阵为:


那么由观测层反推隐含层如下:

  1. 红色箭头表示维特比算法的最优路径
  2. 小括号内表示的是每个状态所对应的值,保留最大的那个值
  3. 式子表示转移数值,最大的为最有路径

第一步,假设说这个病人的初始状态为健康和发热的概率分别为0.6和0.4,那么分别定义两条路径如下图所示:


由起始点开始,初始概率乘对应状态的转移概率,再乘对应状态的发射概率得到Day_1的值

第二步:



计算Day_2相应的值

第三步:



计算Day_3相应的值
因此的到隐含层的最佳路径(红色路径),即前两天的状态是Healthy,第三天状态是Fever

基因组上的应用


从这张文献图里面反应的也是同样的问题,隐含层有三个状态:MM,MZ和ZZ;观测层有两个:m和z,由于低覆盖测序在杂合位点MZ只能测到一个等位基因,因此只能观测到m(即MM基因型)或者z(即ZZ基因型),因此对于每个位点来说,相当是上一个例子的 Day,有100个位点,相当于做了100次随机游走。
即观察到是m和z,反推隐含层的状态是MM,MZ还是ZZ
起始状态向量MM:0.4975,ZZ:0.4975,MZ:0.005,分别对应各自的起始状态。
由于重组率为0.01,意味着某一状态向其他两个状态转移的概率为0.01,向自生转移的概率为0.98;隐含层与实际观测到碱基存在0.03的突变,那么由于观测到的是m和z,只可能测到m突变为z,或者观测到z突变成m。因此,MM中的m有0.97的概率是不突变的,即观测到m,有0.03的概率是突变为z;类似的,ZZ中的z有0.97的概率是不突变的,即观测到z,有0.03的概率是突变为m;而MZ由于只能测到其中一个杂合位点,若测到M则观测到m,若测到Z则观测到z,各为0.5的概率


那么左边为转移概率矩阵,右边为发射矩阵

R实现

在R里面可以调包实现,代码参考hmm_1.R
为了简化模型,对于状态集合,MM用1来表示,ZZ用0来表示,MZ用2来表示;对于观测集合,m用m表示,z用z表示

library(HMM)
## 所有可能状态集合
state <- c("0","1","2")

## 所有可能观测集合
Symbols <- c("m","z")

## 初始概率分布
startprob <- c(0.4,0.2,0.4)

## 状态转移概率矩阵
transpro <- matrix(c(0.98, 0.01, 0.01, 0.01, 0.98, 0.01 ,0.01 ,0.01 ,0.98),nrow = 3)

## 观测概率分布
emisspr <- matrix(c(0.97,0.5,0.03,0.03,0.5,0.97),nrow = 3)

#建模
hmm <- initHMM(States = state,Symbols = Symbols,startProbs = startprob,transProbs = transpro,
               emissionProbs = emisspr)

## 得到的一个观测
ober <- c(sample(c(rep("m",5),rep("z",10))),
          sample(c(rep("z",25),rep("m",7))))
bw <- baumWelch(hmm,observation = ober)

viterbi(hmm,ober)

结果展示:



这样就把隐含的状态找出来了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341