top of page

Profile HMM (Hidden Markov Model)

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • Jul 30, 2014
  • 3 min read

Bu makalemde, Hidden Markov Model 'in Biyoinformatikteki Yeri olan Profile HMM inceliyor olucaz. DNA dizilimlerinde genlerin tespiti biyo informatik alaninda halen zorlu ve ilginc bir sorun olarak bilinmektedir. Bu kadar cok genomun cok hizli bir sekilde diziye girmesi, biyo informatikte gozlemlenecek tekniklere yol acmaktadir. Amac, dna nukleotidlerinin string'inde kodlanmis ve kodlanmamis bolgeleri bulabilmektedir. Ilgili dizilerin ve yapilarin ayni protein ailesine ait oldugu hakkindaki bilgilere profile bilgi denir. Hidden markov modeli ile gelecek yeni bir proteinin ayni profile ailesine ait olup olmadigini anlamaya calisiliyor. Ornek : Seq 1 = ACA- - -ATG Seq2 = TCAACTATC Seq3 = ACAC- -AGC Seq4 = AGA- - -ATC Seq5 = ACCG- -ATC Yandaki gibi elimizde 5 dizilimlik bir profile bilgisi bulunmaktadir. Bu dizilime gelecek olan yeni ACACATC dizilimi bu profile'a ait midir degil midir inceleyelim. Profile ailesinin yapisinda dikkat edilmesi gereken 3 ozellik bulunmaktadir. 1) Matching - Dizilerin alt alta gelmesiyle eslesen bazlar 2) Insertion - Dizilerin alt alta gelmesiyle toplam baz sayisinin %50'sinden fazlaysa diziye eklenmistir. 3) Deletion - Dizilerin alt alta gelmesiyle toplam baz sayisinin %50'sinden azsa diziden cikarilmistir. A    C    A    -    -    -    A    T    G T    C    A    A    C    T    A    T    C A    C    A    C    -    -    A    G    C A    G    A    -    -    -    A    T    C A    C    C    G    -    -    A    T    C Bu durumda diziler alt alta geldiginde tum bazlarin o profile'da ki gelme olasiliklari hesaplanmaktadir. Soyle ki; 5 dizimiz bulunmaktadir. ilk sutunda alt alta gelen bazlardan; A=4, T=1 adettir. Ayni sekilde ikinci sutunda alt alta gelen bazlardan; C=4, G=1 tanedir. Bu sekilde hepsinin sutun halinde sayilari belirlendikten sonra 5'e oranla olasiliklari hesaplanir. A = 4 * 1/5 = 0.80 'dir... Asagidaki Tabloda yesil sutun %50 degeri gectigi icin insertion, kirmizi sutun ise %50 degerin altinda oldugu icin deletion olarak kabul edilmektedir. A % 0.80    A % 0    A % 0.80    A % 0.20    A % 0    A % 0    A % 1.0    A % 0    A % 0 C % 0    C % 0.80    C % 0.20    C % 0    C % 0.20    C % 0    C % 0    C % 0    C % 0.80 G % 0     G % 0.20    G % 0    G % 0.20    G % 0     G % 0     G % 0     G % 0.20    G % 0.20 T % 0.20    T % 0    T % 0    T % 0.20    T % 0    T % 0.20    T % 0    T % 0.80    T % 0 Buna gore Hidden Markov Modelimizi hazirlayacak olursak;

phmm

        Bu modele gore, yeni gelen dizilimimizi hesaplayacak olursak; P(ACACATC) = (A * 1.0) * (C * 1.0) * (A * 0.60) * (C * 0.60) * (A * 1.0) * (T * 1.0) * C P(ACACATC) = (0.80 * 1.0) * (0.80 * 1.0) * (0.80 * 0.60) * (0.40 * 0.60) * (1.0 * 1.0) * (0.80 * 1.0) * 0.80 P(ACACATC) = 0.047   Profile HMM icin yazmis oldugum matlab komutlarini asagida bulabilirsiniz.

profileHMM.m Komutlari

clear all; close all; clc; seq1 = 'ACA---ATG'; seq2 = 'TCAACTATC'; seq3 = 'ACAC--AGC'; seq4 = 'AGA---ATC'; seq5 = 'ACCG--ATC'; seqs = {seq1,seq2,seq3,seq4,seq5}; sq = multialign(seqs) seQ1 = sq(1,:); seQ2 = sq(2,:); seQ3 = sq(3,:); seQ4 = sq(4,:); seQ5 = sq(5,:); yuzdeDeger = 100 / 5; s=1; disp('Profile Representation Matrix') for k=1:length(sq(1,:)) t = 0; a = 0; g = 0; c = 0; tire = 0; for i=1:length(sq(:,1)) if sq(i,k) == 'A' a = a + 1; end if sq(i,k) == 'T' t = t + 1; end if sq(i,k) == 'G' g = g + 1; end if sq(i,k) == 'C' c = c + 1; end if sq(i,k) == '-' tire = tire + 1; sutunNoAl(s,1) = k; s = s + 1; end end Matrix(1,k) = a * yuzdeDeger / 100; Matrix(2,k) = t * yuzdeDeger / 100; Matrix(3,k) = g * yuzdeDeger / 100; Matrix(4,k) = c * yuzdeDeger / 100; Matrix(5,k) = tire * yuzdeDeger / 100; end Matrix sutunNoAl = unique(sutunNoAl); for i=1:length(sutunNoAl) yeniMatrix(:,i) = Matrix(:,sutunNoAl(i,1)); end yeniMatrix; E = zeros(length(yeniMatrix),1); for k=1:length(yeniMatrix(1,:)) E(:,1) = E(:,1) + yeniMatrix(:,k); end yeniMatrix = E; p = 'ACAC--ATC'; for i=1:length(p) if p(i) == 'A' pSonuc(i,1) = Matrix(1,i) * sum(Matrix(:,i)); end if p(i) == 'T' pSonuc(i,1) = Matrix(2,i) * sum(Matrix(:,i)); end if p(i) == 'G' pSonuc(i,1) = Matrix(3,i) * sum(Matrix(:,i)); end if p(i) == 'C' pSonuc(i,1) = Matrix(4,i) * sum(Matrix(:,i)); end if i == sutunNoAl(1,1) || i == sutunNoAl(2,1) || i == sutunNoAl(3,1) if p(i) == 'A' pSonuc(i,1) = yeniMatrix(1,1) * 0.6; end if p(i) == 'T' pSonuc(i,1) = yeniMatrix(2,1) * 0.6; end if p(i) == 'G' pSonuc(i,1) = yeniMatrix(3,1) * 0.6; end if p(i) == 'C' pSonuc(i,1) = yeniMatrix(4,1) * 0.6; end end end olasiliklar = pSonuc' sum(pSonuc); TotalSonuc = prod(nonzeros(pSonuc)) Keyifli Calismalar Dilerim.

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page