Algorithm Design

37
系列アライメント (Sequence Alignment) 吉田康久 University of Tsukuba May 27, 2009 吉田康久 系列アライメント (Sequence Alignment)

Transcript of Algorithm Design

Page 1: Algorithm Design

系列アライメント (Sequence Alignment)

吉田康久

University of Tsukuba

May 27, 2009

吉田康久 系列アライメント (Sequence Alignment)

Page 2: Algorithm Design

問題の背景、似ている単語

Web上の辞書で単語を引くスペルミス

occurranceを occurrenceGoogleの「もしかして」

「似ている単語」の類似度を定義したい直感的に’ocurrance’と’occurrence’は似ている

cを加えて aを eに置き変える

吉田康久 系列アライメント (Sequence Alignment)

Page 3: Algorithm Design

ほぼそろえて整列

ギャップ (gap)「-」はそろえて整列させるために、一方の単語に一文字加えないといけないことを示すギャップ

ミスマッチ異なる文字が同じ位置を占めている状態例 : ’aaaaa’と’aabaa’では 3文字目がミスマッチ

吉田康久 系列アライメント (Sequence Alignment)

Page 4: Algorithm Design

類似性が高いのは?

’o-curr-ance’と’occurre-nce’3個のギャップと 0個のミスマッチ

さっきのは 1個のギャップと 1個のミスマッチ

どちらがよりよい整列された状態か?あとでよさを決定するために、コストの概念を導入する

吉田康久 系列アライメント (Sequence Alignment)

Page 5: Algorithm Design

応用先

辞書のインターフェイスやスペルチェッカーこの種類の問題に対する応用を最先端に目指しているわけではない

分子生物学では、中心的な計算問題となっている

吉田康久 系列アライメント (Sequence Alignment)

Page 6: Algorithm Design

分子生物学

遺伝子におけるゲノム (genome)巨大な線形のDNA分子!染色体

{A, T, G, C}の文字からなるでっかいテープのようなもの

機能が分かっているDNAとの「類似する」部分文字列を見つけてくる実験をすることなく、その部分文字列を持つDNAもその機能を持つと仮定できる

吉田康久 系列アライメント (Sequence Alignment)

Page 7: Algorithm Design

問題定義

2つの文字列 Xと Yが与えられたとするXは文字列 x1x2 · · · xm、Yは文字列 y1y2 · · · yn であるとする文字列 Xと位置集合 {1, 2, · · · ,m}と文字列Yの位置集合 {1, 2, · · · , n}について集合間のマッチングについて考える

吉田康久 系列アライメント (Sequence Alignment)

Page 8: Algorithm Design

マッチング

Definition各要素が高々一個の対にしか出現しないという性質を満たす順序対の集合

Example{(1, 2), (2, 3), (3, 4)}

!マッチングになっている例{(1, 4), (1, 3), (3, 4)}

!マッチングになっていない例

吉田康久 系列アライメント (Sequence Alignment)

Page 9: Algorithm Design

アライメント (alignment)

Definitionマッチングの集合Mに対して、「クロスする」対が存在しないとき、Mをアライメント" (i, j), (i#, j#) $ Mかつ i < i#ならば j < j#であるとき、Mをアライメント

Example{(1, 2), (2, 3), (3, 4)}

!アライメントになっている例{(1, 4), (2, 3), (3, 1)}

!アライメントになっていない例

吉田康久 系列アライメント (Sequence Alignment)

Page 10: Algorithm Design

文字の整列の仕方とアライメント

アライメントは同じ位置に並ぶ文字を指定して、二つの文字列を整列する方法を与えている

Example’stop’と’tops’の 2つの文字列に対して、アライメント{(2, 1), (3, 2), (4, 3)}を与えてやると、以下の整列の仕方を得ることができる

s t o p -- t o p s

吉田康久 系列アライメント (Sequence Alignment)

Page 11: Algorithm Design

類似度の定義

Mを Xと YのアライメントとするアライメントMのコスト (cost)は以下で定義するMにおける「ギャップコスト」と「ミスマッチのコスト」の総和これを最小にするようなアライメントを求めたい

吉田康久 系列アライメント (Sequence Alignment)

Page 12: Algorithm Design

ギャップコスト

ギャップペナルティ(gap penalty)を定義するパラメータ ! > 0というものについて考えるMでマッチされていない Xと Yの各位置に対して、ギャップがあるので、!のコストをかけるようにする

Example’stop’と’tops’の例では、2つのギャップが発生しているので、ギャップコストは 2!である

s t o p -- t o p s

吉田康久 系列アライメント (Sequence Alignment)

Page 13: Algorithm Design

ミスマッチコスト (1/2)

アルファベットの文字の各対 p, qに対して、pと qを同じ位置に整列するときのミスマッチコスト"pqというものについて考える各 (i, j) $ Mに対して xiと y jを同じ位置に整列するときのミスマッチコスト"pqがかかる同じ位置に同じ文字を整列した場合には"pq = 0とする

吉田康久 系列アライメント (Sequence Alignment)

Page 14: Algorithm Design

