遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2...

12
遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動 個体集合の遺伝的多様性とハプロイド集合の遺伝的多 様性 一つの種の個体が構成する集団では、個体同士は遺伝的に異なる。個体同士の遺伝的な 違いを集団全体で捉えたとき、それを遺伝的多様性と言う。2倍体生物の場合には、個体 のゲノムは2つのハプロイドセットからなる。このハプロイドセットにも遺伝的多様性が あり、多様性のあるハプロイドセットがどのようにペアとなるかが、個体レベルの遺伝的 多様性を形作る。 と遺伝的多様性 ハプロイドセットがペアを作るときに生じる多様性の最も基本的な考え方が である。 では、あるローカスのアレルがペアをなして ジェノタイプができるときに、ランダムにペアリングしているかどうかを問題にする。1 ローカスに限定せず、ゲノム全体で、ペアリングの非ランダム性・構造化がもたらす個体 レベルでの遺伝的多様性があるということである。以降では、ハプロイド集合の遺伝的多 様性について述べる。 ハプロイド集合の遺伝的多様性 遺伝的多様性の3要素 遺伝的多様性は、突然変異によって生じる。ついで、 配列上の複数箇所に起きた 突然変異の間で交叉・組換えが起きることにより、異なる箇所のアレルの組合せ ハプロ タイプ に多様性が生じる。このようにして、突然変異による新規アレルの発生と、アレ ルの組合せの発生によって、 配列の多様性は時間とともに増していく。一方、 配列は世代から世代へとコピーされ伝達されていくのであるが、その際、あるハプロタイ プは伝達され、さらに継承個体数が増えることで、集団内での割合が高くなることがある だろうが、その裏では、あるハプロタイプは割合を減らし、ついには、集団内から消滅す ることもあるだろう。あるハプロタイプ・アレルが、生存に有利である場合には、集団内

Upload: others

Post on 13-Aug-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

1

第 1章

遺伝的多様性の起源~突然変異・組

換え・遺伝的浮動

1.1 個体集合の遺伝的多様性とハプロイド集合の遺伝的多

様性

一つの種の個体が構成する集団では、個体同士は遺伝的に異なる。個体同士の遺伝的な

違いを集団全体で捉えたとき、それを遺伝的多様性と言う。2倍体生物の場合には、個体

のゲノムは2つのハプロイドセットからなる。このハプロイドセットにも遺伝的多様性が

あり、多様性のあるハプロイドセットがどのようにペアとなるかが、個体レベルの遺伝的

多様性を形作る。

1.1.1 HWEと遺伝的多様性

ハプロイドセットがペアを作るときに生じる多様性の最も基本的な考え方が

HWE/HWD(??) である。HWE/HWD では、あるローカスのアレルがペアをなして

ジェノタイプができるときに、ランダムにペアリングしているかどうかを問題にする。1

ローカスに限定せず、ゲノム全体で、ペアリングの非ランダム性・構造化がもたらす個体

レベルでの遺伝的多様性があるということである。以降では、ハプロイド集合の遺伝的多

様性について述べる。

1.1.2 ハプロイド集合の遺伝的多様性

遺伝的多様性の3要素

遺伝的多様性は、突然変異によって生じる。ついで、DNA配列上の複数箇所に起きた

突然変異の間で交叉・組換えが起きることにより、異なる箇所のアレルの組合せ (ハプロ

タイプ)に多様性が生じる。このようにして、突然変異による新規アレルの発生と、アレ

ルの組合せの発生によって、DNA配列の多様性は時間とともに増していく。一方、DNA

配列は世代から世代へとコピーされ伝達されていくのであるが、その際、あるハプロタイ

プは伝達され、さらに継承個体数が増えることで、集団内での割合が高くなることがある

だろうが、その裏では、あるハプロタイプは割合を減らし、ついには、集団内から消滅す

ることもあるだろう。あるハプロタイプ・アレルが、生存に有利である場合には、集団内

Page 2: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

2 第 1章 遺伝的多様性の起源~突然変異・組換え・遺伝的浮動

での割合が多くなる傾向があるだろうし、逆であれば小さくなるだろう。まったく中立な

ハプロタイプ・アレルの場合は、増える方向にも減る方向にも力は働かない。選択・淘汰

圧があるか否かに関わらず、次世代に伝達されるか否かは確率的な過程であるので、ハプ

ロタイプ・アレルの頻度の経時的推移は確率的になる。これを遺伝的浮動と呼ぶ。

1.2 突然変異・組換え・遺伝的浮動のシミュレーション

1.2.1 突然変異

全長 nの塩基配列のどの位置にも、単位時間あたり、確率 pで突然変異が発生すると仮

定して、突然変異を発生させてみます。

