tak0kadaの何でもノート

発声練習、生存確認用。

医学関連は 医学ノート

Wright–Fisher モデルについて

遺伝的浮動とは

ある集団内で特定の遺伝子の占める割合が偶然に変動する現象。

Wright-Fisherモデル

世代ごとに個体がが総入れ替え、遺伝子は親世代の遺伝子プールからの無作為抽出とみなすモデル。

Rのパッケージ

fwsimを使う。fwsimはWright-Fisherモデルを複数の遺伝子、変異ありの状況で利用できるようにしたもの。実装もC++が利用されていて結構速い。

離散ラプラス分布関連のパッケージの使い方が記された論文中にfwsimが利用されている。(最新のver0.3から関数が変更されていることに注意)

number.of.loci <- 7

# シミュレーションを実行する
# fwsim_fixedは個体数の変化なし
fit <- fwsim(G=100L, H0=rep(0L,number.of.loci), N0=10000L, mutmodel=seq(0.001, 0.01, length.out=number.of.loci), trace=F)

# 必要な値を取り出す
pop <- fit$population

# 初期リピート数の設定
y <- c(14, 12, 28, 22, 10, 11, 13)
for (i in 1:number.of.loci) {
  pop[, i] <- pop[, i] + y[i]
}

head(pop)
#
Locus1 Locus2 Locus3 Locus4 Locus5 Locus6 Locus7  N
1     14     10     29     22     10     11     13  6
2     13     11     29     22      9     11     13 29
3     14     12     28     21     10      9     13 13
4     14     12     28     21     10      9     12 20
5     14     12     28     21     10      9     14  9
6     14     12     29     23     10     12     13 16

などとする。利用しそうな引数を以下に記す。整数であることを明示するためにLをつける必要があるものが多い。

引数 意味
G 整数 世代数
H0 ハプロタイプが1種類の時はベクトル、複数の時はマトリックス 要素はリピート数(0指定で後で足してもいい)
N0 整数 開始時のハプロタイプ
mutmodel ベクトル ベクトルの場合はベクトルの要素が変異率となるステップワイズ変異モデル(増減とも当確率)。
trace 真偽値 遺伝的浮動の経過を利用しない場合はF

参考