ミスマッチコスト (2/2)

Example’stop’と’tops’の例では、(2, 1) $ Mに対して x2 = tかつy1 = tで"pq = 0。同様にやっていくと、このアライメントに関してはミスマッチコストの総和は 0であることが分かる

s t o p -- t o p s

吉田康久 系列アライメント (Sequence Alignment)

Page 15: Algorithm Design

注意

最小コストのアライメントを最適なアライメントという

最適なアライメントを求めるプロセスは生物学の分野では系列アライメントと呼ばれることが多い

生物学の分野では、ギャップコスト !とミスマッチコスト"pqをどのように決定するかが重要で研究されているしかし、ここではこれらのパラメータは外部から与えられるものとして、最適なアライメントを得るアルゴリズムに注目していく

吉田康久 系列アライメント (Sequence Alignment)

Page 16: Algorithm Design

系列アライメントのアルゴリズム

動的計画法のアプローチを用いて取り組むことにする以下の事実がその動機付けになるから

二つの文字列の最後の文字が互いにマッチされるか、マッチされないかのいずれかミスマッチしていても、マッチはしている

Fact最適なアライメントMにおいて、(m, n) $ Mあるいは(m, n) ! Mである

吉田康久 系列アライメント (Sequence Alignment)

Page 17: Algorithm Design

系列アライメントのアルゴリズム

FactMを X = x1x2 · · · xmと Y = y1y2 · · · ynの任意のアライメントとすると、(m, n) ! Mならば、Xの位置mあるいは Yの位置 nのいづれかはMでマッチされていない

吉田康久 系列アライメント (Sequence Alignment)

Page 18: Algorithm Design

系列アライメントのアルゴリズム

Proof.背理法で証明する。A! (B %C)の否定は

¬(A! B %C)! ¬(¬A % B %C)! A & ¬B & ¬C

である。これより、仮定を否定して「(m, n) ! Mであり、(m, j) $ M かつ (i, n) $ Mとなるような i < mとj < nが存在する」と仮定する。(i, n), (m, j) $ M、i < mかつ n > jとなっているので、(i, n)と (m, j)はクロスすることになり、これはアライメントの定義に反している。よって仮定が誤りである。 !

吉田康久 系列アライメント (Sequence Alignment)

Page 19: Algorithm Design

補足

(m, n) ! Mであるから、mと nはマッチしていないmと nのそれぞれはマッチしているのだから、mとマッチしているものを j、nとマッチしているものを iとしようすると次のような状態になっているはず

X : · · · xm ' · · · ' xiY : · · · y j ' · · · ' yn

あとはアライメントの定義に反するのを使うだけ

吉田康久 系列アライメント (Sequence Alignment)

Page 20: Algorithm Design

漸化式の定式化

先程までの 2つの命題を使うと、以下のように 3つの場合に分けて書くことができるこれを利用して漸化式を定式化

Fact最適なアライメントMにおいて、以下の (i)、(ii)、(iii)がのうち少なくとも一つが成立する

(i) (m, n) $ Mである(ii) Xの位置mではマッチしていない(iii) Yの位置 nではマッチしていない

吉田康久 系列アライメント (Sequence Alignment)

Page 21: Algorithm Design

漸化式の定式化

