この記事は
創薬 Advent Calendar 2017
の24日目の配当記事です。
自分の専門(?)分野として、遺伝現象を統計学的に考えるという遺伝統計学をやっている。
とりあえず 創薬 遺伝統計 とぐぐってみると、ゲノムのネ申が出てくるのだが、その下にAI創薬に向けた複雑な疾患の遺伝統計学モデルという話が出てくる。
なるほど別に薬を実際にin silico 合成しなくても遺伝統計的な話でお茶を濁せばこのアドカレくらいは埋められそうだ。
というわけで量的形質と遺伝率 heritability とmissing heritability の話をシミュレーションしてみる。
疾患の発症には、その遺伝子(アレル)の影響 と、環境による影響 とがある。これらはそれぞれ定量化されたとして、全体の発症(phenotype ) は
とモデル化される。ここで、分散を考えると、分布の和を考えるときに分散は和を取れるから
となる。遺伝率 heritability とは、phenotype に対して がどれくらいの影響力を持つかどうか、だから、
となる。
ここで、 の定量について、その病気を起こす遺伝子のセットは例えば200個と決まっているとして、その各アレルに効果量 があるとする。その すべての和によって、 が決まる。これは、複数の(ある程度効果量のある有力な)遺伝子で発病が決まるpolygenic model である。
しかし、そのすべての遺伝子セット200というものは、理想的に見つかるものであって、現実的には50個しか見つからないとする。これは、SNP チップセットの問題だったり、統計学的帰無仮説検定の問題(帰無仮説は効果量なしが基本的に設定されるので、棄却されずに、「有意な多型でない」と判断されたら、その多型は発病に対して効果量がゼロという判定になる、と思う)
そうなると、「すべての遺伝子要因があるときの発病モデル」に対して、一部の遺伝子要因しか使われなくなるので、環境要因が占める割合が大きくなって、heritability は小さくみえる。
この「実際に今もっている遺伝子要因では説明できておらず」、「本当は見つかっていれば発病に影響していたであろう遺伝子要因」の影響力をmissing heritabily という。
最新の研究ではomnigenic という、それっぽい遺伝子が寄り集まって発病するというpolygenic model よりも、なんとなく小さな効果量の遺伝子たちが(シグナルとかパスウェイとかそういうレベルで)直接的に関わっているのではなくてなんとなくもやぁっと存在して発病に関与しているのではないか、というモデルが言われているらしい。
Cell. 2017 Jun 15;169(7):1177-1186.
n.samples <- 10^5 # 症例数 n.locus <- 200 # 病気に関連すると思われるすべてのローカス数 allele.freq <- runif(n.locus) # 各ローカスの頻度 geno.freq <- cbind(allele.freq^2,2*allele.freq*(1-allele.freq),(1-allele.freq)^2) # HWE eff <- rnorm(n.locus, 5, 1) # 各ローカスの効果量 # allele によってadditive にリスクを付与する # allele の作り方はランダム G <- apply(geno.freq, 1, function(z) sample(0:2, n.samples, replace=TRUE, prob=z)) G_risk <- sweep(G, 1, eff, "*") # すべてのアレルが発病に寄与するとわかっているとき risk.copy <- t(apply(G_risk, 1, cumsum)) gen.risk.total <- risk.copy[,n.locus] Pheno <- gen.risk.total + rnorm(n.samples, 0, 2) hist(Pheno) var.gen <- var(gen.risk.total) var.phen <- var(Pheno) var.gen/var.phen # すべての遺伝子要因がわかっている場合の heritability
[1] 0.9999243
# 実際に実験で取れるアレルが数が限られているとき n.locus.known <- 50 gen.risk.partial <- risk.copy[,n.locus.known] var.gen.partial <- var(gen.risk.partial) var.gen.partial/var.phen # 一部の遺伝子要因しかわかっていないのにすべての遺伝子要因のごとく計算した場合の heeritability
[1] 0.07659099
Vg <- apply(risk.copy, 2, var) plot(Vg/var.phen, type="l", xlab="Number of known alleles", ylab="heritability", lwd=3)