n <- 1000000

p <- 0 .01

X <- sample ( 0 : 1 , n , r ep l a c e=TRUE, prob=c (1 -p , p ) )

突然変異箇所間の距離はどれくらいになるでしょうか。

muts <- which (X==1)

d <- d i f f (muts )

h i s t (d)

> n <- 1000000

> p <- 0.01

> X <- sample(0:1,n,replace=TRUE,prob=c(1-p,p))

> muts <- which(X==1)

> d <- di�(muts)

> hist(d)

Page 3: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

1.2 突然変異・組換え・遺伝的浮動のシミュレーション 3

Histogram of d

d

Fre

quen

cy

0 200 400 600 800 1000

010

0020

0030

0040

00

図に示すように、間隔は短い場合が多く、ときとして、非常に長くなっています。指数関

数的に少なくなっています。変異間の平均距離はいくつでしょうか。

mean . d <- mean(d)

指数関数的にだんだん減るような分布を指数分布と呼びますが、平均値が mean.dである

ような指数分布に従う乱数を、変異間隔と同じ数だけ、発生させてみます。2つの方法で

発生させた値をソートしてプロットすると y = x の線上に並ぶことがわかります。2つ

の分布が等しいことを示唆しています。

r . exp <- rexp ( l ength (d ) ,1 /mean . d)

p l o t ( s o r t (d ) , s o r t ( r . exp ) )

ab l i n e (0 , 1 , c o l =2)

> r.exp <- rexp(length(d),1/mean.d)

> plot(sort(d),sort(r.exp))

> abline(0,1,col=2)

Page 4: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

4 第 1章 遺伝的多様性の起源~突然変異・組換え・遺伝的浮動

0 200 400 600 800 1000

020

040

060

080

010

00

sort(d)

sort

(r.e

xp)

確率的にどこでも等確率でぽつりぽつりと起きる現象 (DNA配列上の突然変異)はポアソ

ン過程と呼ばれます。ポアソン過程で起きる事象の間隔は指数分布に従うことを示してい

ます。突然変異が DNA配列上のどこでも等確率で起きているならば、変異箇所間距離を

測定すると指数分布に従うと予想されます。もし、指数分布に従っていないのならば、仮

定に誤りがあることを示唆します。

1.2.2 組換え

ある2カ所の多型の間に交叉が起きるとします。多型間距離が長いほど交叉が起きる確

率は高くなります。今、多型間距離を Lとし、単位距離当たりの交叉発生確率を pとしま

す。十分 Lが長いと考え、複数回の交叉がお互いに独立に起きると考えてもよいですし、

長い時間経過の下で、1世代では低確率で起きるが、世代を重ねると複数回起きると考え

てもよいですが、いずれにしろ、交叉回数は、0, 1, 2, ...回のいずれかになります。平均し

て L× p回の交叉が起きますが、そのときに 0, 1, 2, ...回起きる確率はポアソン分布に従

います。Rで計算してみます。

L <- 1000

p <- 0 .001

k <- 0 : ( ( L*p) * 20)

pr <- dpo i s (k ,L*p)

p l o t (k , pr , type="h" )

交叉が2回起きると、アレルの組合せの入れ替え効果が相殺されるので、2カ所の多型箇

所にアレルの組合せの異なるハプロタイプができる (組換え体ができる)のは、交叉回数

Page 5: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5

が奇数回の場合だけです。組換え体ができる確率を計算してみます。

sum( pr [ which ( ( 1 : l ength (k ) )%%2==1)])

Lの値を変化させて、組換え体ができる確率がどのように変化するかを図にしてみます。

Ls <- 1:10000

p <- 0 .001

pr . r e c <- rep (0 , l ength ( Ls ) )

f o r ( i in 1 : l ength ( pr . r e c ) ){

L <- Ls [ i ]

k <- 0 : ( ( L*p) * 20)

pr <- dpoi s (k ,L*p)

pr . r e c [ i ] <- sum( pr [ which ( ( 1 : l ength (k ) )%%2==1)])

}

p l o t (Ls , pr . rec , type=" l " )

> L <- 1000

> p <- 0.001

> k <- 0:((L*p)*20)

> pr <- dpois(k,L*p)

> plot(k,pr,type="h")

> sum(pr[which((1:length(k))%%2==1)])

[1] 0.5676676

Page 6: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

6 第 1章 遺伝的多様性の起源~突然変異・組換え・遺伝的浮動

0 5 10 15 20

0.0

0.1

0.2

0.3

k

pr

> Ls <- 1:10000

> p <- 0.001

> pr.rec <- rep(0,length(Ls))