Fact任意の 1 ( i ( m, 1 ( j ( nに対して、アライメントの最小コストOPT(i, j)は、漸化式

OPT(i, j) = min["xiy j + OPT(i ' 1, j ' 1),! + OPT(i ' 1, j), ! +OPT(i, j ' 1)]

を満たす。さらに、(i, j)がこの問題の最適なアライメントに属することと、最小値がこれらの値のうちの最初の値で達成させることとは、等価である。

吉田康久 系列アライメント (Sequence Alignment)

Page 22: Algorithm Design

漸化式の定式化の証明 (1/3)

Proof.任意の 1 ( i ( m, 1 ( j ( nに対して、文字列x1x2 · · · xm'1と文字列 y1y2 · · · yn'1間のアライメントの最小コストをOPT(i, j)とする。前の命題において、三つの場合のうち、少なくとも一つが成立するという事実の着目する。 !

吉田康久 系列アライメント (Sequence Alignment)

Page 23: Algorithm Design

漸化式の定式化の証明 (2/3)

Proof.(i)が成立するとする。この時は (m, n)でマッチしているので、"xmynのコストが発生する。(m, n)ではマッチしたので、それ以前の二つの部分文字列 x1x2 · · · xi'1とy1y2 · · · y j'1において、コスト最小化を考えればよい。ゆえに、(i)ではOPT(m, n) = "xmyn + OPT(m ' 1, n ' 1)が得られる。 !

吉田康久 系列アライメント (Sequence Alignment)

Page 24: Algorithm Design

漸化式の定式化の証明 (3/3)

Proof.(ii)が成立するとする。Xの位置mではマッチしていないので、ギャップコスト !が発生する。そして、それ以前の二つの部分文字列 x1x2 · · · xm'1と y1y2 · · · ynについてのコスト最小化を考えればよい。ゆえに、(ii)ではOPT(m, n) = ! +OPT(m ' 1, n)が得られる。(iii)についても同様である。文字列 x1x2 · · · xiと文字列 y1y2 · · · y jの間の最小コストを求める部分問題も上と同様の議論ができるので、欲しい漸化式が得られることになる。 !

吉田康久 系列アライメント (Sequence Alignment)

Page 25: Algorithm Design

漸化式を利用する

漸化式を利用して、m ) nの二次元配列のようなものを用意して、OPT(i, j)の値を書き込んでいけばよい。

吉田康久 系列アライメント (Sequence Alignment)

Page 26: Algorithm Design

アルゴリズム

Alignment(X,Y):配列 A[0...m, 0...n]を用意各 iに対して A[i, 0] = i!とする各 jに対して A[0, j] = j!とするFor j = 1, · · · , n

For i = 1, · · · ,m漸化式 (6.16)を用いて A[i, j]を計算

Endfor

EndforA[m, n]を返す

吉田康久 系列アライメント (Sequence Alignment)

Page 27: Algorithm Design

注意

初期設定のところでは、i個の文字の文字列と 0個の文字の文字列とのアライメントでは、i個のギャップが使われるから’aaa’と”だと’a a a’と’- - -’で 3!のギャップコスト

吉田康久 系列アライメント (Sequence Alignment)

Page 28: Algorithm Design

必要な領域と計算量

配列 AがO(nm)個の要素からなるので、必要な領域はO(mn)

英単語とかなら問題ないしかし、分子生物学のような分野では 10万文字と 10万文字のようなアライメントを考えなければならない6.7では、線形領域でやる方法が紹介されている

計算時間は二重のループがあることからO(nm)とすぐに分かる

配列 Aの各要素は定数時間で得られるから

吉田康久 系列アライメント (Sequence Alignment)

Page 29: Algorithm Design

漸化式を利用する

例として、’name’と’mean’で最適なアライメントを決定してみる

! = 2異なる母音と母音のマッチングコストは 1異なる子音と子音のマッチングコストは 1母音と子音のミスマッチコストは 3

配列 A[0...m, 0...n]を用意

naem-- n a m e

吉田康久 系列アライメント (Sequence Alignment)

Page 30: Algorithm Design

漸化式を利用する

初期設定

n 8a 6e 4m 2- 0 2 4 6 8

- n a m e

吉田康久 系列アライメント (Sequence Alignment)

Page 31: Algorithm Design

漸化式を利用する

{0, 2, 2}のところを見る漸化式を利用すると {1 + 0, 2 + 2, 2 + 2}となるので、最小となる 1を選ぶ

n 8a 6e 4m 2 1- 0 2 4 6 8

- n a m e

吉田康久 系列アライメント (Sequence Alignment)

Page 32: Algorithm Design

漸化式を利用する

{4, 2, 1}のところを見る漸化式を利用すると {3 + 2, 2 + 4, 2 + 1}となるので、最小となる 3を選ぶ

n 8a 6e 4 3m 2 1- 0 2 4 6 8

- n a m e

吉田康久 系列アライメント (Sequence Alignment)

Page 33: Algorithm Design

漸化式を利用する

{6, 4, 3}のところを見る漸化式を利用すると {3 + 4, 2 + 6, 2 + 3}となるので、最小となる 5を選ぶ

n 8a 6 5e 4 3m 2 1- 0 2 4 6 8

- n a m e

吉田康久 系列アライメント (Sequence Alignment)

Page 34: Algorithm Design

漸化式を利用する

これを繰り返していく最小コストはA[m, n]となって、今回は6が最小コスト最適なアライメントは、A[0, 0]から A[m, n]にくるまでの道程を逆にたどっていけばよい

n 8 6 5 4 6a 6 5 3 5 5e 4 3 2 4 4m 2 1 3 4 6- 0 2 4 6 8

- n a m e

吉田康久 系列アライメント (Sequence Alignment)

Page 35: Algorithm Design

最適なアライメント

今回は [0, 0]' > [1, 1]' > [2, 1]' > [3, 2]' >[4, 3]' > [4, 4]という経路を通って [0, 0]から [4, 4]まできている縦 or横に進んだときはギャップが発生しているので、「-」を挿入そうすると、最適なアライメントは以下のようになる

m e a n -n - a m e

ギャップコストが 2 ) ! = 4、母音同士のミスマッチが 2個なので、ミスマッチコストは 2。発生したコストは 6になっていて、A[m, n]と一致していることが確認できた

吉田康久 系列アライメント (Sequence Alignment)

Page 36: Algorithm Design

実装

Rubyで実装1

Let us consider sequence alignmentbetweeen "mean" and "name".

==============================Array for sequence alignment is as follows.8 6 5 4 66 5 3 5 54 3 2 4 42 1 3 4 60 2 4 6 8==============================Result is as follows.Minimised cost is 6.m e a n -n - a m e

1http://d.hatena.ne.jp/syou6162/20090519/1242661982吉田康久 系列アライメント (Sequence Alignment)

Page 37: Algorithm Design

おわり

吉田康久 系列アライメント (Sequence Alignment)