> for(i in 1:length(pr.rec)){

+ L <- Ls[i]

+ k <- 0:((L*p)*20)

+ pr <- dpois(k,L*p)

+ pr.rec[i] <- sum(pr[which((1:length(k))%%2==1)])

+ }

> plot(Ls,pr.rec,type="l")

Page 7: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

1.2 突然変異・組換え・遺伝的浮動のシミュレーション 7

0 2000 4000 6000 8000 10000

0.5

0.6

0.7

0.8

0.9

1.0

Ls

pr.r

ec

1.2.3 遺伝的浮動

遺伝的浮動を考えるときに、もっとも単純には、多様性のある有限なアレル集合から、

復元抽出をしながら、アレル集合を更新していくと考えることができる。初期染色体本数

n(2アレルが a, b本ずつ)から始めて、世代更新によって本数が増減しないという条件で

シミュレーションしてみる。同じ条件で繰り返し実行し、片方のアレル頻度の世代変化を

グラフにする。

n <- 100

a <- 50

b <- n - a

n . gen <- 100

n . rep <- 100

a . hx <- matrix (0 , n . rep , n . gen )

f o r ( i i in 1 : n . rep ){

h i s t o r y <- matrix (0 , n . gen , 2 )

h i s t o r y [ 1 , ] <- c ( a , b )

f o r ( i in 2 : n . gen ){

n . next <-n

cur rent . pop <- c ( rep (0 , h i s t o r y [ i - 1 , 1 ] ) , rep (1 , h i s t o r y [ i - 1 , 2 ] ) )

next . gen <- sample ( cur rent . pop , n . next , r ep l a c e=TRUE)

h i s t o r y [ i , 2 ] <- sum( next . gen )

Page 8: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

8 第 1章 遺伝的多様性の起源~突然変異・組換え・遺伝的浮動

h i s t o r y [ i , 1 ] <- n . next - h i s t o r y [ i , 2 ]

}

ns <- apply ( h i s to ry , 1 , sum)

a . f r e q <- h i s t o r y [ , 1 ] /ns

a . hx [ i i , ] <- a . f r e q

}

matplot ( 1 : n . gen , t ( a . hx ) , type=" l " , yl im=c (0 , 1 ) , x lab=" gene ra t i on s " , ylab=" a l l e l e f r e q . " ,main="No pop . s i z e change" )

では人口が指数関数的に増える場合でシミュレーションしてみる。人口が増えるときは、

まったく次世代に伝達されない確率は小さくなる。したがって、グラフの上下限に達する

線が少なくなる。

n <- 100

# pop i n c r e a s e s

k <- 1 .05

a <- 50

b <- n - a

n . gen <- 100

n . rep <- 100

a . hx <- matrix (0 , n . rep , n . gen )

f o r ( i i in 1 : n . rep ){

h i s t o r y <- matrix (0 , n . gen , 2 )

h i s t o r y [ 1 , ] <- c ( a , b )

f o r ( i in 2 : n . gen ){

n . next <- f l o o r (sum( h i s t o r y [ i - 1 , ] ) *k )

cur rent . pop <- c ( rep (0 , h i s t o r y [ i - 1 , 1 ] ) , rep (1 , h i s t o r y [ i - 1 , 2 ] ) )

next . gen <- sample ( cur rent . pop , n . next , r ep l a c e=TRUE)

h i s t o r y [ i , 2 ] <- sum( next . gen )

h i s t o r y [ i , 1 ] <- n . next - h i s t o r y [ i , 2 ]

}

ns <- apply ( h i s to ry , 1 , sum)

a . f r e q <- h i s t o r y [ , 1 ] /ns

a . hx [ i i , ] <- a . f r e q

}

matplot ( 1 : n . gen , t ( a . hx ) , type=" l " , yl im=c (0 , 1 ) , x lab=" gene ra t i on s " , ylab=" a l l e l e f r e q . " ,main="Pop . s i z e i n c r e a s e s " )

人口を減らすと、片方のアレルのみになる場合が増える様子が読み取れる。

n <- 100

# pop dec r ea s e s

k <- 0 .95

a <- 50

Page 9: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

1.2 突然変異・組換え・遺伝的浮動のシミュレーション 9

b <- n - a

n . gen <- 100

n . rep <- 100

a . hx <- matrix (0 , n . rep , n . gen )

f o r ( i i in 1 : n . rep ){

h i s t o r y <- matrix (0 , n . gen , 2 )

h i s t o r y [ 1 , ] <- c ( a , b )

f o r ( i in 2 : n . gen ){

n . next <- f l o o r (sum( h i s t o r y [ i - 1 , ] ) *k )

cur rent . pop <- c ( rep (0 , h i s t o r y [ i - 1 , 1 ] ) , rep (1 , h i s t o r y [ i - 1 , 2 ] ) )

next . gen <- sample ( cur rent . pop , n . next , r ep l a c e=TRUE)

h i s t o r y [ i , 2 ] <- sum( next . gen )

h i s t o r y [ i , 1 ] <- n . next - h i s t o r y [ i , 2 ]

}

ns <- apply ( h i s to ry , 1 , sum)

a . f r e q <- h i s t o r y [ , 1 ] /ns

a . hx [ i i , ] <- a . f r e q

}

matplot ( 1 : n . gen , t ( a . hx ) , type=" l " , ylim=c (0 , 1 ) , x lab=" gene ra t i on s " , ylab=" a l l e l e f r e q . " ,main="Pop . s i z e de c r ea s e s " )

> n <- 100

> a <- 50

> b <- n-a

> n.gen <- 100

> n.rep <- 100

> a.hx <- matrix(0,n.rep,n.gen)

> for(ii in 1:n.rep){

+ history <- matrix(0,n.gen,2)

+ history[1,] <- c(a,b)

+ for(i in 2:n.gen){

+ n.next <-n

+ current.pop <- c(rep(0,history[i-1,1]),rep(1,history[i-1,2]))

+ next.gen <- sample(current.pop,n.next,replace=TRUE)

+ history[i,2] <- sum(next.gen)

+ history[i,1] <- n.next - history[i,2]

+ }

+ ns <- apply(history,1,sum)

+ a.freq <- history[,1]/ns

+ a.hx[ii,] <- a.freq

+ }

Page 10: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

10 第 1章 遺伝的多様性の起源~突然変異・組換え・遺伝的浮動

> matplot(1:n.gen,t(a.hx),type="l",ylim=c(0,1),xlab="generations", ylab="allele freq.",main="No pop.size change")

>

0 20 40 60 80 100

0.0

0.2

0.4

0.6

0.8

1.0

No pop.size change

generations

alle

le fr

eq.

> n <- 100

> # pop increases

> k <- 1.05

> a <- 50

> b <- n-a

> n.gen <- 100

> n.rep <- 100

> a.hx <- matrix(0,n.rep,n.gen)

> for(ii in 1:n.rep){

+ history <- matrix(0,n.gen,2)

+ history[1,] <- c(a,b)

+ for(i in 2:n.gen){

+ n.next <-�oor(sum(history[i-1,])*k)

+ current.pop <- c(rep(0,history[i-1,1]),rep(1,history[i-1,2]))

+ next.gen <- sample(current.pop,n.next,replace=TRUE)

+ history[i,2] <- sum(next.gen)

+ history[i,1] <- n.next - history[i,2]

+ }

+ ns <- apply(history,1,sum)

+ a.freq <- history[,1]/ns

Page 11: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

1.2 突然変異・組換え・遺伝的浮動のシミュレーション 11

+ a.hx[ii,] <- a.freq

+ }

> matplot(1:n.gen,t(a.hx),type="l",ylim=c(0,1),xlab="generations", ylab="allele freq.",main="Pop.size increases")

0 20 40 60 80 100

0.0

0.2

0.4

0.6

0.8

1.0

Pop.size increases

generations

alle

le fr

eq.

> n <- 100

> # pop decreases

> k <- 0.95

> a <- 50

> b <- n-a

> n.gen <- 100

> n.rep <- 100

> a.hx <- matrix(0,n.rep,n.gen)

> for(ii in 1:n.rep){

+ history <- matrix(0,n.gen,2)

+ history[1,] <- c(a,b)

+ for(i in 2:n.gen){

+ n.next <-�oor(sum(history[i-1,])*k)

+ current.pop <- c(rep(0,history[i-1,1]),rep(1,history[i-1,2]))

+ next.gen <- sample(current.pop,n.next,replace=TRUE)

+ history[i,2] <- sum(next.gen)

+ history[i,1] <- n.next - history[i,2]

+ }

+ ns <- apply(history,1,sum)

Page 12: 遺伝的多様性の起源~突然変異・組 換え・遺伝的浮動...1.2 突然変異・組換え・遺伝的浮動のシミュレーション 5 が奇数回の場合だけです。組換え体ができる確率を計算してみます。sum

12 第 1章 遺伝的多様性の起源~突然変異・組換え・遺伝的浮動

+ a.freq <- history[,1]/ns

+ a.hx[ii,] <- a.freq

+ }

> matplot(1:n.gen,t(a.hx),type="l",ylim=c(0,1),xlab="generations", ylab="allele freq.",main="Pop.size decreases")

0 20 40 60 80 100

0.0

0.2

0.4

0.6

0.8

1.0

Pop.size decreases

generations

alle

le fr

eq.